Method and apparatus for adaptive sampling for mesh compression by an encoder - Patents.com

The adaptive sampling method for mesh compression addresses the inefficiencies in existing technologies by determining region-specific sampling rates for mesh frames, resulting in optimized compression and accurate reconstruction of 3D mesh data.

JP7658659B2Active Publication Date: 2025-04-08TENCENT AMERICA LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023548180
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-09-14
Filing Date
2022-09-16
Publication Date
2025-04-08
Estimated Expiration
2042-09-16

AI Technical Summary

Technical Problem

Existing mesh coding technologies face challenges in efficiently compressing and decompressing 3D mesh data, particularly in adapting sampling rates to optimize data representation without losing critical information.

Method used

The proposed solution involves a method and apparatus for adaptive sampling in mesh compression, where processing circuitry determines the sampling rate for each region of a mesh frame based on its characteristics, applies these rates to a UV atlas, and generates sampled 2D maps that are then encoded into a bitstream.

Benefits of technology

This approach enables efficient compression by optimizing sampling rates, reducing data redundancy, and maintaining the integrity of the 3D mesh representation, thereby improving compression efficiency and decoding accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007658659000009
    Figure 0007658659000009
  • Figure 0007658659000010
    Figure 0007658659000010
  • Figure 0007658659000011
    Figure 0007658659000011
Patent Text Reader

Abstract

In some examples, an apparatus for mesh coding includes a processing circuit. The processing circuit receives a data structure of a mesh frame having polygons representing a surface of an object. The data structure of the mesh frame includes a UV atlas that associates vertices of the mesh frame with UV coordinates in the UV atlas. The processing circuit determines a sampling rate for each of the regions of the mesh frame according to characteristics of each of the regions of the mesh frame, and applies the sampling rate for each of the regions of the mesh frame to the UV atlas to determine sampling positions on the UV atlas. The processing circuit generates one or more sampled two-dimensional (2D) maps of the mesh frame according to the sampling positions on the UV atlas, and encodes the one or more sampled 2D maps into a bitstream.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] [Incorporated by reference] This application claims the benefit of priority to U.S. Patent Application No. 17 / 944,994, entitled "METHOD AND APPARATUS OF ADAPTIVE SAMPLING FOR MESH COMPRESSION BY ENCODERS," filed September 14, 2022, which claims the benefit of priority to U.S. Provisional Application No. 63 / 252,063, entitled "Method and Apparatus of Adaptive Sampling for Mesh Compression by Encoders," filed October 4, 2021, and U.S. Provisional Application No. 63 / 252,084, entitled "Method and Apparatus of Adaptive Sampling for Mesh Compression by Decoders," filed October 4, 2021. The entire disclosures of these prior applications are hereby incorporated by reference in their entireties.

[0002] This disclosure describes embodiments generally related to mesh coding. [Background technology]

[0003] The background discussion provided herein is intended to generally present the context of the disclosure. The work of the presently named inventors is not admitted expressly or impliedly as prior art to the present disclosure, to the extent that it is described in this Background section, as well as aspects of the specification that may not be admitted as prior art at the time of filing.

[0004] Various techniques have been developed to capture and represent the world, including objects within the world, the environment within the world, and so on, in three-dimensional (3D) space. The 3D representation of the world allows for more immersive forms of interaction and communication. In some examples, point clouds and meshes can be used as the 3D representation of the world. Summary of the Invention

[0005] Aspects of the present disclosure provide methods and apparatus for mesh coding (e.g., compression and decompression). In some examples, an apparatus for mesh encoding includes a processing circuit. The processing circuit receives a data structure for a mesh frame having polygons representing a surface of an object. The data structure for the mesh frame includes a UV atlas that associates vertices of the mesh frame with UV coordinates of a UV atlas. The processing circuit determines sampling rates for each of the regions of the mesh frame according to characteristics of each of the regions of the mesh frame, and applies the respective sampling rates to the regions of the mesh frame to the UV atlas to determine sampling positions on the UV atlas. The processing circuit generates one or more sampled two-dimensional (2D) maps of the mesh frame according to the sampling positions on the UV atlas, and encodes the one or more sampled 2D maps into a bitstream.

[0006] To determine the respective sampling rates of the regions of the mesh frame, in some examples, the processing circuitry determines the first sampling rate of the first region of the mesh frame according to a requirement that limits the number of first sampling positions in the first region. In one example, the processing circuitry determines the first sampling rate to achieve an oversampling ratio (OR) closest to a target value. The OR is the ratio between the number of first sampling positions and the number of vertices originally in the first region of the mesh frame. In another example, the processing circuitry adjusts the first sampling rate until the oversampling ratio (OR) is less than a first threshold. In another example, the processing circuitry adjusts the first sampling rate until the oversampling ratio (OR) is less than a first threshold and greater than a second threshold.

[0007] In some embodiments, a sampled 2D map of the one or more sampled 2D maps includes a sampled region having sampled points corresponding to sampling locations on the UV atlas, and the processing circuitry determines that the sampling locations are occupied in response to the sampling locations being within a polygon; and determines attributes of the sampled points in the sampled 2D map corresponding to the sampling locations according to attributes of the vertices of the polygon.

[0008] To form the one or more sampled 2D maps, in some examples, the processing circuitry forms sampled regions corresponding to regions of the mesh based on the respective sampling rates of the regions of the mesh and arranges the sampled regions in a non-overlapping configuration to form the sampled maps.

[0009] To arrange the sampling regions in a non-overlapping configuration, in some examples, after the subset of the sampled regions is arranged in a non-overlapping configuration, the processing circuitry determines an initial arrangement position for the current sampled region according to a sampling rate of the current sampled region, and determines whether the current sampled region at the initial arrangement position overlaps with the subset of the sampled region. In one example, in response to the current sampled region at the initial arrangement position overlapping with the subset of the sampled region, the processing circuitry determines an offset to the initial arrangement position, the offset enabling the current sampled region to not overlap with the subset of the sampled region.

[0010] In some embodiments, the non-overlapping configuration includes a minimum distance requirement between sampled regions.

[0011] In one example, the processing circuit encodes a value of the first sampling rate of the first region directly into the bitstream. In another example, the processing circuit encodes a first index into the bitstream, the first index indicating a selection of the first sampling rate from a set of sampling rates. In another example, the processing circuit encodes syntax indicating a predictor for predicting the first sampling rate from a set of pre-established sampling rates. In another example, the processing circuit encodes syntax indicating a predictor for predicting the first sampling rate from a sampling rate previously used for the encoded region of the mesh frame. In another example, the processing circuit encodes syntax indicating a predictor for predicting the first sampling rate from a sampling rate previously used for the encoded region of another mesh frame encoded prior to the mesh frame.

[0012] In some embodiments, the processing circuit makes a decision to signal or predict a first sampling rate associated with the first region and encodes a first syntax value indicative of the decision.

[0013] In some examples, in response to the decision to signal the first sampling rate, the processing circuitry can encode a value of the first sampling rate directly into the bitstream or can encode an index into the bitstream, the index indicating a selection of the first sampling rate from the set of sampling rates.

[0014] In some examples, in response to determining to predict the first sampling rate, the processing circuitry can encode a second syntax into the bitstream, the second syntax indicating a predictor to use to predict the first sampling rate. Additionally, in one example, the processing circuitry encodes a prediction residual into the bitstream. The prediction residual is a difference between the first sampling rate and a sampling rate of the predictor.

[0015] In some examples, the processing circuitry encodes the base sampling rate into the bitstream.

[0016] In some examples, the processing circuitry encodes a control flag that indicates whether enabling / disabling adaptive 2D atlas sampling is permitted.

[0017] In some examples, the processing circuit determines at least a first UV offset associated with a first region of the mesh frame. The first UV offset is applied to a first sampling area corresponding to the first region to avoid overlap with other sampling areas. The processing circuit encodes syntax indicating the first UV offset into the bitstream. In one example, the processing circuit encodes syntax having a value of the first UV offset into the bitstream. In another example, the processing circuit encodes syntax indicating a predictor that predicts the first UV offset based on a set of pre-established UV offsets. In another example, the processing circuit encodes syntax indicating a predictor that predicts the first UV offset based on a UV offset previously used for the encoded region of the mesh frame. In another example, the processing circuit encodes syntax indicating a predictor that predicts the first UV offset based on a UV offset previously used for the encoded region of another mesh frame encoded prior to the mesh frame.

[0018] 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 or combination of methods for mesh coding. [Brief description of the drawings]

[0019] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings.

[0020] [Figure 1] 1 illustrates a block diagram of a communication system in accordance with some examples.

[0021] [Diagram 2] 1 illustrates a block diagram of a streaming system in accordance with some examples.

[0022] [Diagram 3]1 shows a block diagram of an encoder for encoding point cloud frames in some examples.

[0023] [Figure 4] 1 illustrates a block diagram of a decoder for decoding a compressed bitstream corresponding to a point cloud frame in some examples.

[0024] [Diagram 5] 1 illustrates a block diagram of a video decoder in some examples.

[0025] [Figure 6] 1 illustrates a block diagram of a video encoder in some examples.

[0026] [Figure 7] 1 shows a block diagram of an encoder for encoding point cloud frames in some examples.

[0027] [Figure 8] 1 illustrates a block diagram of a decoder for decoding a compressed bitstream carrying point cloud frames in some examples.

[0028] [Figure 9] 1 shows a diagram illustrating the mapping of meshes to an atlas in some examples.

[0029] [Figure 10] 1 shows a diagram illustrating downsampling in some examples.

[0030] [Figure 11] 1 illustrates a diagram of a framework for mesh compression according to some embodiments of the present disclosure.

[0031] [Figure 12] 1 shows a diagram of adaptive sampling in some examples.

[0032] [Figure 13] 1 shows a diagram of adaptive sampling in some examples.

[0033] [Figure 14] 1 shows a flowchart outlining an example process in some examples.

[0034] [Figure 15] 1 shows a flowchart outlining an example process in some examples.

[0035] [Figure 16] FIG. 1 is a schematic diagram of a computer system according to some examples. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0036] Aspects of the present disclosure provide techniques in the field of three-dimensional (3D) media processing.

[0037] Technological developments in three-dimensional (3D) media processing, such as advances in 3D capture, 3D modeling, and 3D rendering, have facilitated the ubiquitous presence of 3D media content across several platforms and devices. In one example, a baby's first steps can be captured on one continent, and media technology allows grandparents to watch (and possibly interact with) the baby on another continent to enjoy an immersive experience. According to one aspect of the disclosure, to enhance the immersive experience, 3D models have become increasingly sophisticated, and the creation and consumption of 3D models occupies a significant amount of data resources, such as data storage, data transmission resources, etc.

[0038] According to some aspects of the present disclosure, point clouds and meshes can be used as 3D models to represent immersive contents.

[0039] A point cloud may generally refer to a set of points in 3D space with associated attributes such as color, material properties, texture information, intensity attributes, reflectance attributes, motion-related attributes, modality attributes, and various other attributes. A point cloud can be used to reconstruct an object or scene as a composition of such points.

[0040] An object's mesh (also called a mesh model) may contain polygons that describe the surface of the object. Each polygon may be defined by the polygon's vertices in 3D space and information about how the vertices are connected to the polygon. The information about how the vertices are connected is called connectivity information. In some instances, the mesh may also contain attributes, such as color, normals, etc., associated with the vertices.

[0041] According to some aspects of the present disclosure, some coding tools for point cloud compression (PCC) can be used for mesh compression. For example, a mesh can be remeshed to generate a new mesh from which the connectivity information of the new mesh can be inferred. The vertices of the new mesh and the attributes associated with the vertices of the new mesh can be viewed as points in a point cloud and compressed using a PCC codec.

[0042] A point cloud can be used to reconstruct an object or scene as a configuration of points. The points can be captured using multiple cameras, depth sensors, or Lidar in a variety of configurations, and may consist of thousands to billions of points to realistically represent the reconstructed scene or object. A patch may generally refer to a contiguous subset of a surface described by a point cloud. In one example, a patch includes points with surface normal vectors that are offset from each other by less than a threshold amount.

[0043] PCC can be performed according to various schemes, such as a geometry-based scheme called G-PCC, a video coding-based scheme called V-PCC, etc. According to some aspects of the present disclosure, G-PCC is a purely geometry-based approach that directly encodes 3D geometry and does not have much in common with video coding, while V-PCC is heavily based on video coding. For example, V-PCC can map points of a 3D cloud to pixels of a 2D grid (image). The V-PCC scheme can utilize a general-purpose video codec for point cloud compression. The PCC codec (encoder / decoder) in the present disclosure can be a G-PCC codec (encoder / decoder) or a V-PCC codec.

[0044] According to one aspect of the present disclosure, the V-PCC scheme can use an existing video codec to compress the geometry, occupancy, and texture of the point cloud as three separate video sequences. The additional metadata required to interpret the three video sequences is compressed separately. A small portion of the overall bitstream is the metadata, which in one example can be efficiently encoded / decoded using a software implementation. The majority of the information is handled by the video codec.

[0045] FIG. 1 illustrates a block diagram of a communication system (100) in some examples. The communication system (100) includes a plurality of terminal devices that can communicate with each other, for example, via a network (150). For example, the communication system (100) includes a pair of terminal devices (110) and (120) that are connected to each other via the network (150). In the example of FIG. 1, a first pair of terminal devices (110) and (120) may perform unidirectional transmission of point cloud data. For example, the terminal device (110) may compress a point cloud (e.g., points representing structures) captured by a sensor (105) connected to the terminal device (110). The compressed point cloud can be transmitted to another terminal device (120) via the network (150), for example, in the form of a bit stream. The terminal device (120) may receive the compressed point cloud from the network (150), decompress the bit stream to reconstruct the point cloud, and appropriately display the reconstructed point cloud. One-way data transmission is common, for example, in media service applications.

[0046] In the example of FIG. 1, terminal devices (110) and (120) may be illustrated as a server and a personal computer, but the principles of the present disclosure are not so limited. The embodiments of the present disclosure find application in laptop computers, tablet computers, smartphones, gaming consoles, media players, and / or dedicated three-dimensional (3D) devices. Network (150) represents any number of networks that transmit compressed point clouds between terminal devices (110) and (120). Network (150) may include, for example, wireline and / or wireless communication networks. Network (150) may exchange data over circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, the Internet, and the like.

[0047] 2 illustrates a block diagram of a streaming system 200 in some examples. The streaming system 200 is a point cloud utilization application. The disclosed subject matter can be similarly applicable to other point cloud-enabled applications, such as 3D telepresence applications, virtual reality applications, etc.

[0048] The streaming system (200) may include a capture subsystem (213). The capture subsystem (213) may include a point cloud source (201), such as a light detection and ranging (lidar) system, a three-dimensional camera, a three-dimensional scanner, a graphics generation component that generates the uncompressed point cloud in software, etc., that generates the point cloud (202). In one example, the point cloud (202) includes points captured by a 3D camera. The point cloud (202) is shown in bold to emphasize the high amount of data compared to the compressed point cloud (204) (compressed point cloud bitstream). The compressed point cloud (204) may be generated by an electronic device (220) that includes an encoder (203) coupled to the point cloud source (201). The encoder (203) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The compressed point cloud (204) (or bitstream of compressed point cloud (204)), depicted as thin lines to emphasize its low amount of data compared to the stream of point cloud (202), can be stored on a streaming server (205) for future use. One or more streaming client subsystems, such as client subsystems (206) and (208) of FIG. 2, can access the streaming server (205) to obtain copies (207) and (209) of the compressed point cloud (204). The client subsystem (206) can include a decoder (210), for example on an electronic device (230). The decoder (210) decodes the incoming copy (207) of the compressed point cloud and creates an outgoing stream of reconstructed point cloud (211) that can be rendered on a rendering device (212).

[0049] It is noted that the electronic devices (220) and (230) can include other components (not shown). For example, the electronic device (220) can include a decoder (not shown) and the electronic device (230) can include an encoder (not shown).

[0050] In some streaming systems, the compressed point clouds (204), (207) and (209) (e.g., a bitstream of the compressed point clouds) may be compressed according to a particular standard. In some examples, a video coding standard is used to compress the point clouds. Examples of these standards include High Efficiency Video Coding (HEVC), Versatile Video Coding (VVC), etc.

[0051] 3 shows a block diagram of a V-PCC encoder (300) for encoding point cloud frames, according to some embodiments. In some embodiments, the V-PCC encoder (300) can be used in the communication system (100) and the streaming system (200). For example, the encoder (203) can be configured and operate in a manner similar to the V-PCC encoder (300).

[0052] The V-PCC encoder (300) receives point cloud frames as uncompressed input and generates a bitstream that corresponds to the compressed point cloud frames. In some embodiments, the V-PCC encoder (300) may receive the point cloud frames from a point cloud source, such as the point cloud source (201).

[0053] In the example of FIG. 3, the V-PCC encoder (300) includes a patch generation module (306), a patch packing module (308), a geometry image generation module (310), a texture image generation module (312), a patch information module (304), an occupancy map module (314), a smoothing module (336), image padding modules (316) and (318), a group expansion module (320), video compression modules (322), (323), and (332), an auxiliary patch information compression module (338), an entropy compression module (334), and a multiplexer (324).

[0054] According to one aspect of the disclosure, the V-PCC encoder (300) converts the 3D point cloud frames into an image-based representation along with some metadata (e.g., occupancy map and patch information) that is used to convert the compressed point cloud back to a decompressed point cloud. In some examples, the V-PCC encoder (300) can use video coding techniques to convert the 3D point cloud frames into a geometry image, a texture image, and an occupancy map, and then encode the geometry image, texture image, and occupancy map into a bitstream. In general, a geometry image is a 2D image with pixels filled with geometry values ​​associated with points projected onto pixels, and pixels filled with geometry values ​​can be referred to as geometry samples. A texture image is a 2D image with pixels filled with texture values ​​associated with points projected onto pixels, and pixels filled with texture values ​​can be referred to as texture samples. An occupancy map is a 2D image with pixels filled with values ​​that indicate whether they are occupied or not occupied by a patch.

[0055] The patch generation module (306) segments the point cloud into a set of patches (e.g., a patch is defined as a contiguous subset of the surface described by the point cloud), which may or may not be overlapping, such that each patch can be described by a depth field relative to a plane in 2D space. In some embodiments, the patch generation module (306) aims to decompose the point cloud into a minimum number of patches with smooth boundaries while minimizing reconstruction error.

[0056] In some examples, the patch information module (304) can collect patch information indicating the size and shape of the patch, hi some examples, the patch information can be packed into an image frame and then encoded by the auxiliary patch information compression module (338) to generate compressed auxiliary patch information.

[0057] In some examples, the patch packing module (308) is configured to map the extracted patches onto a two-dimensional (2D) grid while minimizing unused space and ensuring that every M×M (e.g., 16×16) block of the grid is associated with a unique patch. Efficient patch packing can directly impact compression efficiency by minimizing unused space or ensuring temporal consistency.

[0058] The geometry image generation module (310) can generate a 2D geometry image associated with the geometry of the point cloud at a given patch location. The texture image generation module (312) can generate a 2D texture image associated with the texture of the point cloud at a given patch location. The geometry image generation module (310) and the texture image generation module (312) utilize the 3D to 2D mapping calculated during the packing process to store the geometry and texture of the point cloud as images. To better handle the case where multiple points are projected onto the same sample, each patch is projected onto two images called layers. In one example, the geometry image is represented as a WxH monochromatic frame in YUV 420-8 bit format. To generate the texture image, the texture generation procedure utilizes the reconstructed / smoothed geometry to calculate the colors associated with the resampled points.

[0059] The occupancy map module (314) can generate an occupancy map that describes the padding information for each unit. For example, the occupancy image includes a binary map that indicates for each cell of the grid whether the cell belongs to empty space or to the point cloud. In one example, the occupancy map uses binary information that describes for each pixel whether the pixel is padded or not. In another example, the occupancy map uses binary information that describes for each block of pixels whether the block of pixels is padded or not.

[0060] The occupancy map generated by the occupancy map module (314) can be compressed using lossless or lossy coding. If lossless coding is used, the entropy compression module (334) is used to compress the occupancy map. If lossy coding is used, the video compression module (332) is used to compress the occupancy map.

[0061] It is noted that the patch packing module (308) may leave some empty space between the 2D patches packed into the image frame. The image padding modules (316) and (318) may fill the empty space (called padding) to generate an image frame that may be suitable for 2D video and image codecs. Image padding is also called background filling, which may fill unused space with redundant information. In some examples, good background filling introduces no significant coding distortion around patch boundaries while minimally increasing the bit rate.

[0062] The video compression modules (322), (323), (332) can encode 2D images, such as padded geometry images, padded texture images, occupancy maps, etc., based on an appropriate video coding standard, such as HEVC, VVC, etc. In one example, the video compression modules (322), (323), (332) are individual components operating independently. It is noted that the video compression modules (322), (323), (332) can be implemented as a single component in another example.

[0063] In some examples, a smoothing module (336) is configured to generate a smoothed image of the reconstructed geometry image. The smoothed image can be provided to a texture image generation (312). The texture image generation (312) can then adjust the generation of the texture image based on the reconstructed geometry image. For example, if a patch shape (e.g., geometry) is slightly distorted during encoding and decoding, the distortion can be taken into account when generating the texture image to correct for the distortion of the patch shape.

[0064] In some embodiments, the group expansion (320) is configured to pad pixels around object boundaries with redundant low-frequency content to improve coding gain as well as the visual quality of the reconstructed point cloud.

[0065] A multiplexer (324) can multiplex the compressed geometry images, the compressed texture images, the compressed occupancy maps, and the compressed auxiliary patch information into a compressed bitstream.

[0066] 4 shows a block diagram of a V-PCC decoder (400) for decoding a compressed bitstream corresponding to a point cloud frame in some examples. In some examples, the V-PCC decoder (400) can be used in the communication system (100) and the streaming system (200). For example, the decoder (210) can be configured to operate in a manner similar to the V-PCC decoder (400). The V-PCC decoder (400) receives the compressed bitstream and generates a reconstructed point cloud based on the compressed bitstream.

[0067] In the example of FIG. 4, the V-PCC decoder (400) includes a demultiplexer (432). , video decompression modules (434) and (436), an occupancy map decompression module (438), an auxiliary patch information decompression module (442), a geometry reconstruction module (444), a smoothing module (446), a texture reconstruction module (448), and a color smoothing module (452).

[0068] A demultiplexer (432) can receive the compressed bitstream and separate it into compressed texture images, compressed geometry images, compressed occupancy maps, and compressed auxiliary patch information.

[0069] The video compression modules (434) and (436) can decode images compressed according to an appropriate standard (e.g., HEVC, VVC, etc.) and output decompressed images. For example, the video decompression module (434) decodes compressed texture images and outputs decompressed texture images. The video decompression module (436) decodes compressed geometry images and outputs decompressed geometry images.

[0070] The occupancy map decompression module (438) can decode the compressed occupancy map according to an appropriate standard (e.g., HEVC, VVC, etc.) and output a decompressed occupancy map.

[0071] The auxiliary patch information decompression module (442) can decode the compressed auxiliary patch information according to an appropriate standard (e.g., HEVC, VVC, etc.) and output the decompressed auxiliary patch information.

[0072] A geometry reconstruction module (444) can receive the decompressed geometry image and generate a reconstructed point cloud geometry based on the decompressed occupancy map and the decompressed auxiliary patch information.

[0073] A smoothing module (446) can smooth incongruences at the edges of the patches. The smoothing procedure aims to mitigate potential discontinuities that may occur at the patch boundaries due to compression artifacts. In some embodiments, a smoothing filter can be applied to pixels located at the patch boundaries to mitigate distortions that may occur due to compression / decompression.

[0074] A texture reconstruction module (448) can determine texture information for points in the point cloud based on the decompressed texture image and the smoothed geometry.

[0075] The color smoothing module (452) can smooth out coloring discrepancies. Non-adjacent patches in 3D space are often packed adjacent to each other in 2D video. In some instances, pixel values ​​from non-adjacent patches may be confused by block-based video codecs. The purpose of color smoothing is to reduce visible artifacts that appear at patch boundaries.

[0076] 5 shows a block diagram of a video decoder (510) in some examples. The video decoder (510) can be used in the V-PCC decoder (400). For example, the video decompression modules (434) and (436) and the occupancy map decompression module (438) can be configured similarly as the video decoder (510).

[0077] The video decoder (510) may include a parser (520) that reconstructs symbols (521) from a compressed image, such as a coded video sequence. These symbol categories include information used to manage the operation of the video decoder (510). The parser (520) may parse / entropy decode a received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles, such as variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) may extract from the coded video sequence at least one set of subgroup parameters for a subgroup of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroup may include a Group of Pictures (GOP), a picture, a tile, a slice, a macroblock, Coding Units (CU), a block, Transform Units (TU), Prediction Units (PU), etc. The parser (520) may also extract from the coded video sequence information, such as transform coefficients, quantization parameter values, motion vectors, and the like.

[0078] The parser (520) may perform an entropy decoding / parsing operation on the video sequence received from the buffer memory to produce symbols (521).

[0079] The reconstruction of the symbols (521) can involve a number of different units, depending on the type of coded video picture or part thereof (inter and intra pictures, inter and intra blocks, etc.), and other factors. Which units are involved and how they are involved can be controlled by subgroup control information parsed from the coded video sequence by the parser (520). The flow of such subgroup control information between the parser (520) and the following units is not depicted for clarity.

[0080] Beyond the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into a number of functional units, as described below. In a practical 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 adequate:

[0081] The first unit is a scalar / inverse transform unit (551), which receives quantized transform coefficients as well as control information from the parser (520) including which transform to use, block size, quantization coefficients, quantization scaling matrices, etc. as symbol(s) (521). The scalar / inverse transform unit (551) can output blocks containing sample values ​​that can be input to an aggregator (555).

[0082] In some cases, the output samples of the scalar / inverse transform (551) may relate to intra-coded blocks; i.e., blocks that do not use prediction information from a previously reconstructed picture, but may use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) generates a block of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from a current picture buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and / or a fully reconstructed current picture. The aggregator (555) may add the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scalar / inverse transform unit (551) on a sample-by-sample basis.

[0083] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to an inter-coded, potentially motion compensated block. In such cases, the motion compensated prediction unit (553) may access the reference picture memory (557) to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols (521) associated with the block, these samples may be added by the aggregator (555) to the output of the scalar / inverse transform unit (551) (in this case referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (557) from which the motion compensated prediction unit (553) fetches the prediction samples may be controlled by a motion vector and may be available to the motion compensated prediction unit (553) in the form of symbols (521) that 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 (557) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.

[0084] The output samples of the aggregator (555) can be subject to various loop filtering techniques in a loop filter unit (556). Video compression techniques can include in-loop filter techniques that are controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the parser (520), but can also be responsive to meta-information obtained during decoding of a coded picture or previous (in decoding order) part of the coded video sequence, or to previously reconstructed and loop filtered sample values.

[0085] The output of the loop filter unit (556) can be a sample stream that can be output to a render device as well as stored in a reference picture memory (557) for use in future inter-picture prediction.

[0086] Once a particular coded picture has been fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture has been fully reconstructed and the coded picture has been identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can be made part of the reference picture memory (557), and a new current picture buffer can be reallocated before beginning reconstruction of the next coded picture.

[0087] The video decoder (510) may perform decoding operations according to a given video compression technique, such as in a standard, such as ITU-T recommendation H.265. The coded video sequence may comply with the syntax specified by the video compression technique or standard being used, in the sense that the coded video sequence complies with both the syntax of the video compression technique or standard and the profile described in the video compression technique or standard. Specifically, the profile may select a particular tool as the only tool available in that profile, from all tools available in the video compression technique or standard. Also, compliance may require that the complexity of the coded video sequence is within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstructed sample rate (e.g., measured in megasamples / second, etc.), maximum reference picture size, etc. The limits set by the level may be further limited by a hypothetical reference decoder (HRD) specification and metadata for HRD buffer management, which may be signaled in the coded video sequence.

[0088] 6 shows a block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) can be used in the V-PCC encoder (300) to compress the point cloud. In one example, the video compression modules (322) and (323) and the video compression module (332) are configured similarly to the encoder (603).

[0089] The video encoder (603) may receive images, such as padded geometry images, padded texture images, etc., and generate compressed images.

[0090] According to one embodiment, the video encoder (603) may code and compress pictures of a source video sequence (images) into a coded video sequence (compressed images) in real-time or under other time constraints required by the application. Enforcing the appropriate coding rate is one of the functions of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units as described below. Coupling is not depicted for clarity. Parameters set by the controller (650) may include rate control related parameters (picture skip, quantization, lambda value for rate distortion optimization techniques, ...), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. The controller (650) may be configured to have other appropriate functions associated with the video encoder (603) optimized for a particular system design.

[0091] In some embodiments, the video encoder (603) is configured to operate in a coding loop. As an oversimplified explanation, in one example, the coding loop can include a source coder (630) (e.g., responsible for creating symbols, such as a symbol stream, based on an input picture to be coded and reference picture(s)) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to create sample data in a similar manner as the (remote) decoder would create them (since in the video compression techniques contemplated in the disclosed subject matter, the compression between the symbols and the coded video bitstream is lossless). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since the decoding of the symbol stream results in bit-accurate results that are independent of the location of the decoder (local or remote), the content in the reference picture memory (634) is also bit-accurate between the local and remote encoders. In other words, the prediction part of the encoder "sees" the exact same sample values ​​as the decoder would "see" if it used prediction during decoding. This basic principle of reference picture synchrony (if synchrony cannot be maintained due to channel errors, etc., drift will result) is also used in several related technologies.

[0092] The operation of the "local" decoder (633) can be the same as a "remote" decoder, such as the video decoder (510) already described in detail in conjunction with Figure 5. However, with brief reference also to Figure 5, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder (645) and parser (520) can be lossless, the entropy decoding portion of the video decoder (510), including the parser (520), may not be fully implemented in the local decoder (633).

[0093] During operation, in some examples, the source coder (630) may perform motion-compensated predictive coding to predictively code 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 (632) codes differences between pixel blocks of the input picture and pixel blocks of reference picture(s) that may be selected as predictive reference(s) to the input picture.

[0094] The local video decoder (633) may decode the coded video data of pictures that may be designated as reference pictures based on the symbols created by the source coder (630). The operation of the coding engine (632) may advantageously be a lossy process. If the coded video data is decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a replica of the source video sequence, usually with some errors. The local video decoder (633) replicates the decoding process that may be performed on the reference pictures by the video decoder, which may cause the reconstructed reference pictures to be stored in a reference picture cache (634). In this way, the video encoder (603) may locally store copies of reconstructed reference pictures with common content as reconstructed reference pictures to be retrieved by the far-end video decoder (free of transmission errors).

[0095] The predictor (635) may perform the prediction search of the coding engine (632). That is, for a new picture to be coded, the predictor (635) may search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., that may serve as suitable prediction references for the new picture. The predictor (635) may operate on a sample block / pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (634).

[0096] The controller (650) may manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.

[0097] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder (645), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, and arithmetic coding.

[0098] The controller (650) may manage the operation of the video encoder (603). During coding, the controller (650) 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:

[0099] An intra picture (I-picture) may be one that can be coded and decoded without using other pictures in a sequence as a source of prediction. Some video codecs allow different kinds of intra pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art are aware of these variants of I-pictures and their respective uses and characteristics.

[0100] A predictive picture (P picture) may be one that can be coded and decoded using intra- or inter-prediction, using at most one motion vector and reference index to predict the sample values ​​of each block.

[0101] A bidirectionally predicted picture (B-picture) may be one that can be coded and decoded using intra- or inter-prediction, using at most two motion vectors and reference indexes to predict the sample values ​​of each block. Similarly, a multi-predicted picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.

[0102] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks as determined by the coding assignment applied to the respective picture of the block. For example, blocks of an I-picture may be non-predictively coded, or they may be predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). Pixel blocks of a P-picture may be predictively coded by spatial prediction or by temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded by spatial prediction or by temporal prediction with reference to one or two previously coded reference pictures.

[0103] The video encoder (603) may perform coding operations according to a given video coding technique or standard, such as ITU-T Recommendation H.265. In its operations, the video encoder (603) 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 defined by the video coding technique or standard being used.

[0104] Video may be in the form of multiple source pictures (images) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation in 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 partitioned 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, then that block in the current picture can be coded by a vector called a motion vector. A motion vector points to a reference block in a reference picture, and may have a third dimension that identifies the reference picture if multiple reference pictures are used.

[0105] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. According to bi-prediction techniques, two reference pictures are used, for example, a first reference picture and a second reference picture that both precede the current picture in decoding order (but may be in the past and future, respectively, in display order) in a video. A block in the current picture can be coded by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first reference block and the second reference block.

[0106] Furthermore, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.

[0107] According to some embodiments of the present disclosure, predictions such as inter-picture prediction and intra-picture prediction are performed in units of blocks. For example, according to the HEVC standard, a picture in a sequence of video pictures is partitioned into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU includes three coding tree blocks (CTBs), which are one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree split into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be split into one CU of 64×64 pixels, or four CUs of 32×32 pixels, or 16 CUs of 16×16 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 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. Taking a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values), such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.

[0108] 7 illustrates a block diagram of a G-PCC encoder (700) in some examples. The G-PCC encoder (700) can be configured to receive point cloud data and compress the point cloud data to generate a bitstream carrying the compressed point cloud data. In one embodiment, the G-PCC encoder (700) can include a position quantization module (710), a duplicated points removal module (712), an octree encoding module (730), an attribute transfer module (720), a level of detail (LOD) generation module (740), an attribute prediction module (750), a residual quantization module (760), an arithmetic coding module (770), an inverse residual quantization module (780), a summing module (781), and a memory (790) for storing reconstructed attribute values.

[0109] As shown, an input point cloud (701) may be received at a G-PCC encoder (700). Positions (e.g., 3D coordinates) of the point cloud (701) are provided to a quantization module (710). The quantization module (710) is configured to quantize the coordinates to generate quantized positions. A remove duplicate points module (712) is configured to receive the quantized positions and perform a filter process to identify and remove duplicate points. An octree encoding module (730) receives the filtered positions from the remove duplicate points module (712) and is configured to perform an octree-based encoding process to generate a sequence of occupancy codes that describe a 3D grid of voxels. The occupancy codes are provided to an arithmetic coding module (770).

[0110] The attribute transfer module (720) is configured to receive attributes of the input point cloud and perform an attribute transfer process to determine an attribute value for each voxel when multiple attribute values ​​are associated with each voxel. The attribute transfer process can be performed on the reordered points output from the octree encoding module (730). The attributes after the transfer operation are provided to the attribute prediction module (750). The LOD generation module (740) is configured to operate on the reordered points output from the octree encoding module (730) and re-organize the points into different LODs. The LOD information is provided to the attribute prediction module (750).

[0111] The attribute prediction module (750) processes the points according to the LOD-based order indicated by the LOD information from the LOD generation module (740). The attribute prediction module (750) generates an attribute prediction for the current point based on the reconstructed attributes of a set of neighboring points of the current point stored in the memory (790). A prediction residual can be subsequently obtained based on the original attribute values ​​received from the attribute transfer module (720) and the locally generated attribute prediction. If a candidate index is used in each attribute prediction process, an index corresponding to a selected prediction candidate can be provided to the arithmetic coding module (770).

[0112] The residual quantization module (760) is configured to receive the prediction residual from the attribute prediction module (750) and perform quantization to generate a quantized residual. The quantized residual is provided to the arithmetic coding module (770).

[0113] The inverse residual quantization module (780) is configured to receive the quantized residual from the residual quantization module (760) and generate a reconstructed prediction residual by performing an inverse of the quantization operation performed by the residual quantization module (760). The summation module (781) is configured to receive the reconstructed prediction residual from the inverse residual quantization module (780) and the respective attribute predictions from the attribute prediction module (750). By combining the reconstructed prediction residual and the attribute predictions, reconstructed attribute values ​​are generated and stored in the memory (790).

[0114] The arithmetic coding module (770) is configured to receive the occupation codes, the candidate indexes (if used), the quantized residuals (if generated), and other information, and to perform entropy encoding to further compress the received values ​​or information. As a result, a compressed bitstream (702) carrying the compressed information can be generated. The bitstream (702) can be transmitted or otherwise provided to a decoder that decodes the compressed bitstream, or can be stored in a storage device.

[0115] 8 shows a block diagram of a G-PCC decoder (800) according to one embodiment. The G-PCC decoder (800) can be configured to receive a compressed bitstream and perform point cloud data decompression to decompress the bitstream to generate decoded point cloud data. In one embodiment, the G-PCC decoder (800) can include an arithmetic decoding module (810), an inverse residual quantization module (820), an octree decoding module (830), an LOD generation module (840), an attribute prediction module (850), and a memory (860) for storing reconstructed attribute values.

[0116] As shown, a compressed bitstream (801) may be received at an arithmetic decoding module (810). The arithmetic decoding module (810) is configured to decode the compressed bitstream to obtain quantized residuals (if generated) and occupied codes of the point cloud. The octree decoding module (830) is configured to determine reconstructed positions of points in the point cloud according to the occupied codes. The LOD generation module (840) is configured to reorganize the points into different LODs based on the reconstructed positions and determine an LOD-based order. The inverse residual quantization module (820) is configured to generate reconstructed residuals based on the quantized residuals received from the arithmetic decoding module (810).

[0117] The attribute prediction module (850) is configured to perform an attribute prediction process to determine attribute predictions for the points according to the LOD-based order. For example, an attribute prediction for a current point can be determined based on reconstructed attribute values ​​of neighboring points of the current point stored in the memory (860). In some examples, the attribute predictions can be combined with the respective reconstructed residuals to generate a reconstructed attribute for the current point.

[0118] The sequence of reconstructed attributes generated from the attribute prediction module (850) along with the reconstructed positions generated from the octree decoding module (830) corresponds, in one example, to the decoded point cloud (802) output from the G-PCC decoder (800). In addition, the reconstructed attributes may also be stored in memory (860) and subsequently used to derive attribute predictions for subsequent points.

[0119] In various embodiments, the encoder (300), the decoder (400), the encoder (700), and / or the decoder (800) may be implemented by hardware, software, or a combination thereof. For example, the encoder (300), the decoder (400), the encoder (700), and / or the decoder (800) may be implemented by a processing circuit, such as one or more integrated circuits (ICs) that operate with or without software, such as application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), and the like. In other examples, the encoder (300), the decoder (400), the encoder (700), and / or the decoder (800) may be implemented as software or firmware that includes instructions stored on a non-volatile (or non-transitory) computer-readable storage medium. The instructions, when executed by a processing circuit, such as one or more processors, cause the processing circuit to perform the functions of the encoder (300), the decoder (400), the encoder (700), and / or the decoder (800).

[0120] It is noted that the attribute prediction modules (750) and (850) configured to implement the attribute prediction techniques disclosed herein can be included in other decoders or encoders that may have similar or different structures to those shown in Figures 7 and 8. Additionally, the encoder (700) and decoder (800) can be included in the same device or separate devices in various examples.

[0121] According to some aspects of the present disclosure, mesh compression may use a coding tool different from a PCC coding tool, or may use a PCC coding tool such as a PCC (e.g., G-PCC, V-PCC) encoder described above, a PCC (e.g., G-PCC, V-PCC) decoder described above, etc.

[0122] An object's mesh (also called a mesh model, mesh frame) may include polygons that describe the object's surface. Each polygon may be defined by the polygon's vertices in 3D space and the edges that connect the vertices to the polygon. The information of how the vertices are connected (e.g., the edge information) is called connectivity information. In some examples, an object's mesh is formed by connected triangles that describe the object's surface. Two triangles that share an edge are called two connected triangles. In some other examples, an object's mesh is formed by connected quadrilaterals. Two quadrilaterals that share an edge may be called two connected quadrilaterals. It is noted that a mesh may be formed by other suitable polygons.

[0123] In some examples, meshes may also include attributes such as color, normals, etc. associated with the vertices. Attributes can be associated with the surface of a mesh by utilizing mapping information that parameterizes the mesh in a 2D attribute map. The mapping information is typically described by a set of parametric coordinates, called UV coordinates or texture coordinates, associated with the mesh vertices. 2D attribute maps (called texture maps in some examples) are used to store high-resolution attribute information such as texture, normals, displacements, etc. Such information can be used for various purposes such as texture mapping and shading.

[0124] In some embodiments, a mesh can include components called geometry information, connectivity information, mapping information, vertex attributes, and attribute maps. In some examples, the geometry information is described by a set of 3D positions associated with the vertices of the mesh. In one example, (x, y, z) coordinates can be used to describe the 3D positions of the vertices, also referred to as 3D coordinates. In some examples, the connectivity information includes a set of vertex indices that describe how to connect the vertices to create a 3D surface. In some examples, the mapping information describes how to map the mesh surface to a planar 2D region. In an example, the mapping information is described by a set of UV parametric / texture coordinates (u, v) associated with the mesh vertices along with the connectivity information. In some examples, the vertex attributes include scalar or vector attribute values ​​associated with the mesh vertices. In some examples, the attribute maps include attributes associated with the mesh surface and stored as a 2D image / video. In one example, the mapping between a video (e.g., a 2D image / video) and the mesh surface is defined by the mapping information.

[0125] According to one aspect of the disclosure, several techniques, called UV mapping or mesh parameterization, are used to map the surface of a mesh in a 3D domain to a 2D domain. In some examples, the mesh is partitioned into patches in the 3D domain. A patch is a contiguous subset of the mesh with a boundary formed by boundary edges. A boundary edge of a patch is an edge that belongs to only one polygon of the patch and is not shared by two adjacent polygons in the patch. The vertices of the boundary edges in a patch are referred to as boundary vertices of the patch, and the non-boundary vertices in a patch may be referred to as interior vertices of the patch in some examples.

[0126] In some instances, the mesh of an object is formed by connected triangles, and the mesh can be partitioned into patches, where each patch is a subset of the connected triangles. A boundary edge of a patch is an edge that belongs to only one triangle in the patch and is not shared by adjacent triangles in the patch. The vertices of a boundary edge in a patch are called boundary vertices of the patch, and the non-boundary vertices in a patch may be called interior vertices of the patch in some instances.

[0127] According to one aspect of the present disclosure, in some examples, the patches are each parameterized into a 2D shape (also referred to as a UV patch). The 2D shapes can be packed (e.g., oriented and positioned) into a map, also referred to as an atlas, in some examples. In some examples, the map can be further processed using 2D image or video processing techniques.

[0128] In one example, the UV mapping technique generates a 2D UV atlas (also called a UV map) and one or more texture atlases (also called texture maps) that correspond to patches of a 3D mesh. The UV atlas includes an assignment of 3D vertices of the 3D mesh to 2D points in a 2D domain (e.g., a rectangle). The UV atlas is a mapping from the coordinates of the 3D surface to the coordinates of the 2D domain. In one example, a point in the UV atlas at 2D coordinates (u,v) has a value formed by the coordinates (x,y,z) of the vertex in the 3D domain. In one example, the texture atlas includes color information for the 3D mesh. For example, a point in the texture atlas at 2D coordinates (u,v) (which has a 3D value of (x,y,z) in the UV atlas) has a color that specifies the color attributes of the point at (x,y,z) in the 3D domain. In some examples, the coordinates (x,y,z) in the 3D domain are referred to as 3D coordinates, or xyz coordinates, and the 2D coordinates (u,v) are referred to as uv coordinates or UV coordinates.

[0129] According to some aspects of the present disclosure, mesh compression can be performed by representing the mesh using one or more 2D maps (also referred to in some examples as 2D atlases) and then encoding the 2D maps using an image or video codec. Various techniques can be used to generate the 2D maps.

[0130] FIG. 9 illustrates a diagram showing the mapping of a 3D mesh (910) to a 2D atlas (920) in some examples. In the example of FIG. 9, the 3D mesh (910) includes four vertices 1-4 that form four patches A-D. Each of the patches has a set of vertices and associated attribute information. For example, patch A is formed by vertices 1, 2, and 3 connected to a triangle; patch B is formed by vertices 1, 3, and 4 connected to a triangle; patch C is formed by vertices 1, 2, and 4 connected to a triangle; patch D is formed by vertices 2, 3, and 4 connected to a triangle. In some examples, vertices 1, 2, 3, and 4 can have respective attributes, and the triangle formed by vertices 1, 2, 3, and 4 can have respective attributes.

[0131] In one example, 3D patches A, B, C, and D are mapped to a 2D domain, such as a 2D atlas (920), also referred to as a UV atlas (920) or map (920). For example, patch A is mapped to a 2D shape (also referred to as a UV patch) A' in the map (920), patch B is mapped to a 2D shape (also referred to as a UV patch) B' in the map (920), patch C is mapped to a 2D shape (also referred to as a UV patch) C' in the map (920), and patch D is mapped to a 2D shape (also referred to as a UV patch) D' in the map (920). In some examples, coordinates in the 3D domain are referred to as (x,y,z) coordinates, and coordinates in a 2D domain, such as the map (920), are referred to as UV coordinates. Vertices in the 3D mesh can have corresponding UV coordinates in the map (920).

[0132] The map (920) can be a geometry map containing geometry information, or it can be a texture map with color, normal, textile, or other attribute information, or it can be an occupancy map with occupancy information.

[0133] In the example of Figure 9, each patch is represented by a triangle, however, it is noted that a patch may include any suitable number of vertices that are connected to form a contiguous subset of the mesh. In some examples, the vertices in a patch are connected into triangles. It is noted that the vertices in a patch may be connected using other suitable shapes.

[0134] In one example, the geometry information of the vertices can be stored in a 2D geometry map. For example, the 2D geometry map stores the (x,y,z) coordinates of the sampling points at corresponding points in the 2D geometry map. For example, a point in the 2D geometry map at a (u,v) location is a three-component vector value that corresponds respectively to the x, y, and z values ​​of the corresponding sampling point in the 3D mesh.

[0135] According to one aspect of the present disclosure, the regions in the map may not be fully occupied. For example, in FIG. 9, the regions outside the 2D shapes A', B', C', and D' are undefined. Sample values ​​of the regions outside the 2D shapes A', B', C', and D' after decoding can be discarded. In some cases, the occupancy map is used to store some additional information for each pixel, such as storing a binary value to identify whether the pixel belongs to a patch or is undefined.

[0136] According to one aspect of the present disclosure, a dynamic mesh is a mesh in which at least one of the components (geometry information, connectivity information, mapping information, vertex attributes, attribute maps) changes over time. A dynamic mesh can be described by a sequence of meshes (also called mesh frames). Because dynamic meshes may contain a large amount of information that changes over time, dynamic meshes may require a large amount of data. Mesh compression techniques enable efficient storage and transmission of media content in mesh representations.

[0137] In some examples, the dynamic mesh can have constant connectivity information, time-varying geometry, and time-varying vertex attributes. In some examples, the dynamic mesh can have time-varying connectivity information. In one example, digital content creation tools typically generate dynamic meshes with time-varying attribute maps and time-varying connectivity information. In some examples, volume acquisition techniques are used to generate the dynamic meshes. Volume acquisition techniques can generate dynamic meshes with time-varying connectivity information, especially under real-time constraints.

[0138] Several techniques are used for mesh compression. In some examples, UV atlas sampling and V-PCC can be used for mesh compression. For example, the UV atlas is sampled in a regular grid to generate a geometry image with regular grid samples. The connectivity of the regular grid samples can be inferred. The regular grid samples can be considered as points in a point cloud and therefore can be coded using a PCC codec, such as the V-PCC codec.

[0139] According to one aspect of the present disclosure, in order to efficiently compress 3D mesh information, 2D maps such as geometry maps, texture maps (also referred to as attribute maps in some examples), occupancy maps, etc. may be downsampled before being coded.

[0140] Figure 10 shows a diagram illustrating downsampling in some examples. In Figure 10, a map (1020) is downsampled by a factor of 2 in both the horizontal and vertical directions to generate a downsampled map (1030) accordingly. The width (e.g., number of pixels in the horizontal direction) of the downsampled map (1030) is 1 / 2 the width (e.g., number of pixels in the horizontal direction) of the map (1020), and the height (e.g., number of pixels in the vertical direction) of the downsampled map (1030) is 1 / 2 the height (e.g., number of pixels in the vertical direction) of the map (1020).

[0141] In FIG. 10, the map (1020) includes 2D shapes (also called UV patches) A', B', C', and D', and the downsampled map (1030) includes sampled 2D shapes A", B", C" and D" corresponding to the 2D shapes A', B', C' and D', respectively. The downsampled map (1030) is then coded by an image or video encoder, in some examples on the mesh encoder side.

[0142] In some examples, at the mesh decoder side, the downsampled map is decoded. After decoding the downsampled map, the downsampled map is restored to its original resolution (e.g., the original number of pixels in the vertical direction and the original number of pixels in the horizontal direction) to reconstruct the 3D mesh.

[0143] Generally, dynamic mesh sequences require a large amount of data, since they may consist of a large amount of information that changes over time. Sampling steps applied to 2D maps (e.g., UV atlases, attribute maps) can help reduce the bandwidth required to represent the mesh information. However, sampling steps can also remove important information, such as important geometric shapes of 3D meshes during downsampling.

[0144] In some examples, adaptive sampling techniques can be used to process 2D atlases (also called maps in 2D) without losing much important information. Adaptive sampling techniques can be used for static mesh (one mesh frame or mesh content does not change over time) compression and dynamic mesh compression. Various adaptive sampling techniques can be applied individually or in any form of combination. In the following description, adaptive sampling techniques are applied to 2D atlases (e.g., maps in 2D), which can be either geometry maps or attribute (texture) maps, or both.

[0145] 11 shows a diagram of a framework (1100) for mesh compression according to some embodiments of the present disclosure. The framework (1100) includes a mesh encoder (1110) and a mesh decoder (1150). The mesh encoder (1110) receives an input mesh (1101) (or a mesh frame in the case of dynamic mesh processing) and encodes the input mesh (1101) into a bitstream (1145), and the mesh decoder (1150) decodes the bitstream (1145) to generate a reconstructed mesh (1195) (or a reconstructed mesh frame in the case of dynamic mesh processing).

[0146] The mesh encoder (1110) can be any suitable device, such as a computer, a server computer, a desktop computer, a laptop computer, a tablet computer, a smartphone, a gaming device, an AR device, a VR device, etc. The mesh decoder (1150) can be any suitable device, such as a computer, a client computer, a desktop computer, a laptop computer, a tablet computer, a smartphone, a gaming device, an AR device, a VR device, etc. The bitstream (1145) can be transmitted from the mesh encoder (1110) to the mesh decoder (1150) over any suitable communication network (not shown).

[0147] In the example of Figure 11, the mesh encoder (1110) includes a pre-processing module (1111), an adaptive sampling module (1120), a video encoder (1130), and an auxiliary data encoder (1140) coupled together. The video encoder (1130) is configured to encode image or video data, such as a 2D map, in a representation of a 3D mesh.

[0148] In the example of FIG. 11, the pre-processing module (1111) is configured to perform appropriate operations on the input mesh (1101) to generate a mesh with a UV atlas (1105). For example, the pre-processing module (1111) may perform a series of operations including tracking, remeshing, parameterization, and voxelization. In the example of FIG. 11, the series of operations is only an encoder and is not part of the decoding process. In some examples, the mesh with a UV atlas (1105) includes 3D position information of vertices, a UV atlas that maps the 3D position information to 2D, and other 2D attribute maps (e.g., a 2D color map, etc.).

[0149] It is noted that in some examples, the input mesh (1101) is in the form of a mesh with a UV atlas, and the pre-processing module (1111) can then transform the input mesh (1101) to become a mesh with a UV atlas (1105).

[0150] The adaptive sampling module (1120) receives the mesh (1105) with the UV atlas and performs adaptive sampling to generate an adaptive sampling map (1125). In some examples, the adaptive sampling module (1120) can use various techniques to detect characteristics in or different regions of the map, such as information density in the map, and determine different sampling rates for sampling the map or different regions of the map based on the characteristics. The 2D map can then be sampled according to different sampling rates to generate an adaptive sampling map (1125). The adaptive sampling map (1125) can include a geometry map (also referred to as a geometry image in some examples), an occupancy map, other attribute maps (e.g., color maps), and the like.

[0151] The video encoder (1130) can encode the adaptive sampling map (1125) into a bitstream (1145) using image encoding and / or video encoding techniques.

[0152] The adaptive sampling module (1120) also generates auxiliary data (1127) that indicates the assistance information used for adaptive sampling. The auxiliary data encoder (1140) receives the auxiliary data (1127) and encodes the auxiliary data (1127) into a bitstream (1145).

[0153] The operation of the adaptive sampling module (1120) and the auxiliary data encoder (1140) are described further in this disclosure.

[0154] In the example of FIG. 11, the bitstream (1145) is provided to a mesh decoder (1150). The mesh decoder (1150) includes a video decoder (1160), an auxiliary data decoder (1170), and a mesh reconstruction module (1190) coupled together as shown in FIG. 11. In one example, the video decoder (1160) corresponds to the video encoder (1130) and can decode a portion of the bitstream (1145) encoded by the video encoder (1130) to generate a decoded map (1165). In some examples, the decoded map (1165) includes a decoded UV map, one or more decoded attribute maps, etc. In some examples, the decoded map (1165) includes a decoded occupancy map (e.g., an initial decoded map).

[0155] In the example of FIG. 11, the auxiliary data decoder (1170) corresponds to the auxiliary data encoder (1140) and is capable of decoding a portion of the bitstream (1145) encoded by the auxiliary data encoder (1140) to generate decoded auxiliary data (1175).

[0156] In the example of Figure 11, the decoded map (1165) and the decoded auxiliary data (1175) are provided to a mesh reconstruction module (1190). The mesh reconstruction module (1190) generates a reconstructed mesh (1195) based on the decoded map (1165) and the decoded auxiliary data (1175). In some examples, the mesh construction module (1190) can determine vertices in the reconstructed mesh (1195) and vertex information, such as respective 3D coordinates, UV coordinates, colors, etc. associated with the vertices. The operation of the auxiliary data decoder (1170) and the mesh reconstruction module (1190) are described further in this disclosure.

[0157] It is noted that the components of the mesh encoder (1110), such as the pre-processing module (1111), the adaptive sampling module (1120), the video encoder (1130), and the auxiliary data encoder (1140), can each be implemented by a variety of technologies. In one example, the components are implemented by integrated circuits. In another example, the components are implemented using software that can be executed on one or more processors.

[0158] It is noted that the components of the mesh decoder (1150), such as the video decoder (1160), the auxiliary data decoder (1170), and the mesh reconstruction module (1190), can each be implemented in a variety of ways. In one example, the components are implemented by integrated circuits. In another example, the components are implemented using software that can be executed on one or more processors.

[0159] In some embodiments, sampling adaptation can be based on map type. In some examples, the adaptive sampling module (1120) can apply different sampling rates to different types of maps. For example, different sampling rates can be applied to geometry maps and attribute maps. In one example, a mesh is a model of an object with a regular shape and abundant texture. For example, an object has a rectangular shape but abundant color. Thus, the information density of the geometry map is relatively low. In one example, the adaptive sampling module (1120) applies a first sampling rate of 2:1 to the geometry map (in both vertical and horizontal directions) and a second sampling rate of 1:1 to the texture map (in both vertical and horizontal directions).

[0160] In some instances, a sampling rate of A:B in a direction indicates that B samples are generated from A pixels in the original map in that direction. For example, a sampling rate of 2:1 in the horizontal direction indicates that one sample is generated for every two pixels in the original map in the horizontal direction. A sampling rate of 2:1 in the vertical direction indicates that one sample is generated for every two pixels in the original map in the vertical direction.

[0161] In some examples, the term sampling step is used. A sampling step in a direction indicates the number of pixels between two adjacent sampling positions in the direction. For example, a sampling step of two in the horizontal direction indicates two pixels between adjacent sampling positions in the horizontal direction. A sampling step of two in the vertical direction indicates two pixels between adjacent sampling positions in the vertical direction. It is noted that in this disclosure, the sampling rate is equivalent to the sampling step. For example, a sampling rate of 2 (e.g., 2:1) is equivalent to two pixels between adjacent sampling positions.

[0162] In some embodiments, the sampling adaptation is based on sub-regions within the map. Different sampling rates can be applied to different parts of the map. In some examples, some rows of pixels have less information stored and a larger sampling rate can be applied along these rows, resulting in a smaller number of coded sample rows. In some examples, some columns of pixels have less information stored and a larger sampling rate can be applied along these columns, resulting in a smaller number of coded sample columns. In other regions, a smaller sampling rate is applied to minimize the loss of information after sampling.

[0163] FIG. 12 shows an illustration of adaptive sampling in some examples. The map (1220) is divided into several block rows, each of which contains a fixed number of sample (pixel) rows. Different sampling rates are applied vertically to the block rows to generate the adaptively sampled map (1230). For example, each block row is a CTU row (also called a CTU line) and contains 64 rows of samples (also called pixels). In the example of FIG. 12, a first sampling rate of 2:1 is applied vertically to block rows 0 and 6 of the map (1220), resulting in 32 rows of samples for each of block rows 0 and 6 of the sampled adaptive sampling map (1230). A second sampling rate of 1:1 is applied vertically to block rows 1 to 5 of the map (1220), resulting in 64 rows of samples for each of block rows 1 to 5 of the adaptive sampling map (1230).

[0164] It is noted that a sampling rate of 1:1 is applied horizontally in FIG.

[0165] In some examples, the adaptively sampled map (1230) is encoded by an image or video encoder, such as the video encoder (1130). On the decoder side, in one example, the adaptively sampled map (1230) is decoded. After decoding, the top 32 rows of samples are restored (upsampled) to the original resolution (e.g., 64 rows of samples). The bottom 32 rows of samples are restored (upsampled) to the original resolution (e.g., 64 rows of samples).

[0166] In some other examples, a map coded with a 2D representation of a 3D mesh may be divided into several sub-regions. Examples of such divisions in a map (e.g., a picture) include slices, tiles, tile groups, coding tree units, etc. In some examples, different sampling rates may be applied to different sub-regions. In one example, different sampling rates associated with different sub-regions may be signaled in a bitstream carrying the 3D mesh. At the decoder side, after decoding of the adaptive sampling map, each sub-region is restored to its original resolution according to the sampling rate associated with the sub-region.

[0167] In some examples, the process of restoring the adaptively sampled map to its original resolution is referred to as an inverse sampling process that produces a restored map. After restoration from the inverse sampling process, the output of the restored map in the form of a 2D atlas can be used for 3D mesh reconstruction.

[0168] Although the example of FIG. 12 shows adaptive sampling for different block rows in the vertical direction, similar adaptive sampling can be applied to different columns in the horizontal direction, or in both the vertical and horizontal directions.

[0169] In some embodiments, the sampling adaptation is patch-based. In some examples, different patches in a map can have different sampling rates.

[0170] FIG. 13 shows an illustration of adaptive sampling in some examples. A map (1320), such as a high-resolution 2D atlas, includes multiple 2D shapes, also called UV patches, such as a first 2D shape A′ and a second 2D shape B′, that correspond to patches in a 3D mesh. In the example of FIG. 13, a first sampling rate of 2:1 is applied to the first 2D shape A′ in both vertical and horizontal directions to generate a first sampled 2D shape A″; a second sampling rate of 1:1 is applied to the second 2D shape B′ in both vertical and horizontal directions to generate a second sampled 2D shape B″. The first sampled 2D shape A″ and the second sampled 2D shape B″ are placed into a new map called the adaptive sampling map (1330).

[0171] In the example of FIG. 13, the first sampled 2D shape A" is smaller than the first 2D shape A', and the second sampled 2D shape B" is the same size as the second 2D shape B'. The adaptive sampled map (1330) is encoded by an image or video encoder, such as the video encoder (1130), into a bitstream that conveys the 3D mesh. In some examples, the sampling rate associated with the sampled 2D shapes is encoded into the bitstream that conveys the 3D mesh, for example by the auxiliary data encoder (1140).

[0172] In some examples, on the decoder side, an image / video decoder, such as a video decoder (1160), decodes an initial map, such as an adaptively sampled map (1330), from a bitstream. Furthermore, a sampling rate associated with the sampled 2D shape is decoded from the bitstream, for example by an auxiliary data decoder (1170). According to the sampling rate associated with the sampled 2D shape, the sampled 2D shape in the adaptively sampled map (1330) is restored to its original size (e.g., the same number of pixels in the vertical and horizontal directions) to generate a restored map. The restored map is then used for 3D mesh reconstruction.

[0173] According to one aspect of the present disclosure, adaptive sampling information, such as sampling rates for different map types, sampling rates for different sub-regions, sampling rates for different patches, etc., is known at the mesh encoder side and the mesh decoder side. In some examples, the adaptive sampling information is appropriately encoded into a bitstream conveying the 3D mesh. Thus, the mesh decoder and the mesh encoder can operate based on the same adaptive sampling information. The mesh decoder can restore the map to the correct size.

[0174] According to one aspect of the disclosure, a mesh encoder, such as the mesh encoder (1110), may perform 2D atlas sampling (also referred to as UV atlas sampling). For example, the adaptive sampling module (1120) may receive a mesh with a UV atlas (1105). Each vertex of the mesh with the UV atlas (1105) has a corresponding point in the UV atlas, where the location of the corresponding point in the UV atlas is specified by UV coordinates. In the UV atlas, the corresponding point may have a vector value that includes the 3D coordinates (e.g., (x, y, z)) of the vertex in 3D space. Additionally, the mesh with the UV atlas (1105) may include one or more attribute maps that store attribute values ​​associated with vertices as attribute values ​​of pixels at locations specified by UV coordinates in the one or more attribute maps. For example, a color map may store the color of a vertex as the color of a pixel at a location specified by the UV coordinates in the color map.

[0175] The adaptive sampling module (1120) can apply adaptive sampling techniques to a mesh with a UV atlas (1105) and output an adaptive sampled map (1125) (also referred to in some examples as an adaptive sampled atlas), which can include, for example, a sampled geometry map (also referred to as a sampled UV map or a sampled UV atlas), one or more sampled attribute maps (also referred to in some examples as texture maps), etc. In some examples, the adaptive sampled map (1125) includes a sampled occupancy map.

[0176] According to one aspect of the disclosure, the same sampling rate configuration can be applied to various maps, such as geometry maps, attribute maps, occupancy maps, etc., to generate adaptive sampling maps. In some examples, the adaptive sampling module (1120) can generate adaptive sampled maps (1125) by sampling to a UV atlas (e.g., based on sampling positions on the UV atlas). The adaptive sampling module (1120) can determine sampling positions on the UV atlas and then generate adaptive sampled maps according to the sampling positions on the UV atlas. For example, after the sampling positions on the UV atlas are determined, e.g., according to a sampling rate, the adaptive sampling module (1120) determines positions of sampled points in each of the sampled maps (1125) and then determines values ​​of each sampled point in the sampled maps (1125).

[0177] In one example, if a sampling location on the UV atlas is inside a polygon defined by the vertices of the mesh, the sampling location is occupied and then a sampled point in the sampled occupancy map corresponding to the sampling location is set to occupied (e.g., the value of the sampled point in the sampled occupancy map is "1"). However, if the sampling location is not inside a polygon defined by the vertices of the mesh, the sampling location is unoccupied and then a sampled point in the sampled occupancy map corresponding to the sampling location is set to unoccupied (e.g., the value of the sampled point in the sampled occupancy map is "0").

[0178] For each occupied sampling location on the UV atlas, the adaptive sampling module (1120) can determine 3D (geometry) coordinates at the occupied sampling location and assign the determined 3D coordinates as vector values ​​of a corresponding sampled point in a sampled geometry map (also referred to as a sampled UV atlas). Similarly, the adaptive sampling module (1120) can determine attribute values ​​(e.g., color, normal, etc.) at the occupied sampling location and assign the determined attribute values ​​as attribute values ​​of the corresponding sampled point in the sampled attribute map. In some examples, the adaptive sampling module (1120) can determine the 3D coordinates and attributes of the occupied sampling location by interpolating from associated polygon vertices.

[0179] In one example, the mesh is formed by triangles. The sampling location is inside a triangle defined by three vertices of the mesh, and thus the sampling location is an occupied sampling location. The adaptive sampling module (1120) can determine a 3D (geometry) coordinate at the occupied sampling location, for example, according to a weighted average 3D coordinate of the 3D coordinates of the three vertices of the triangle. The adaptive sampling module (1120) can assign the weighted average 3D coordinate to be a vector value of the corresponding sampled point in the sampled geometry map. Similarly, the adaptive sampling module (1120) can determine an attribute value at the occupied sampling location, for example, according to a weighted average attribute value of the attributes of the three vertices of the triangle (e.g., weighted average color, weighted average normal, etc.). The adaptive sampling module (1120) can assign the weighted average attribute value to be an attribute value of the corresponding sampled point in the sampled attribute map.

[0180] In some examples, the sampling rate (SR) can be consistent across the 2D atlas (e.g., geometry maps, attribute maps, etc.), but the sampling rates for the u-axis and v-axis can be different. Using different sampling rates for the u-axis and v-axis allows for anisotropic remeshing. As described with reference to FIG. 12 and FIG. 13, in some examples, the 2D atlas can be divided into multiple regions, such as slices or tiles or patches, and the multiple regions can have respective sampling rates. For example, a mesh is formed of connected triangles, and the mesh can be divided into several patches, each patch including a subset of the entire mesh. Different sampling rates can be applied to each patch, for example, by an adaptive sampling module (1120).

[0181] According to one aspect of the present disclosure, a mesh encoder, such as the mesh encoder (1110), can determine an appropriate sampling rate for each region of the 2D atlas.

[0182] In some examples, the adaptive sampling module (1120) can determine a sampling rate distribution across the 2D atlas (e.g., geometry map, attribute map, etc.). For example, the adaptive sampling module (1120) can determine a particular sampling rate (SR) for a region according to the characteristics of the region. In one example, the particular sampling rate is determined based on the frequency spectrum of the region. For example, a rich-textured region (or the entire 2D atlas) can have high spatial frequency components in texture attribute values, and the adaptive sampling module (1120) can assign a sampling rate (e.g., low sampling rate, low sampling step) appropriate for the high spatial frequency components to the rich-textured region. In another example, a region (or the entire 2D atlas) with high activity can include high spatial frequency components in coordinates (e.g., 3D coordinates, UV coordinates), and the adaptive sampling module (1120) can assign a sampling rate (e.g., low sampling rate, low sampling step) appropriate for the high activity to the region. In another example, a smooth region (or the entire 2D atlas) may lack high spatial frequency components in the texture attribute values, and the adaptive sampling module (1120) may assign a sampling rate (e.g., high sampling rate, high sampling step) appropriate for the smooth region. In another example, a region (or the entire 2D atlas) with low activity may lack high spatial frequency components in the coordinates (e.g., 3D coordinates, UV coordinates), and the adaptive sampling module (1120) may assign a sampling rate (e.g., high sampling rate, low sampling step) appropriate for the low activity of the region.

[0183] According to one aspect of the present disclosure, the sampling rate can be expressed by an oversampling ratio (OR) parameter. The OR parameter is defined as the ratio between the number of sampling points in a region and the number of original vertices in the region. If the OR parameter for a region is greater than 1, the OR parameter indicates that the region is oversampled compared to the number of original vertices. If the OR parameter for a region is less than 1, the OR parameter indicates that the region is undersampled compared to the number of original vertices. For example, when a region of a mesh consists of 1000 vertices and a certain sampling rate (SR) is applied to the region, 3000 sampling points are obtained. In this case, the OR parameter for the region is equal to 3 at that SR, i.e., OR(SR)=3.

[0184] In some embodiments, the adaptive sampling module (1120) can use an algorithm to determine a final sampling rate for a region to achieve an OR parameter that is closest to a predefined target OR parameter. For example, for a particular region i (e.g., i is a region index for identifying the particular region), the target OR (TOR i The adaptive sampling module (1120) calculates the target OR (TOR) as shown in equation (1). i ) parameter is the final sampling rate (SR i (denoted by

number

[0185] In one example, the adaptive sampling module (1120) can try multiple sampling rates and select one of the multiple sampling rates that produces an OR parameter that is closest to the target OR parameter. In another example, the adaptive sampling module (1120) can perform a search in a search range of sampling rates using an algorithm such as a binary search algorithm to determine a final sampling rate that produces an OR parameter that is closest to the target OR parameter.

[0186] In some embodiments, the adaptive sampling module (1120) can use an algorithm to determine a final sampling rate for a particular region i (e.g., i is a region index for identifying the particular region) that can achieve a maximum OR parameter less than a predefined threshold (denoted as Th0). In some examples, the algorithm starts with a relatively small (e.g., 1:1) basic sampling rate (BSR) and determines the final sampling rate using an iterative process with iterative cycles. In each iterative cycle that tests the current BSR, an OR parameter for the region is determined. If the OR parameter is less than the threshold Th0, the current BSR is the final sampling rate for the particular region. If the OR parameter is greater than the threshold Th0, a new BSR is calculated based on the current BSR. For example, a scaling factor F0 (e.g., greater than 1) is applied to the current BSR to determine the new BSR. The new BSR then becomes the current BSR, and the iterative process proceeds to the next iterative cycle. In some examples, the process of determining the final sampling rate for region (i) is determined as in Equation (2):

number

[0187] In some embodiments, the adaptive sampling module (1120) uses an algorithm to determine a final sampling rate (SR) for a particular region i (e.g., i is a region index for identifying the particular region) that can achieve an OR parameter in a particular range, such as less than a first predefined threshold (denoted as Th0) and greater than a second predefined threshold (denoted as Th1). i ) can be determined. In some examples, the algorithm starts from an arbitrary base sampling rate (BSR) and determines the final sampling rate using an iterative process with iterative cycles. In each iterative cycle testing the current BSR, an OR parameter for the particular region is determined. If the OR parameter is in a particular range, such as less than a first predefined threshold Th0 and greater than a second predefined threshold Th1, the current BSR is the final sampling rate for the particular region. However, if the OR parameter is greater than the first predefined threshold Th0, a first scaling factor F0 (e.g., greater than 1) is applied to the current BSR to determine a new BSR. If the OR parameter is less than a second predefined threshold Th1, a second scaling factor (e.g., less than 1) is applied to the current BSR to determine a new BSR. The new BSR then becomes the current BSR, and the iterative process proceeds to the next iterative cycle.

[0188] In some examples, the process of determining the final sampling step of region i is determined as in Equation (3):

Equation

[0189] It should be noted that the scaling factors F0 and F1 may vary for each region. If the OR parameter with BSR is within a specific range defined by the thresholds (e.g., Th0 and Th1), the current region can use BSR as the final sampling rate. If the OR parameter with BSR is greater than or equal to Th0, the final sampling rate is increased by the scaling factor F0. If the OR parameter with BSR is less than or equal to Th1, the final sampling rate is decreased by the scaling factor F1. The process can be repeatedly executed until OR(SR i ) is within the range defined by Th0 and Th1.

[0190] According to some aspects of the present disclosure, the adaptive sampling module (1120) can arrange regions with different sampling rates (or different sampling steps) on a single map.

[0191] It is noted that when an adaptive sampling rate is applied, the size of the sampled regions in the sampled map may change at different rates compared to the original UV atlas or compared to when a uniform sampling rate is used. The adaptive sampling module (1120) can arrange sampled regions of different sampling rates in the sampled map and keep the sampled regions from overlapping with each other, so that each point in the sampled map has a one-to-one correspondence to a particular region.

[0192] In some examples, the adaptive sampling module (1120) can determine a bounding box for each sampled region and then position the sampled region according to the bounding box. In one example, for a particular region of the original UV atlas, min is the minimum u coordinate of all the vertices in a particular region, and v min is the minimum v coordinate of all of the vertices of the particular region. Based on the minimum u and v coordinates, the adaptive sampling module (1120) can determine a bounding box for a sampled region that corresponds to the particular region. For example, the upper left corner of the bounding box for the sampled region can be determined by dividing the upper left corner of the bounding box for the sampled region by the minimum u coordinate in the sampled map. o , v o ) position, and the position is

number

number

number

[0193] In some embodiments, the adaptive sampling module (1120) can place the sampled regions one by one in the sampled map in a particular order. To place the current sampled region, the adaptive sampling module (1120) can o ,v o ) (e.g., the top-left corner of the bounding box of the current sampled region). If the adaptive sampling module (1120) detects that the current sampled region overlaps with an already placed sampled region, the adaptive sampling module (1120) can determine a new position to place the current sampled region to avoid overlapping with the previously placed sampled region.

[0194] In some examples, a particular search window and / or criteria can be defined, and the adaptive sampling module (1120) determines a new position (u) for placing the current sampled region according to the particular search window and / or criteria. n ,v n In some cases, we can find the new position (u n ,v n ) and the original position (u o ,v o It is noted that the offset between the first and second inputs (also called UV offset) can be signaled from the encoder side to the decoder side for reconstruction.

[0195] In some embodiments, the sampled regions are arranged to not only not overlap, but also to have a certain amount of gap between the regions. For example, each sampled region may be required to have a minimum distance of 10 pixels to other sampled regions. It is noted that the spacing between sampled regions can be defined in various ways. In some examples, the minimum distance between sampled regions can be defined by a minimum horizontal distance l0 and a minimum vertical distance l1.

[0196] Certain aspects of the present disclosure also provide signaling techniques for adaptive sampling for mesh compression.

[0197] In some embodiments, the sampling rates of different regions of a mesh can be signaled in a bitstream carrying information of the mesh. It is noted that the sampling rates can be signaled at different levels in the bitstream. In one example, the sampling rate can be signaled in a sequence header of an entire mesh sequence that includes a sequence of mesh frames. In another example, the sampling rate can be signaled in a group header of a group of mesh frames (which is a similar concept to a group of pictures (GOP)). In another example, the sampling rate can be signaled in a frame header of each mesh frame. In another example, the sampling rate of a slice in a mesh frame is signaled in a slice header of the slice. In another example, the sampling rate of a tile in a mesh frame is signaled in a tile header of the tile. In another example, the sampling rate of a patch in a mesh frame is signaled in a patch header of the patch.

[0198] Specifically, in some embodiments, a control flag may be signaled to indicate whether an adaptive sampling method is applied at different levels in the bitstream. In one example, the control flag is signaled in a sequence header of the entire mesh sequence. In another example, the control flag is signaled in a group header of a group of mesh frames. In another example, the control flag is signaled in a frame header of each mesh frame. In another example, the control flag of a slice in a mesh frame is signaled in a slice header of the slice. In another example, the control flag of a tile in a mesh frame is signaled in a tile header of the tile. In another example, the control flag of a patch in a mesh frame is signaled in a patch header of the patch. If the control flag at a level is true, adaptive sampling is enabled at that level and an adaptive sampling rate may be applied. If the control flag at a level is false, adaptive sampling is disabled and a uniform sampling rate is applied at that level.

[0199] In some examples, the control flag comprises one bit and can be coded in various ways. In one example, the control flag is coded by entropy coding (e.g., arithmetic coding and Huffman coding) with a fixed or updated probability. In another example, the control flag is coded by a less complex coding technique (called bypass coding).

[0200] In some examples, a base sampling rate can be signaled regardless of whether adaptive sampling is enabled. If adaptive sampling is enabled, the base sampling rate can be used as a predictor and each region can signal a difference from the base sampling rate to indicate the actual sampling rate of that region. If adaptive sampling is disabled, the base sampling rate can be used as a uniform sampling rate across the content at the appropriate level.

[0201] The base sampling rate may also be signaled at various levels in the bitstream. In one example, the base sampling rate may be signaled in a sequence header for the entire mesh sequence. In another example, the base sampling rate may be signaled in a group header for a group of mesh frames. In another example, the base sampling rate may be signaled in a frame header for each mesh frame. In another example, the base sampling rate of a slice in a mesh frame is signaled in a slice header for the slice. In another example, the base sampling rate of a tile in a mesh frame is signaled in a tile header for the tile. In another example, the base sampling rate of a patch in a mesh frame is signaled in a patch header for the patch.

[0202] In some examples, the base sampling rate can be binarized by a fixed or variable length representation (e.g., a fixed k-bit representation or a k-ordered Exp-Golomb representation), and each bit can be coded by entropy coding (e.g., arithmetic coding and Huffman coding) with a fixed or updated probability, or can be coded by low-complexity bypass coding.

[0203] According to one aspect of the present disclosure, when adaptive sampling is enabled, the sampling rate of the regions in the mesh frame is appropriately signaled. In some examples, the number of regions across the mesh frame can be signaled or derived (e.g., number of CTU rows, number of tiles, number of patches, etc.).

[0204] According to one aspect of the present disclosure, the sampling rate of a region can be signaled without prediction. In one example, the sampling rate of each region (or the entire 2D atlas) can be directly signaled without prediction. In another example, the sampling rate of each region (or the entire 2D atlas) can be selected from a set of pre-established sampling rates known by both the encoder and the decoder. The signaling of a particular sampling rate can be performed by signaling an index of a particular sampling rate within the pre-established rate set. For example, the set of pre-established sampling steps can include (every 2 pixels, every 4 pixels, every 8 pixels, etc.). Index 1 can be signaled to indicate a sampling rate of every 2 pixels (e.g., 2:1). Index 2 can be signaled to indicate a sampling rate of every 4 pixels (e.g., 4:1). Index 3 can be signaled to indicate a sampling rate of every 8 pixels (e.g., 8:1).

[0205] According to another aspect of the present disclosure, the sampling rate of the regions can be predicted, it being noted that any suitable prediction technique can be used.

[0206] In one example, the sampling rate for each region of a mesh frame (or the entire 2D atlas) can be predicted from a pre-established set of rates. In another example, the sampling rate for each region of a mesh frame (or the entire 2D atlas) can be predicted from sampling rates previously used in other already coded regions of the same frame. In another example, the sampling rate for each region of a mesh frame (or the entire 2D atlas) can be predicted from sampling rates previously used in other already coded mesh frames.

[0207] According to another aspect of the present disclosure, the sampling rate of each region (or the entire 2D atlas) can be determined in a manner that allows both prediction and direct signaling. In one example, the syntax can be structured to indicate whether the sampling rate is predicted or directly signaled. If the syntax indicates that the sampling rate is predicted, then which predictor is used to predict the sampling rate is further signaled, for example, by another syntax. If the syntax indicates that the sampling rate is directly signaled, then the value of the sampling rate is signaled, for example, by another syntax.

[0208] In some examples, if the sampling rate is signaled directly (by signaling the sampling rate or by signaling an index that points to the sampling rate), the sampling rate or the index that points to the sampling rate can be binarized by a fixed-length or variable-length representation (e.g., a fixed k-bit representation or a k-th order Exponential-Golomb representation), and each bit can be coded with a fixed or updated probability by entropy coding (e.g., arithmetic coding and Huffman coding) or by low-complexity bypass coding.

[0209] In some examples, when the sampling rate is signaled by prediction, the prediction residual can be signaled. The prediction residual can be binarized by a fixed-length representation or a variable-length representation (e.g., a fixed k-bit representation or a k-th order exponential-Golomb representation), and each bit can be coded by entropy coding (e.g., arithmetic coding and Huffman coding) with a fixed probability or an updated probability, or can be coded by low-complexity bypass coding. For example, the sign bit of the prediction residual can be coded by bypass coding, and the absolute value of the prediction residual can be coded by entropy coding with an updated probability.

[0210] According to some aspects of the present disclosure, when adaptive sampling is enabled, the offset of the UV coordinates (also called UV offset), i.e., the offset of each region in the mesh frame, u =u o -u n and offset v =v o -v n may be coded in a bitstream conveying a mesh frame. In some examples, the number of regions across the mesh frame may be signaled or derived (e.g., number of CTU rows, number of tiles, number of patches, etc.).

[0211] According to one aspect of the present disclosure, the UV offsets of the regions can be signaled without prediction. In one example, the UV offsets of each region can be signaled directly without prediction.

[0212] According to another aspect of the present disclosure, the UV offset of a region can be predicted. It is noted that any suitable prediction technique can be used. In one example, the UV offset of each region is predicted from a pre-established UV offset set. In another example, the UV offset of each region is predicted from previously used UV offsets in other already coded regions of the same mesh frame. In another example, the UV offset of each region is predicted from previously used UV offsets in other already coded mesh frames.

[0213] According to another aspect of the present disclosure, the UV offset of each region may be signaled in a manner that allows both predicted and direct signaling. In some examples, the syntax may be structured to indicate whether the UV offset is predicted or directly signaled. If the syntax indicates that the UV offset is predicted, then which predictor is used to predict the UV offset is further signaled by another syntax. If the syntax indicates that the UV offset is directly signaled, then the value of the UV offset is signaled by another syntax.

[0214] In some examples, the UV offsets are directly signaled, the values ​​of the UV offsets can be binarized by a fixed or variable length representation (e.g., a fixed k-bit representation or a k-th order exponential-Golomb representation), and each bit can be coded by entropy coding (e.g., arithmetic coding and Huffman coding) with a fixed or updated probability, or can be coded by low-complexity bypass coding. In one example, the sign bits of the UV offsets can be coded by bypass coding, and the absolute values ​​of the UV offsets can be coded by entropy coding with an updated probability.

[0215] In some examples, the sign bit of the UV offset can be inferred or predicted from the value of the sampling rate. For example, if the sampling rate of the region is greater than the base sampling rate, the sign bit of the UV offset can be inferred or predicted as positive. Also, if the sampling rate of the region is less than the base sampling rate, the sign bit of the UV offset can be inferred or predicted as negative. If the sampling rate of the region is equal to the base sampling rate, the UV offset can be inferred or predicted as zero.

[0216] In some examples, the UV offset can be predicted and the prediction residual can be signaled. For example, the prediction residual can be binarized by a fixed-length or variable-length representation (e.g., a fixed k-bit representation or a k-th order exponential-Golomb representation), and each bit can be coded by entropy coding (e.g., arithmetic coding and Huffman coding) with a fixed probability or an updated probability, or can be coded by a low-complexity bypass coding. In one example, the sign bit of the prediction residual can be coded by bypass coding, and the absolute value of the prediction residual can be coded by entropy coding with an updated probability.

[0217] Some aspects of the present disclosure also provide mesh reconstruction techniques for use on the decoder side, which can be used in a mesh reconstruction module, such as the mesh reconstruction module (1190).

[0218] In some examples, the decoded map (1165) includes a decoded occupancy map, and the mesh reconstruction module (1190) can reconstruct the mesh frame according to the decoded map (1165), which includes the decoded occupancy map, a decoded geometry map, and one or more decoded attribute maps. It is noted that in some examples, the decoded occupancy map corresponds to a sampled occupancy map, which can be the result of adaptive sampling using the same sampling rate as the decoded geometry map and the decoded attribute map, and thus the decoded occupancy map includes sampled regions.

[0219] In some examples, the decoded map (1165) does not include an occupancy map, and the bitstream (1145) includes information identifying the boundary vertices of each region, e.g., auxiliary data encoded by the auxiliary data encoder (1140). The auxiliary data decoder (1170) can decode the information identifying the boundary vertices of the region. The mesh reconstruction module (1190) can infer regions for the estimated occupancy map based on the boundary vertices of the region. It is noted that in some examples, the estimated occupancy map has not been processed with adaptive sampling. The mesh reconstruction module (1190) can reconstruct a mesh frame according to the estimated occupancy map and the decoded map (1165), which includes a decoded geometry map and one or more decoded attribute maps.

[0220] According to one aspect of the present disclosure, the mesh reconstruction module (1190) can determine UV coordinates of vertices in the mesh frame and determine 3D coordinates and attribute values ​​of vertices in the mesh frame based on the decoded map (1165) and decoded auxiliary data (e.g., sampling rate, UV offsets, information identifying bounding vertices, etc.).

[0221] In some embodiments, to determine the UV coordinates of vertices within the region, a sampling rate (SR) of the region is determined according to syntax values ​​decoded from the bitstream (1145). u ,offset v ) are determined according to syntax values ​​decoded from the bitstream (1145).

[0222] In one example, the decoded map (1165) includes a decoded occupancy map. The mesh reconstruction module (1190) can determine the UV coordinates of the vertices corresponding to each occupancy point in a sampled region of the decoded occupancy map. For example, the coordinates (u i ,v i ), the mesh reconstruction module (1190) calculates the UV coordinates (U i ,V i ) can be determined:

number

[0223] In another example, the decoded map (1165) does not include a decoded occupancy map. The mesh reconstruction module (1190) can determine an inferred region in the inferred occupancy map according to the boundary vertices of the region. The UV coordinates of vertices corresponding to occupancy points in the inferred region can be directly inferred by the location of the occupancy point in the region of the inferred occupancy map. For example, an occupancy point in the inferred occupancy map may be directly inferred based on a specific UV coordinate (U s ,V s ) and has a position defined by specific UV coordinates (U s ,V s ) are the UV coordinates of the corresponding vertex in the mesh frame.

[0224] In some embodiments, for each occupancy point on the occupancy map (e.g., decoded occupancy map, inferred occupancy map), the mesh reconstruction module (1190) can restore the vertices on the mesh frame and determine corresponding geometry values ​​(e.g., 3D coordinates) and attribute values ​​according to the corresponding positions in the decoded geometry map and the decoded attribute map.

[0225] In some embodiments, the sampling rate (SR) of the region is determined according to syntax values ​​decoded from the bitstream (1145) to derive corresponding positions in the geometry map and attribute map of vertices in the region. u ,offset v ) are determined according to syntax values ​​decoded from the bitstream (1145).

[0226] In one example, the decoded map (1165) includes a decoded occupancy map. i ,v i For each occupied point with u, we define its corresponding position in the decoded geometry map and the decoded attribute map as (u i ,v i). For example, the sampling rate applied to the occupancy map to obtain the sampled occupancy map matches the sampling rate applied to the geometry map (to obtain the sampled geometry map) and the attribute map (to obtain the sampled attribute map). The decoded occupancy map corresponds to the sampled occupancy map, the decoded geometry map corresponds to the sampled geometry map, and the decoded attribute map corresponds to the sampled attribute map. Thus, an occupancy point in the decoded occupancy map can have a corresponding point with the same coordinates in the decoded geometry map and the decoded attribute map.

[0227] In another example, the decoded map (1165) does not include a decoded occupancy map. The mesh reconstruction module (1190) can determine an inferred region in the inferred occupancy map according to the boundary vertices of the region. i, V i For each occupied point with , the corresponding location in the geometry map and the attribute map can be derived by equations (6) and (7):

number

[0228] In some embodiments, the mesh reconstruction module (1190) can infer connectivity information between vertices by inferring from occupied positions, hi some embodiments, connectivity information can be explicitly signaled in the bitstream (1145).

[0229] FIG. 14 shows a flow chart outlining a process (1400) according to an embodiment of the disclosure. The process (1400) may be used during mesh encoding. In various embodiments, the process (1400) is performed by a processing circuit. In some embodiments, the process (1400) is implemented with software instructions, and thus, the processing circuit performs the process (1400) when the processing circuit executes the software instructions. The process starts at (S1401) and proceeds to (S1410).

[0230] At (S1410), a mesh frame data structure having polygons representing a surface of an object is received. The mesh frame data structure includes a UV atlas that associates vertices of the mesh frame with UV coordinates of the UV atlas.

[0231] At (S1420), a sampling rate of each of the regions of the mesh frame is determined according to a characteristic of each of the regions of the mesh frame.

[0232] At (S1430), the sampling rates of each of the regions of the mesh frame are applied to the UV atlas to determine sampling positions on the UV atlas.

[0233] At (S1440), one or more sampled two-dimensional (2D) maps of the mesh frame are generated according to the sampling locations on the UV atlas.

[0234] At (S1450), one or more sampled 2D maps are encoded into a bitstream.

[0235] To determine the respective sampling rates for the regions of the mesh frame, in some examples, a first sampling rate for a first region of the mesh frame is determined according to a requirement that limits the number of first sampling positions in the first region. In one example, the first sampling rate is determined to achieve an oversampling ratio (OR) closest to a target value. The OR is the ratio between the number of first sampling positions and the number of vertices originally in the first region of the mesh frame.

[0236] In another example, the first sampling rate is initialized to be relatively small and adjusted until an oversampling ratio (OR) is less than a first threshold, where OR is the ratio between the number of the first sampling locations and the number of vertices that were originally in the first region of the mesh frame.

[0237] In another example, the first sampling rate is adjusted until an oversampling ratio (OR) is less than a first threshold and greater than a second threshold, where OR is the ratio between the number of first sampling locations and the number of vertices originally in the first region of the mesh frame.

[0238] In some examples, the sampled 2D map of one or more sampled 2D maps includes a sampled region having sampled points that correspond to sampled locations on the UV atlas. In one example, a sampled location is determined to be occupied if it is within a polygon, and attributes of the sampled points in the sampled 2D map that correspond to the sampled location are determined according to attributes of the vertices of the polygon.

[0239] In some examples, to form one or more sampled 2D maps, Sampled regions corresponding to regions of the mesh can be determined based on the respective sampling rates of the regions of the mesh. The sampled regions are then arranged in a non-overlapping configuration to form a sampled map. In one example, the sampled regions are arranged one by one. In one example, a bounding box for the sampled region is determined, and the sampled region is arranged such that one or more corners of the bounding box do not overlap with other sampled regions already arranged.

[0240] For example, to arrange the sampling areas in a non-overlapping configuration, after the subset of the sampling areas is arranged in a non-overlapping configuration, for the current sampling area, an initial arrangement position is determined according to the sampling rate of the current sampled area, and then it is determined whether the current sampled area at the initial arrangement position overlaps with the subset of the sampled areas.

[0241] In some examples, an offset to the initial placement position is determined as a function of a current sampled region at the initial placement position overlapping with the subset of the sampled region, the offset enabling the current sampled region to not overlap with the subset of the sampled region.

[0242] In some examples, the non-overlapping configuration includes a minimum distance requirement between sampled regions.

[0243] In some embodiments, the sampling rates associated with each region are encoded by various techniques. In one example, a value of the first sampling rate of the first region is encoded directly into the bitstream. In another example, a first index is encoded into the bitstream, the first index indicating a selection of the first sampling rate from a set of sampling rates. In another example, a syntax indicating a predictor for predicting the first sampling rate from a set of pre-established sampling rates is encoded into the bitstream. In another example, a syntax indicating a predictor for predicting the first sampling rate from a sampling rate previously used for the encoded region of the mesh frame is encoded into the bitstream. In another example, a syntax indicating a predictor for predicting the first sampling rate from a sampling rate previously used for the encoded region of another mesh frame encoded prior to the mesh frame is encoded into the bitstream.

[0244] In some embodiments, the encoder side can decide to signal or predict a first sampling rate associated with the first region and encode a first syntax value indicative of the decision into the bitstream. In one example, in response to the decision to signal the first sampling rate, a value of the first sampling rate is directly encoded into the bitstream. In another example, in response to the decision to signal the first sampling rate, an index is encoded into the bitstream, the index indicating a selection of the first sampling rate from a set of sampling rates.

[0245] In some examples, in response to the decision to predict the first sampling rate, a second syntax is encoded into the bitstream. The second syntax indicates a predictor to use to predict the first sampling rate. Further, in one example, a prediction residual is encoded into the bitstream. The prediction residual is a difference between the first sampling rate and a sampling rate of the predictor.

[0246] In some examples, a base sampling rate is encoded into the bitstream. The base sampling rate can be encoded at any suitable level, regardless of whether adaptive sampling is used. The base sampling rate can be used as a predictor in one example.

[0247] In some examples, a control flag is encoded to indicate when application of adaptive 2D atlas sampling to mesh frames is used.

[0248] In some examples, a first UV offset associated with a first region of a mesh frame is determined. The first UV offset is applied to a first sampling area corresponding to the first region to avoid overlap with other sampling areas. One or more syntaxes can be encoded into the bitstream, and the one or more syntaxes can indicate the first UV offset. In one example, a syntax having a value of the first UV offset is encoded directly into the bitstream. In another example, a syntax indicating a predictor that predicts the first UV offset based on a set of pre-established UV offsets is encoded into the bitstream. In another example, a syntax indicating a predictor that predicts the first UV offset based on a UV offset previously used for the encoded region of the mesh frame is encoded into the bitstream. In another example, a syntax indicating a predictor that predicts the first UV offset based on a UV offset previously used for the encoded region of another mesh frame encoded prior to the mesh frame is encoded into the bitstream.

[0249] In some examples, syntax indicating a predictor predicting a first UV offset into the bitstream is encoded into the bitstream, and a prediction residual is encoded into the bitstream, the prediction residual being the difference between the first UV offset and the UV offset of the predictor.

[0250] Thereafter, the process proceeds to (S1499) and ends.

[0251] The process (1400) may be adapted as appropriate. Step(s) of the process (1400) may be modified and / or omitted. Additional step(s) may be added. Any suitable order of implementation may be used.

[0252] FIG. 15 shows a flow chart outlining a process (1500) according to one embodiment of the present disclosure. The process (1500) may be used during a mesh decoding process. In various embodiments, the process (1500) is performed by a processing circuit. In some embodiments, the process (1500) is implemented with software instructions, and thus, when the processing circuit executes the software instructions, the processing circuit performs the process (1500). The process starts at (S1501) and proceeds to (S1510).

[0253] At (S1510), a 2D plurality of maps is decoded from a bitstream carrying a mesh frame, the mesh frame representing a surface of an object having polygons, the 2D plurality of maps including at least a decoded geometry map and a decoded attribute map, and having adaptive 2D atlas sampling applied.

[0254] At least a first sampling rate and a second sampling rate are determined according to a syntax of the bitstream, the first sampling rate being applied to a first region of the mesh frame during adaptive 2D atlas sampling, and the second sampling rate being applied to a second region of the mesh frame during adaptive 2D atlas sampling, the first sampling rate being different from the second sampling rate.

[0255] At (S1530), based on the multiple maps, at least a first vertex of the mesh frame is reconstructed according to a first sampling rate, and a second vertex of the mesh frame is reconstructed according to a second sampling rate.

[0256] In some examples, the multiple maps include a decoded occupancy map to which adaptive 2D atlas sampling has been applied. To reconstruct at least a first vertex according to a first sampling rate, initial UV coordinates of an occupied point in a first sampled region of the decoded occupancy map corresponding to a first region of the mesh frame are determined, the occupied point corresponding to the first vertex. Then, a restored UV coordinate of the first vertex is determined based on the initial UV coordinate and the first sampling rate. In one example, a first UV offset of the first sampled region is determined according to a syntax from the bitstream. The restored UV coordinate of the first vertex is determined based on the initial UV coordinate, the first sampling rate and the first UV offset. Further, in one example, a restored 3D coordinate of the first vertex is determined according to a pixel in the decoded geometry map of the initial UV coordinate, and a restored attribute value of the first vertex is determined according to a pixel in the decoded attribute map of the initial UV coordinate.

[0257] In some embodiments, the plurality of maps lack an occupancy map. Information indicating a first bound vertex of the first region is decoded from the bitstream to reconstruct at least a first vertex according to the first sampling rate. A first occupied region of the occupancy map corresponding to the first region is extracted according to the first bound vertex. UV coordinates of an occupied point of the first occupied region are obtained, and the occupied point may correspond to the first vertex. The UV coordinates are converted to sampled UV coordinates according to at least the first sampling rate. Based on the plurality of maps, the first vertex is reconstructed according to the sampled UV coordinates.

[0258] In some examples, to reconstruct the first vertex, the restored 3D coordinates of the first vertex are determined according to pixels in the decoded geometry map at the sampled UV coordinates, and the restored attribute values ​​of the first vertex are determined according to pixels in the decoded attribute map at the sampled UV coordinates.

[0259] In some examples, to convert the UV coordinates to sampled UV coordinates, a first UV offset associated with the first region is decoded from the bitstream, and the UV coordinates are converted to sampled UV coordinates according to the first sampling rate and the first UV offset.

[0260] In some embodiments, at least the first sampling rate and the second sampling rate can be determined by various techniques. In one example, at least the first sampling rate and the second sampling rate values ​​are decoded directly from the bitstream. In another example, at least a first index and a second index are decoded from the bitstream, the first index indicating a selection of a first sampling rate from a set of sampling rates, and the second index indicating a selection of a second sampling rate from the set of sampling rates. In another example, the first sampling rate is predicted based on a set of pre-established rates. In another example, the first sampling rate is predicted based on a sampling rate previously used for the decoded region of the mesh frame. In another example, the first sampling rate is predicted based on a sampling rate previously used for the decoded region of another mesh frame decoded prior to the mesh frame.

[0261] In some embodiments, to determine the first sampling rate, a first syntax value indicating whether the first sampling rate is signaled or predicted is decoded from the bitstream. In one example, in response to the first syntax value indicating that the first sampling rate is signaled, a value of the first sampling rate is decoded directly from the bitstream. In another example, in response to the first syntax value indicating that the first sampling rate is signaled, an index is decoded from the bitstream. The index indicates a selection of the first sampling rate from the set of sampling rates.

[0262] In some examples, in response to the first syntax value indicating that the first sampling rate is predicted, a second syntax is decoded from the bitstream, the second syntax indicating a predictor to use to predict the first sampling rate. Further, in one example, a prediction residual is determined based on the syntax value decoded from the bitstream; and the first sampling rate is determined based on the predictor and the prediction residual.

[0263] In some examples, the base sampling rate is decoded from the bitstream, and at least the first sampling rate and the second sampling rate can be determined according to the base sampling rate. For example, the base sampling rate is used as a predictor.

[0264] In some examples, a control flag is decoded from the bitstream to indicate application of adaptive 2D atlas sampling to the mesh frame. The number of regions in the mesh frame and the sampling rate for each region are then determined, for example, based on syntax in the bitstream.

[0265] In some examples, a first UV offset associated with the first region is determined from the bitstream, and a first vertex of the mesh frame is reconstructed according to the first sampling rate and the first UV offset based on the multiple maps. In one example, a value of the first UV offset is decoded directly from the bitstream to determine the first UV offset associated with the first region. In another example, the first UV offset is predicted based on a set of pre-established UV offsets. In another example, the first UV offset is predicted based on a UV offset previously used for the decoded region of the mesh frame. In another example, the first UV offset is predicted based on a UV offset previously used for the decoded region of another mesh frame that was decoded prior to the mesh frame.

[0266] In some embodiments, to determine a first UV offset associated with the first region, a first syntax value indicating whether the first UV offset is signaled or predicted is decoded from the bitstream. In one example, in response to the first syntax value indicating that the first UV offset is signaled, a value of the first UV offset is decoded directly from the bitstream. In one example, a sign of the first UV offset is predicted based on a comparison of the first sampling rate and the base sampling rate.

[0267] In another example, in response to the first syntax value indicating that the first UV offset is predicted, a second syntax is decoded from the bitstream, the second syntax indicating a predictor to use to predict the first UV offset. Further, a prediction residual is determined based on the syntax value decoded from the bitstream, and the first UV offset is determined based on the predictor and the prediction residual.

[0268] Thereafter, the process proceeds to (S1599) and ends.

[0269] The process (1500) may be adapted as appropriate. Step(s) of the process (1500) may be modified and / or omitted. Additional step(s) may be added. Any suitable order of implementation may be used.

[0270] The techniques disclosed in this disclosure may be used separately or in combination in any order. Furthermore, each technique (e.g., method, embodiment), encoder, and decoder may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In some examples, the one or more processors execute a program stored in a non-transitory computer-readable medium.

[0271] 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 16 illustrates a computer system (1600) suitable for implementing certain embodiments of the disclosed subject matter.

[0272] The computer software can be coded using any suitable machine code or computer language that can be subject to mechanisms such as assembly, compilation, linking, etc. to generate code including instructions that can be executed by one or more central processing units (CPUs), graphics processing units (GPUs), etc., directly, or through interpretation, microcode execution, etc.

[0273] The instructions may be executed in various types of computers or components thereof including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, and the like.

[0274] 16 with respect to computer system (1600) 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 the embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement regarding any one or combination of components described in the exemplary embodiment of computer system (1600).

[0275] The computer system (1600) may include certain human interface input devices. Such human interface input devices may be responsive to input by one or more users through, for example, tactile input (e.g., keyboard, swipes, dataglove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). Human interface devices may also be used to capture certain media that are not necessarily directly related to conscious input by a person, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images obtained from a still camera), video (e.g., two-dimensional video, three-dimensional video including stereoscopic video), and the like.

[0276] The input human interface devices may include one or more of a keyboard (1601), a mouse (1602), a trackpad (1603), a touch screen (1610), a data glove (not shown), a joystick (1605), a microphone (1606), a scanner (1607), and a camera (1608) (only one of each is depicted).

[0277] The computer system (1600) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the user's senses, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touch screen (1610), data gloves (not shown), or joystick (1605), although there may be haptic feedback devices that do not function as input devices), audio output devices (e.g., speakers (1609), headphones (not shown)), visual output devices (e.g., screens (1610) including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capability, each with or without haptic feedback capability, some of which may output two-dimensional visual output or output in more than three dimensions by means of stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), and printers (not shown).

[0278] The computer system (1600) may also include human accessible storage devices and their associated media, such as CD / DVD ROM / RW (1620) along with CD / DVD or similar media (1621), thumb drives (1622), removable hard disks or solid state drives (1623), legacy magnetic media such as tapes and floppy disks (not shown), dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), and the like.

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

[0280] The computer system (1600) may also include an interface (1654) to one or more communication networks (1655). The networks may be, for example, wireless, wireline, optical. The networks may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wireline or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial networks including CAN bus, etc. Certain networks generally require an external network interface adapter attached to a particular general purpose data port or peripheral bus (1649) (e.g., a USB port of the computer system (1600)). Others are generally built into the core of the computer system (1600) by attachment to a system bus as described below (e.g., an Ethernet network to a PC computer system, or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1600) can communicate with other entities. Such communications can be one-way receive-only (e.g., broadcast TV), one-way transmit-only (e.g., a CAN bus to a specific CAN bus device), or bidirectional to other computer systems, for example, using local or wide area digital networks. Specific protocols or protocol stacks can be used in each of the networks and network interfaces as described above.

[0281] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to the core (1640) of the computer system (1600).

[0282] The core (1640) may include one or more central processing units (CPUs) (1641), graphics processing units (GPUs) (1642), dedicated programmable processing units in the form of field programmable gate areas (FPGAs) (1643), hardware accelerators (1644) for specific tasks, graphics adapters (1650), etc. These devices may be connected through a system bus (1648), along with read only memory (ROM) (1645), random access memory (RAM) (1646), internal mass storage devices such as internal non-user accessible hard drives, SSDs, etc. (1647). In some computer systems, the system bus (1648) 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 to the core's system bus (1648) directly or through a peripheral bus (1649). Architectures for peripheral buses include PCI, USB, etc.

[0283] The CPU (1641), GPU (1642), FPGA (1643), and accelerator (1644) can execute certain instructions that, in combination, can constitute the above computer code. The computer code can be stored in a ROM (1645) or a RAM (1646). Temporary data can also be stored in the RAM (1646), while persistent data can be stored, for example, in an internal mass storage device (1647). Rapid storage and retrieval from any of the memory devices can be made possible by the use of a cache memory, which can be closely associated with one or more of the CPU (1641), GPU (1642), mass storage device (1647), ROM (1645), RAM (1646), etc.

[0284] The computer-readable medium can bear computer code for performing various computer-implemented operations. The medium and computer code can be those specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those of ordinary skill in the computer software art.

[0285] By way of example, and not by way of limitation, a computer system having the architecture (1600), and in particular the core (1640), can provide functionality as a result of a processor(s) (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be media associated with the user-accessible mass storage devices introduced above, in addition to specific storage of the core (1640) that is non-transitory in nature, such as the core's internal mass storage (1647) or ROM (1645). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (1640). The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core (1640), and in particular the processors therein (including CPUs, GPUs, FPGAs, etc.) to perform certain processes or certain portions of certain processes described herein, including defining data structures stored in RAM (1646) and modifying such data structures according to the software-defined processes. Additionally or alternatively, the computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator (1644)) that may operate in place of or in conjunction with software to perform certain processes or certain portions of certain processes described herein. References to software may encompass logic, and vice versa, where appropriate. References to computer-readable media may encompass circuitry (e.g., integrated circuits (ICs)) that store software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any appropriate combination of hardware and software.

[0286] While this disclosure has described several non-limiting exemplary embodiments, there are modifications, permutations, and various substitute equivalents that are within the scope of this disclosure. It is thus recognized 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 disclosure and are therefore within its spirit and scope.

Claims

1. A method for encoding mesh compression, executed by one or more processors, comprising: receiving a data structure of a mesh frame having polygons representing a surface of an object, the data structure of the mesh frame including a UV atlas relating vertices of the mesh frame to UV coordinates in a UV atlas; determining a sampling rate for each of the regions of the mesh frame according to a characteristic of each of the regions of the mesh frame; applying the respective sampling rates of the regions of the mesh frame to the UV atlas to determine sampling locations on the UV atlas; generating one or more sampled two-dimensional (2D) maps of the mesh frame according to the sampling locations on the UV atlas; encoding the one or more sampled 2D maps into a bitstream; Including, The step of determining the sampling rate for each of the regions of the mesh frame comprises: determining a first sampling rate for the first region of the mesh frame according to a requirement limiting a number of first sampling locations in the first region; method.

2. The step of determining the first sampling rate of the first region of the mesh frame comprises: determining the first sampling rate to achieve an oversampling ratio (OR) closest to a target value, the OR being a ratio between a number of the first sampling locations and a number of vertices originally in the first region of the mesh frame; The method of claim 1.

3. The step of determining the first sampling rate of the first region of the mesh frame comprises: adjusting the first sampling rate until an oversampling ratio (OR) is less than a first threshold, the OR being a ratio between a number of the first sampling locations and a number of vertices originally in the first region of the mesh frame; The method of claim 1.

4. The step of determining the first sampling rate of the first region of the mesh frame comprises: adjusting the first sampling rate until an oversampling ratio (OR) is less than a first threshold and greater than a second threshold, the OR being a ratio between a number of the first sampling locations and a number of vertices originally in the first region of the mesh frame; The method of claim 1.

5. A sampled 2D map of the one or more sampled 2D maps includes sampled regions with sampled points corresponding to the sampling locations on the UV atlas, the method further comprising: determining that the sampling location is occupied in response to the sampling location being within a polygon; determining attributes of sampled points in the sampled 2D map corresponding to the sampling locations according to attributes of the vertices of the polygon; Including, The method of claim 1.

6. The step of forming the one or more sampled 2D maps further comprises: forming a sampled region corresponding to the region of the mesh frame based on the respective sampling rates of the region of the mesh frame; arranging the sampled regions in a non-overlapping configuration to form a sampled map; Including, The method of claim 1.

7. The step of arranging the sampled regions in the non-overlapping configuration further comprises: After the subsets of sampled regions are arranged in the non-overlapping configuration, determining an initial placement position for a current sampled region according to a sampling rate of the current sampled region; determining whether the current sampled area at the initial placement location overlaps with the subset of the sampled area; Including, The method according to claim 6.

8. determining an offset to the initial placement location in response to the current sampled area at the initial placement location overlapping with the subset of the sampled area, the offset enabling the current sampled area to not overlap with the subset of the sampled area. The method according to claim 7.

9. the non-overlapping configuration includes a minimum distance requirement between the sampled regions; The method according to claim 6.

10. A method for encoding mesh compression, executed by one or more processors, comprising: receiving a data structure of a mesh frame having polygons representing a surface of an object, the data structure of the mesh frame including a UV atlas relating vertices of the mesh frame to UV coordinates in a UV atlas; determining a sampling rate for each of the regions of the mesh frame according to a characteristic of each of the regions of the mesh frame; applying the respective sampling rates of the regions of the mesh frame to the UV atlas to determine sampling locations on the UV atlas; generating one or more sampled two-dimensional (2D) maps of the mesh frame according to the sampling locations on the UV atlas; encoding the one or more sampled 2D maps into a bitstream; Including, The method comprises: encoding a first sampling rate value of a first region directly into the bitstream; encoding a first index into the bitstream, the first index indicating a selection of the first sampling rate from a set of sampling rates; encoding syntax indicating a predictor for predicting the first sampling rate from a set of pre-established sampling rates; encoding syntax indicative of a predictor that predicts the first sampling rate from a previously used sampling rate for the encoded region of the mesh frame; and encoding syntax indicating a predictor that predicts the first sampling rate from a sampling rate previously used for an encoded region in another mesh frame that was encoded prior to the mesh frame; Further comprising at least one of: method.

11. A method for encoding mesh compression, executed by one or more processors, comprising: receiving a data structure of a mesh frame having polygons representing a surface of an object, the data structure of the mesh frame including a UV atlas relating vertices of the mesh frame to UV coordinates in a UV atlas; determining a sampling rate for each of the regions of the mesh frame according to a characteristic of each of the regions of the mesh frame; applying the respective sampling rates of the regions of the mesh frame to the UV atlas to determine sampling locations on the UV atlas; generating one or more sampled two-dimensional (2D) maps of the mesh frame according to the sampling locations on the UV atlas; encoding the one or more sampled 2D maps into a bitstream; Including, The method comprises: making a decision to signal or predict a first sampling rate associated with a first region; and encoding a first syntax value indicative of said determination; Further comprising: method.

12. In response to the determination to signal the first sampling rate, the method includes: encoding the first sampling rate value directly into the bitstream; and encoding an index into the bitstream, the index indicating a selection of the first sampling rate from a set of sampling rates; at least one of The method of claim 11.

13. In response to the determining to predict the first sampling rate, the method includes: encoding a second syntax into the bitstream, the second syntax indicating a predictor to use to predict the first sampling rate. The method of claim 11.

14. encoding a prediction residual into the bitstream, the prediction residual being the difference between the first sampling rate and a sampling rate of the predictor. The method of claim 13.

15. further comprising the step of encoding a base sampling rate into the bitstream. The method of claim 1.

16. encoding a control flag indicating whether adaptive 2D atlas sampling is enabled or disabled; The method of claim 1.

17. determining at least a first UV offset associated with a first region of the mesh frame, the first UV offset being applied to a first sampled region corresponding to the first region to avoid overlap with other sampled regions; encoding syntax indicating the first UV offset into the bitstream; Further comprising: The method of claim 1.

18. The step of encoding the syntax further includes: encoding the syntax having the value of the first UV offset into the bitstream; encoding the syntax indicating a predictor for predicting the first UV offset based on a set of pre-established UV offsets; encoding the syntax indicating a predictor that predicts the first UV offset based on a previously used UV offset for an encoded region of the mesh frame; and encoding the syntax indicating a predictor for predicting the first UV offset based on a UV offset previously used for an encoded region in another mesh frame that was encoded prior to the mesh frame; At least one of:

20. The method of claim 17.

19. 19. An apparatus for encoding a mesh compression, said apparatus having processing circuitry configured to perform the method of any one of claims 1 to 18.

Citation Information

Patent Citations

  • Point Cloud Processing

    JP2021530890A

  • Point cloud encoding method and device, point cloud decoding method and device, and storage medium

    JP2022526289A

  • Video-based mesh compression

    JP2023544618A

  • Adaptive selection of occupancy map precision

    US20200221125A1