Adaptive sampling method and apparatus for mesh compression by decoder - Patents.com

Adaptive 2D atlas sampling for mesh coding addresses the challenge of efficient 3D mesh data compression by applying varying sampling rates to different regions, improving data storage and transmission efficiency.

JP7604670B2Active Publication Date: 2024-12-23TENCENT AMERICA LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023547799
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-09-14
Filing Date
2022-09-16
Publication Date
2024-12-23
Estimated Expiration
2042-09-16

AI Technical Summary

Technical Problem

Existing technologies face challenges in efficiently compressing and decompressing three-dimensional (3D) mesh data, particularly in terms of data storage and transmission, due to the large amount of data required for immersive experiences.

Method used

The use of adaptive 2D atlas sampling techniques for mesh coding, where different sampling rates are applied to different regions of a mesh frame based on syntax signaled in the bitstream, allowing for efficient reconstruction of vertices and attributes using processing circuitry.

Benefits of technology

This approach reduces the data required for 3D mesh representation, enhancing data storage and transmission efficiency while maintaining immersive quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007604670000011
    Figure 0007604670000011
  • Figure 0007604670000012
    Figure 0007604670000012
  • Figure 0007604670000013
    Figure 0007604670000013
Patent Text Reader

Abstract

The processing circuit decodes a plurality of 2D maps from a bitstream carrying a mesh frame. The mesh frame represents a surface of an object having polygons. The plurality of maps includes a decoded geometry map and a decoded attribute map to which adaptive 2D atlas sampling is applied. The processing circuit determines at least a first sampling rate and a second sampling rate according to a syntax signaled in the bitstream. During the adaptive 2D atlas sampling, the first sampling rate is applied to a first region of the mesh frame and the second sampling rate is applied to a second region of the mesh frame. The processing circuit reconstructs at least first vertices of the mesh frame with the first sampling rate and second vertices of the mesh frame with the second sampling rate based on the plurality of maps.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] This disclosure describes embodiments generally related to mesh coding.

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

[0003] The background discussion provided herein is intended to generally indicate the context of the disclosure. Works of the presently named inventors, to the extent described in this Background section, and aspects of the description that may not otherwise be admitted as prior art at the time of filing, are not admitted expressly or impliedly as prior art to this disclosure.

[0004] Various techniques have been developed to capture and represent the world, such as objects in the world, environments in the world, etc., in three-dimensional (3D) space. The 3D representation of the world enables more immersive 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, the apparatus for mesh coding includes a processing circuit. The processing circuit decodes a two-dimensional (2D) plurality of maps from a bitstream carrying a mesh frame. The mesh frame represents a surface of an object having polygons. The 2D plurality of maps includes at least a decoded geometry map and a decoded attribute map to which adaptive 2D atlas sampling is applied. The processing circuit determines at least a first sampling rate and a second sampling rate according to a syntax signaled in the bitstream. The first sampling rate is applied to a first region of the mesh frame during adaptive 2D atlas sampling, and the second sampling rate is applied to a second region of the mesh frame during adaptive 2D atlas sampling. The first sampling rate is different from the second sampling rate. The processing circuit reconstructs at least a first vertex of the mesh frame with the first sampling rate and a second vertex of the mesh frame with the second sampling rate based on the plurality of maps.

[0006] In some embodiments, the multiple maps include a decoded occupancy map to which adaptive 2D atlas sampling has been applied, and the processing circuit obtains initial UV coordinates of an occupancy point in a first sampling region of the decoded occupancy map corresponding to a first region of the mesh frame, the occupancy point corresponding to a first vertex, and determines a recovered UV coordinate for the first vertex based on the initial UV coordinate and the first sampling rate. In some examples, the processing circuit decodes a first UV offset of the first sampling region from the bitstream, and determines a recovered UV coordinate for the first vertex based on the initial UV coordinate, the first sampling rate, and the first UV offset. In one example, the processing circuit determines a recovered 3D coordinate for the first vertex according to a pixel in the decoded geometry map with the initial UV coordinate, and determines a recovered attribute value for the first vertex according to a pixel in the decoded attribute map with the initial UV coordinate.

[0007] In some examples, the plurality of maps lacks an occupancy map, and The processing circuit decodes information from the bitstream indicating a first bound vertex for a first region. The processing circuit infers a first occupancy region in an occupancy map corresponding to the first region according to the first bound vertex, and obtains UV coordinates of an occupancy point in the first occupancy region. The occupancy point corresponds to a first vertex. The processing circuit converts the UV coordinates into sampled UV coordinates according to at least a first sampling rate, and reconstructs the first vertex according to the sampled UV coordinates based on the multiple maps. In one example, the processing circuit determines a recovered 3D coordinate for the first vertex according to a pixel in the decoded geometry map at the sampled UV coordinate, and determines a recovered attribute value for the first vertex according to a pixel in the decoded attribute map at the sampled UV coordinate.

[0008] To convert the UV coordinates to sampled UV coordinates, in some examples, the processing circuitry decodes a first UV offset associated with the first region from the bitstream and converts the UV coordinates to sampled UV coordinates according to the first sampling rate and the first UV offset.

[0009] In one example, the processing circuit decodes at least the first and second sampling rate values ​​directly from the bitstream. In another example, the processing circuit decodes at least a first index and a second index 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 processing circuit predicts the first sampling rate based on a set of pre-established rates. In another example, the processing circuit predicts the first sampling rate based on a sampling rate previously used for a decoded region of the mesh frame. In another example, the processing circuit predicts the first sampling rate based on a sampling rate previously used for a decoded region in another mesh frame decoded prior to the mesh frame.

[0010] In some examples, the processing circuit decodes a first syntax value indicating whether the first sampling rate is signaled or predicted. In response to the first syntax value indicating that the first sampling rate is signaled, in one example, the processing circuit decodes a value of the first sampling rate directly from the bitstream or decodes an index from the bitstream. The index can indicate a selection of the first sampling rate from a set of sampling rates. In response to the first syntax value indicating that the first sampling rate is predicted, in one example, the processing circuit decodes a second syntax from the bitstream, the second syntax indicating a predictor to use to predict the first sampling rate. Furthermore, in one example, the processing circuit determines a prediction residual based on the syntax value decoded from the bitstream, and determines the first sampling rate based on the predictor and the prediction residual.

[0011] In some examples, the processing circuit decodes the base sampling rate from the bitstream and determines at least the first sampling rate and the second sampling rate according to the base sampling rate.

[0012] In some examples, the processing circuitry decodes a control flag indicating enablement of adaptive 2D atlas sampling, determines the number of regions in the mesh frame, and determines a sampling rate for each of the regions.

[0013] In some examples, the processing circuit determines a first UV offset associated with the first region from the bitstream and reconstructs the first vertices of the mesh frame according to the first sampling rate and the first UV offset based on the multiple maps. In one example, the processing circuit decodes a value of the first UV offset directly from the bitstream. In another example, the processing circuit predicts the first UV offset based on a set of pre-defined UV offsets. In another example, the processing circuit predicts the first UV offset based on a UV offset previously used for the decoded region of the mesh frame. In another example, the processing circuit predicts the first UV offset based on a UV offset previously used for the decoded region in another mesh frame that was decoded prior to the mesh frame.

[0014] In some examples, the processing circuitry decodes a first syntax value indicating whether the first UV offset is signaled or predicted. In response to the first syntax value indicating the first UV offset is signaled, in one example the processing circuitry decodes the value of the first UV offset directly from the bitstream and infers the sign of the first UV offset based on a comparison of the first sampling rate to the base sampling rate.

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

[0016] Aspects of the present disclosure also provide a non-transitory computer-readable medium having stored thereon 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]

[0017] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1] FIG. 1 illustrates a block diagram of a communication system in accordance with some examples. [Diagram 2] FIG. 2 illustrates a block diagram of a streaming system in accordance with some examples. [Diagram 3] FIG. 3 shows a block diagram of an encoder for encoding point cloud frames in some examples. [Figure 4] FIG. 4 illustrates a block diagram of a decoder for decoding a compressed bitstream corresponding to a point cloud frame in some examples. [Diagram 5] FIG. 5 illustrates a block diagram of a video decoder in some examples. [Figure 6] FIG. 6 illustrates a block diagram of a video encoder in some examples. [Figure 7] FIG. 7 shows a block diagram of an encoder for encoding point cloud frames in some examples. [Figure 8] FIG. 8 illustrates a block diagram of a decoder for decoding a compressed bitstream carrying point cloud frames in some examples. [Figure 9] FIG. 9 shows a diagram illustrating the mapping of a mesh to an atlas in some examples. [Figure 10] FIG. 10 shows a diagram illustrating downsampling in some examples. [Figure 11] FIG. 11 shows a diagram of a framework for mesh compression according to some embodiments of the present disclosure. [Figure 12] FIG. 12 shows an illustration of adaptive sampling in some examples. [Figure 13] FIG. 13 shows an illustration of adaptive sampling in some examples. [Figure 14] FIG. 14 shows a flow chart outlining an example process in some examples. [Figure 15] FIG. 15 shows a flow chart outlining an example process in some examples. [Figure 16] FIG. 16 is a schematic diagram of a computer system according to some examples. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

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

[0019] 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. As an example, a baby's first steps can be captured on one continent, and media technology allows grandparents to enjoy an immersive experience viewing (and possibly interacting) with the baby on another continent. According to one aspect of the present 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.

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

[0021] A point cloud can generally refer to a set of points in 3D space, each 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.

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

[0023] 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 and 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 thought of as points in a point cloud and compressed using the PCC codec.

[0024] 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 settings, and can consist of thousands to billions of points to realistically represent the reconstructed scene or object. A patch can generally refer to a contiguous subset of the surface described by the point cloud. In one example, a patch contains points with surface normal vectors that deviate from each other by less than a threshold value.

[0025] 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 pure geometry-based approach that directly encodes 3D geometry and does not have much in common with video coding, and V-PCC is heavily based on video coding. For example, V-PCC can map points of a 3D cloud to pixels (images) of a 2D grid. 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.

[0026] According to one aspect of the present disclosure, the V-PCC scheme can compress the geometry, occupancy, and texture of the point cloud as three separate video sequences using an existing video codec. 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.

[0027] FIG. 1 illustrates a block diagram of a communication system 100 in some examples. The communication system 100 includes, for example, a plurality of terminal devices capable of communicating with each other via a network 150. For example, the communication system 100 includes a pair of terminal devices 110 and 120 interconnected via the network 150. In the example of FIG. 1, a first pair of terminal devices 110 and 120 can perform unidirectional transmission of point cloud data. For example, the terminal device 110 can 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 can 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 may be common, such as in media service applications.

[0028] 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. Embodiments of the present disclosure apply to laptop computers, tablet computers, smart phones, 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, wired and wireless communication networks. Network (150) may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, the Internet, and the like.

[0029] 2 shows 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 applied to other point cloud-enabled applications as well, such as 3D telepresence applications, virtual reality applications, etc.

[0030] The streaming system (200) can include a capture subsystem (213). The capture subsystem (213) can 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 an uncompressed point cloud in software, etc., to generate an uncompressed point cloud (202). In one example, the point cloud (202) includes points captured by a three-dimensional camera. The point cloud (202) is shown in bold to emphasize the high amount of data compared to a compressed point cloud (204) (compressed point cloud bitstream). The compressed point cloud (204) can be generated by an electronic device (220) that includes an encoder (203) coupled to the point cloud source (201). The encoder (203) can include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The compressed point cloud (204) (or compressed point cloud bitstream (204)), represented as a thin line to emphasize its lower amount of data when compared to the point cloud stream (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 retrieve 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 of the compressed point cloud (207) and creates an outgoing stream of a reconstructed point cloud (211) that can be rendered on a rendering device (212).

[0031] Note that electronic devices 220 and 230 may include other components (not shown). For example, electronic device 220 may include a decoder (not shown), and electronic device 230 may also include an encoder (not shown).

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

[0033] 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).

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

[0035] 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).

[0036] According to one aspect of the disclosure, the V-PCC encoder (300) converts the 3D point cloud frames into a picture-based representation along with some metadata (e.g., occupancy map and patch information) that is used to convert the compressed point cloud back into a decompressed point cloud. In some examples, the V-PCC encoder (300) converts the 3D point cloud frames into a geometry image, a texture image, and an occupancy map, and can then encode the geometry image, texture image, and occupancy map into a bitstream using video coding techniques. In general, a geometry image is a 2D image that has 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 that has 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 that has pixels filled with values ​​that indicate whether a patch is occupied or not occupied.

[0037] 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 overlap, so that each patch is described by a depth field relative to a plane in 2D space. In some implementations, the patch generation module (306) aims to decompose the point cloud into a minimum number of patches with smooth boundaries, while also minimizing the reconstruction error.

[0038] 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.

[0039] 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.

[0040] 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) use the 3D to 2D mapping calculated during the packing process to store the geometry and texture of the point cloud as images. To more easily 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 by a W×H monochromatic frame in YUV420-8 bit format. To generate the texture image, the texture generation procedure uses the reconstructed / smoothed geometry to calculate the colors associated with the resampled points.

[0041] 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 whether each cell of the grid belongs to empty space or to the point cloud. In one example, the occupancy map can use binary information that describes, for each pixel, whether the pixel is padded or not. In another example, the occupancy map can use binary information that describes, for each block of pixels, whether the block of pixels is padded or not.

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

[0043] Note 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) can fill the empty space (referred to as padding) to generate an image frame suitable for 2D video and image codecs. Image padding can also be referred to as background filling, which can fill unused space with redundant information. In some instances, good background filling increases bitrate minimally while not introducing significant coding artifacts around patch boundaries.

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

[0045] In some examples, the smoothing module (336) is configured to generate a smoothed image of the reconstructed geometry image. The smoothed image can be provided to the 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 compensate for the distortion of the patch shape.

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

[0047] 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.

[0048] 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.

[0049] 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).

[0050] 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.

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

[0052] 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.

[0053] 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.

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

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

[0056] 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.

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

[0058] 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 compression modules (434) and (436) and the occupancy map compression module (438) can be configured similarly as the video decoder (510).

[0059] The video decoder (510) can include a parser (520) that reconstructs symbols (521) from a compressed picture, such as a coded video sequence. These symbol categories contain information used to manage the operation of the video decoder (510). The parser (520) can parse / entropy-decode a received coded video sequence. The coding of the coded video sequence can follow a video coding technique or standard and can follow a variety of principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) can extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups can include Group of Pictures (GOP), pictures, tiles, slices, macroblocks, Coding Units (CU), blocks, Transform Units (TU), Prediction Units (PU), etc. The parser (520) can also extract from coded video sequence information such as transform coefficients, quantizer parameter values, motion vectors, etc.

[0060] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory to produce symbols (521).

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

[0062] Beyond the functional blocks already mentioned, the video decoder (510) may be conceptually subdivided into several functional units, as described below. In a practical implementation operating under commercial constraints, many of these units will interact closely with each other and may be, at least partially, integrated with each other. However, for purposes of describing the disclosed technical subject matter, the following conceptual subdivision into functional units is adequate:

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

[0064] In some cases, the output samples of the scaler / 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) may, for example, buffer 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 scaler / inverse transform unit (551) on a sample-by-sample basis.

[0065] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to an inter-coded and 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) related to 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 prediction samples may be controlled by a motion vector and are 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), motion vector prediction mechanisms, etc. when sub-sample accurate motion vectors are used.

[0066] 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 controlled by parameters contained in the coded video sequence (also referred to as a 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 portion of the coded video sequence (in decoding order), as well as to previously reconstructed and loop filtered sample values.

[0067] The output of the loop filter unit (556) may 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.

[0068] Once a given 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 (e.g., by the parser (520)) as a reference picture, the current picture buffer (558) can become part of the reference picture memory (557), and a new current picture buffer can be reallocated before beginning reconstruction of the next coded picture.

[0069] The video decoder (510) may perform decoding operations according to a predefined video compression technique in a standard, such as ITU-T Rec. H.265. A coded video sequence may conform to the syntax specified by the video compression technique or standard being used in the sense that it conforms to both the syntax of the video compression technique or standard and the profile described in the video compression technique or standard. Specifically, a profile may select a given tool as the only tool available in the profile from all tools available in the video compression technique or standard. Compliance also requires 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 reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may be further limited in some cases through a Hypothetical Reference Decoder (HRD) specification and HRD buffer management metadata signaled in the coded video sequence.

[0070] 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).

[0071] A video encoder (603) can receive images, such as padded geometry images, padded texture images, and generate compressed images.

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

[0073] 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 pictures) 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 to that created by the (remote) decoder (since the compression between the symbols and the coded video bitstream is lossless in the video compression techniques contemplated in the disclosed subject matter). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Since the decoding of the symbol stream produces bit-exact results that are independent of the location of the decoder (local or remote), the contents in the reference picture memory (634) are also bit-exact between the local and remote encoders. In other words, the prediction part of the encoder "sees" exactly the same sample values ​​as the reference picture samples that the decoder would "see" if it used prediction during decoding. The basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, e.g., due to channel errors) is used in several related technologies as well.

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

[0075] During operation, in some examples, the source coder (630) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from the 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 pictures that may be selected as predictive references for the input picture.

[0076] The local video decoder (633) can 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) can advantageously be a lossless process. When the coded video data is decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence may be a replica of the source video sequence, typically with some errors. The local video decoder (633) replicates the decoding process performed by the video decoder on the reference pictures and may cause the reconstructed reference pictures to be stored in a reference picture cache (634). In this way, the video encoder (603) can locally store copies of reconstructed reference pictures that have common content as reconstructed reference pictures obtained by the far-end video decoder (without transmission errors).

[0077] A 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 predefined 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-by-pixel basis to find a suitable prediction reference. 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).

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

[0079] 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, arithmetic coding, etc.

[0080] The controller (650) can manage the operation of the video encoder (603). During coding, the controller (650) can assign each coded picture a predefined coded picture type, which can affect the coding technique that can be applied to the respective picture. For example, pictures may often be assigned one of the following picture types:

[0081] An Intra picture (I picture) can be coded and decoded without using any other picture in the sequence as a source of prediction. Some video codecs can use different kinds of Intra pictures, including, for example, Independent Decoder Refresh ("IDR"). Those skilled in the art are aware of these variations of I pictures and their respective uses and characteristics.

[0082] A predictive picture (P picture) is 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.

[0083] A bi-directionally predictive picture (B picture) is one that can be coded and decoded using intra- or inter-prediction, using up to two motion vectors and reference indices to predict the sample values ​​of each block. Similarly, a multiple-predictive picture can use more than one reference picture and associated metadata for the reconstruction of a single block.

[0084] A source picture is typically spatially subdivided into multiple sample blocks (e.g., 4×4, 8×8, 4×8, or 16×16 blocks of samples each) and may be coded on a block-by-block basis. 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 via spatial or temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.

[0085] The video encoder (603) may perform coding operations in accordance with a given video coding technique or standard, such as ITU-T Rec. H.26. In operation, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The coded video data may therefore conform to a syntax specified by the video coding technique or standard being used.

[0086] Video may be in the form of multiple source pictures (images) in a temporal order. Intra-picture prediction (often abbreviated as intra) exploits spatial correlations in a given picture, and inter-picture prediction exploits correlations (temporal or otherwise) between pictures. In one example, a particular picture being encoded / decoded, called the current picture, is divided into blocks. If a block of the current picture is similar to a reference block of a previously coded and still buffered reference picture in the video, the block of the current picture can be coded by a vector, called a motion vector. A motion vector points to a reference block in the reference picture, and can have a third dimension that identifies the reference picture when multiple reference pictures are used.

[0087] In some embodiments, a bi-prediction technique can be used in inter-picture prediction. According to the bi-prediction technique, two reference pictures are used, such as a first reference picture and a second reference picture, both of which are previous in decoding order (but may be past and future, respectively, in display order) to a current picture 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.

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

[0089] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed in units of blocks. For example, according to the HEVC standard, a picture in a sequence of video pictures is divided into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64×64 pixels, 3×32 pixels, or 16×16 pixels. Generally, a CTU contains three coding tree blocks (CTBs), which are one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree-divided into one or more coding units (CUs). For example, a CTU of 64×64 pixels can be divided 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. The CU is divided into one or more prediction units (PUs) according to temporal and / or spatial predictability. Typically, each PU includes one luma prediction block (PB) and two chroma PBs. In one embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Using a luma prediction block as an example of a prediction block, the prediction block includes a matrix of pixel values ​​(e.g., luma values), such as 8×8 pixels, 16×16 pixels, 8×16 pixels, 16×8 pixels, etc.

[0090] 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 duplicate point 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), an addition module (781), and a memory (790) for storing reconstructed attribute values.

[0091] As shown, an input point cloud (701) may be received at a G-PCC encoder (700). Locations (e.g., 3D coordinates) of the point cloud (701) are provided to a quantization module (710), which is configured to quantize the coordinates to generate quantized locations. A duplicate point removal module (712) is configured to receive the quantized locations and perform a filtering process to identify and remove duplicate points. An octree coding module (730) receives the filtered locations from the duplicate point removal 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).

[0092] 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 if multiple attribute values ​​are associated with each voxel. The attribute transfer process can be performed on the re-ordered points output from the octree coding 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 re-ordered points output from the octree encoding module (730) and reorganize the points into different LODs. The LOD information is provided to the attribute prediction module (750).

[0093] 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 then be obtained based on the original attribute values ​​received from the attribute transfer module (720) and the locally generated attribute predictions. If a candidate index is used in each attribute prediction process, an index corresponding to the selected prediction candidate can be provided to the arithmetic coding module (770).

[0094] 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, which is provided to the arithmetic coding module (770).

[0095] 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 the inverse of the quantization operation performed in 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 prediction from the attribute prediction module (750). Reconstructed attribute values ​​are generated by combining the reconstructed prediction residual and the attribute predictions and stored in the memory (790).

[0096] 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) conveying the compressed information can be generated. The bitstream (702) can be transmitted to a decoder that decodes the compressed bitstream, or otherwise provided to or stored in a storage device.

[0097] 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 and 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.

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

[0099] 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, attribute predictions for the current point can be determined based on reconstructed attribute values ​​for neighboring points of the current point stored in the memory (860). In some examples, the attribute predictions can be combined with respective reconstructed residuals to generate reconstructed attributes for the current point.

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

[0101] In various embodiments, the encoder (300), the decoder (400), the encoder (700), and / or the decoder (800) may be implemented in 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 using processing circuitry, such as one or more integrated circuits (ICs), such as application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc., that operate with or without software. In another example, 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 circuitry, such as one or more processors, cause the processing circuitry to perform the functions of the encoder (300), the decoder (400), the encoder (700), and / or the decoder (800).

[0102] Note that the attribute prediction modules (750) and (850) configured to implement the attribute prediction techniques disclosed herein may 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) may be included in the same device or in separate devices in various examples.

[0103] 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.

[0104] An object's mesh (also referred to as a mesh model or 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 about how the vertices are connected (e.g., the edge information) is referred to as 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 referred to as two connected triangles. In other examples, an object's mesh is formed by connected quadrilaterals. Two quadrilaterals that share an edge may be referred to as two connected quadrilaterals. Note that a mesh may be formed by other suitable polygons.

[0105] In some examples, a mesh 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 often described by a set of parametric coordinates, often called UV coordinates or texture coordinates, that are associated with the vertices of the mesh. 2D attribute maps (in some examples, called texture maps) are used to store high-resolution attribute information, such as texture, normals, displacement, etc. Such information can be used for various purposes, such as texture mapping and shading.

[0106] In some examples, a mesh can include components referred to as 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, and are 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 one 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, a mapping between a video (e.g., a 2D picture / video) and the mesh surface is defined by the mapping information.

[0107] According to aspects of the present disclosure, several techniques, referred to as 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.

[0108] In some examples, a 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 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.

[0109] According to aspects of the present disclosure, in some examples, the patches are each parameterized into 2D shapes (also referred to as UV patches). The 2D shapes can be packed (e.g., oriented and positioned) into maps, also referred to as atlases in some examples. In some examples, the maps can be further processed using 2D picture or video processing techniques.

[0110] In one example, the UV mapping technique generates a UV atlas (also referred to as a UV map) in 2D and one or more texture atlases (also referred to as texture maps) that correspond to patches of the 3D mesh. The UV atlas contains the assignment of 3D vertices of the 3D mesh to 2D points (e.g., rectangles) in the 2D domain. 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 contains 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 in the 3D domain (x,y,z) are referred to as 3D coordinates, or xyz coordinates, and the 2D coordinates (u,v) are referred to as UV coordinates, or UV coordinates.

[0111] 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. Different techniques can be used to generate the 2D maps.

[0112] FIG. 9 shows a diagram illustrating the mapping from 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 AD. Each patch 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.

[0113] In one example, the 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, the coordinates of the 3D domain are referred to as (x,y,z) coordinates, and the coordinates of the 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).

[0114] The map (920) may be a geometry map, containing geometry information, a texture map, containing color, normal, textile, or other attribute information, or an occupancy map, containing occupancy information.

[0115] Note that in the example of Figure 9, each patch is represented by a triangle, but 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. Note that the vertices in a patch may be connected using other suitable shapes.

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

[0117] According to one aspect of the 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 ​​in the regions outside the 2D shapes A', B', C', and D' after decoding can be discarded. In some cases, an 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.

[0118] According to aspects 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, and attribute maps) changes over time. A dynamic mesh can be described by a series of meshes (also referred to as mesh frames). Dynamic meshes can require large amounts of data because they can contain a significant amount of information that changes over time. Mesh compression techniques allow for efficient storage and transmission of media content in mesh representations.

[0119] In some examples, the dynamic meshes can have constant connectivity information, time varying geometry, and time varying vertex attributes. In some examples, the dynamic meshes can have time varying connectivity information. In one example, digital content creation tools often generate dynamic meshes with time varying attribute maps and time varying connectivity information. In some examples, volumetric acquisition techniques are used for the generation of dynamic meshes. Volumetric acquisition techniques can generate dynamic meshes with time varying connectivity information, especially under real-time constraints.

[0120] 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, and the regular grid samples are used to generate a geometry image. The connectivity of the regular grid samples can be inferred. The regular grid samples can be viewed as points in a point cloud, and therefore can be coded using a PCC codec, such as the V-PCC codec.

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

[0122] 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, and a downsampled map (1030) is generated 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).

[0123] In Figure 10, the map (1020) includes 2D shapes (also referred to as UV patches) A', B', C', and D', and the downsampled map (1030) includes sampled 2D shapes A'', B'', C'', and D'', which correspond to the 2D shapes A', B', C', and D', respectively. The downsampled map (1030), in some examples, is then encoded by an image or video encoder on the mesh encoder side.

[0124] 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.

[0125] In general, dynamic mesh sequences require large amounts of data, as they may consist of a significant 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.

[0126] In some examples, adaptive sampling techniques can be used to process 2D atlases (also called maps in 2D) without excessive loss of 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 methods are applied to 2D atlases (e.g., maps in 2D), which can be either geometry maps or attribute (texture) maps, or both.

[0127] 11 shows a diagram of a framework (1100) for mesh compression in accordance with 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).

[0128] The mesh encoder (1110) may 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) may 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) may be transmitted from the mesh encoder (1110) to the mesh decoder (1150) over any suitable communications network (not shown).

[0129] 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.

[0130] 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 the UV atlas (1105). For example, the pre-processing module (1111) can 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 the 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., 2D color maps, etc.).

[0131] Note that in some examples, the input mesh (1101) is in the form of a mesh with a UV atlas, after which the pre-processing module (1111) can transfer the input mesh (1101) to a mesh with a UV atlas (1105).

[0132] The adaptive sampling module (1120) receives the mesh with UV atlas (1105) 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 the map or in different regions of the map, such as information density in the map, and determine different sampling rates to sample the map or different regions of the map based on the characteristics. The 2D map can then be sampled according to the different sampling rates to generate the adaptive sampling map (1125). The adaptive sampling map (1125) can include a geometry map (also referred to in some examples as a geometry image), an occupancy map, other attribute maps (e.g., color maps), etc.

[0133] The video encoder (1130) is capable of encoding the adaptive sampling map (1125) into a bitstream (1145) using image encoding and / or video encoding techniques.

[0134] The adaptive sampling module (1120) also generates auxiliary data (1127), which indicates the aiding 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).

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

[0136] 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), which are 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) and 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., the initially decoded map).

[0137] 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) and generating decoded auxiliary data (1175).

[0138] 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 reconstruction module (1190) can determine vertices and information associated with the vertices in the reconstructed mesh (1195), such as 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 further described in this disclosure.

[0139] It should be noted that the components in 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 by one or more processors.

[0140] It should be 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 by one or more processors.

[0141] In some implementations, sampling adaptation may be based on map type. In some examples, the adaptive sampling module (1120) may apply different sampling rates to different types of maps. For example, different sampling rates may be applied to geometry maps and attribute maps. In one example, a mesh is a model of an object with a regular shape and rich texture. For example, the object has a rectangular shape but rich 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 (both vertically and horizontally) and a second sampling rate of 1:1 to the texture map (both vertically and horizontally).

[0142] In some cases, 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 horizontal sampling rate of 2:1 indicates that one sample is generated for every two pixels in the original map in the horizontal direction. A vertical sampling rate of 2:1 indicates that one sample is generated for every two pixels in the original map in the vertical direction.

[0143] 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, and a sampling step of two in the vertical direction indicates two pixels between adjacent sampling positions in the vertical direction. Note that in this disclosure, the sampling rate corresponds to the sampling step. For example, a sampling rate of 2 (e.g., 2:1) corresponds to two pixels between adjacent sampling positions.

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

[0145] 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 to the block rows in the vertical direction to generate the adaptive sampling 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 in the map (1220), resulting in 32 rows of samples for each of block rows 0 and 6 in the sampled adaptive sampling map (1230). A second sampling rate of 1:1 is applied vertically to block rows 1 to 5 in the map (1220), resulting in 64 rows of samples for each of block rows 1 to 5 in the adaptive sampling map (1230).

[0146] Note that in Figure 12 a horizontal sampling rate of 1:1 is applied.

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

[0148] In some other examples, a map to be coded in a 2D representation of a 3D mesh can be divided into multiple sub-regions. Examples of such divisions inside a map (e.g., a picture) include slices, tiles, tile groups, coding tree units, etc. In some examples, different sampling rates can be applied to different sub-regions. In one example, different sampling rates associated with different sub-regions can 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.

[0149] In some examples, the process of restoring the adaptive sampling map to its original resolution is referred to as an inverse sampling process, which generates a restored map. After restoration from the inverse sampling process, the output of the restored map in a 2D atlas format can be used for 3D mesh reconstruction.

[0150] Although the example in 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.

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

[0152] FIG. 13 shows an illustration of adaptive sampling in some examples. A map (1320), such as a high-resolution 2D atlas, contains multiple 2D shapes, also referred to as UV patches, such as a first 2D shape A′ and a second 2D shape B′, which 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 the vertical and horizontal directions to generate a first sampled 2D shape A″. Then, a second sampling rate is applied to the second 2D shape B′ in both the 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, referred to as the adaptive sampling map (1330).

[0153] 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 adaptively sampled map (1330) is encoded by an image or video encoder, such as the video encoder (1130), into a bitstream carrying the 3D mesh. In some examples, the sampling rate associated with the sampled 2D shapes is encoded into the bitstream carrying the 3D mesh, for example by the auxiliary data encoder (1140).

[0154] In some examples, at 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 adaptive sampling 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.

[0155] According to one aspect of the present disclosure, adaptive sampling information, such as sampling rates of different map types, sampling rates of different sub-regions, sampling rates of 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 carrying 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.

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

[0157] The adaptive sampling module (1120) can apply adaptive sampling techniques to the mesh using the UV atlas (1105) and output an adaptive sampling map (1125) (also referred to as an adaptive sampling atlas in some examples), 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 as texture maps in some examples), etc. In some examples, the adaptive sampled map (1125) includes a sampled occupancy map.

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

[0159] In one example, if a sampling location in 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").

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

[0161] In one example, the mesh is formed of triangles. The sampling location is inside a triangle defined by three vertices of the mesh, and therefore 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 as 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 (e.g., weighted average color, weighted average normal, etc.) of the attributes of the three vertices of the triangle. The adaptive sampling module (1120) can assign the weighted average attribute value, which becomes the attribute value of the corresponding sampled point in the sampled attribute map.

[0162] In some examples, the sampling rate (SR) is consistent throughout the 2D atlas (e.g., geometry map, attribute map, etc.), but the sampling rates for the u-axis and v-axis may 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 may be divided into multiple regions, such as slices, or tiles, or patches, and the multiple regions may have respective sampling rates. For example, a mesh is formed of connected triangles, and the mesh may be divided into multiple patches, and each patch includes a subset of the entire mesh. Different sampling rates may be applied to each patch, for example, by an adaptive sampling module (1120).

[0163] 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.

[0164] 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 specific sampling rate (SR) for a region according to the characteristics of the region. In one example, the specific sampling rate is determined based on the frequency spectrum of the region. For example, a rich-textures 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) suitable for the high spatial frequency components to the rich-texture 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) suitable for the high activity to the region. In another example, a smooth region (or the entire 2D atlas) may lack high spatial frequency content in 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 content in 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.

[0165] According to one aspect of the present disclosure, the sampling rate can be represented 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, if a region of a mesh is composed of 1000 vertices and a certain sampling rate (SR) is applied to the region, 3000 sampling points are obtained. Then, the OR parameter for this region is equal to 3 at that SR. That is, OR(SR)=3.

[0166] In some embodiments, the adaptive sampling module (1120) can use an algorithm to determine the final sampling rate of 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 i ) parameter is the sampling rate that produces the OR parameters closest to the i The final sampling rate of the signal (denoted by (1)) can be determined as follows:

number

[0167] 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.

[0168] 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 a particular region) that can achieve a maximum OR parameter that is less than a predefined threshold (denoted by Th0). In some examples, the algorithm starts with a relatively small (e.g., 1:1) basic sampling rate (BSR) and uses an iterative process with iterative cycles to determine the final sampling rate. In each iterative cycle, an OR parameter is determined for the region that tests the current BSR. If the OR parameter is less than the threshold Th0, the current BSR is the final sampling rate for the particular region. And 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 equation (2).

number

[0169] 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 a 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 basic sampling rate (BSR) and uses an iterative process with iterative cycles to determine the final sampling rate. In each iterative cycle to test the current BSR, an OR parameter of a 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 by 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 (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.

[0170] In some examples, the process for determining the final sampling step of region i is determined as Equation (3). [Number] Equation (3) Here, BSR is the basic sampling rate, Th0 is the first predefined threshold, Th1 is the second predefined threshold, and F0>1 is the first scaling factor for increasing BSR, and 0<F1<1 indicates the second scaling factor for decreasing BSR.

[0171] Note that the scaling factors F0 and F1 can be different for each region. When 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. When the OR parameter with BSR is greater than or equal to Th0, the final sampling rate is increased by the scaling factor F0. When 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.

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

[0173] Note that when adaptive sampling rates are applied, the size of the sampled regions in the sampled map changes by different ratios compared to the original UV atlas or compared to when a uniform sampling rate is used. The adaptive sampling module (1120) can place sampled regions of different sampling rates in the sampled map and keep the sampled regions from overlapping each other, so that each point in the sampled map has a one-to-one correspondence with a particular region.

[0174] 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 in the original UV atlas, min is the minimum u coordinate of all vertices in a particular region, and v min is the minimum v coordinate of all vertices in 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 of the sampled region can be placed at location (u0,v0) in the sampled map, which is

number

number

number

[0175] In some embodiments, the adaptive sampling module (1120) can place the sampled regions one by one into the sampled map in a specific order. To place the current sampling region, the adaptive sampling module (1120) can first place the current sampling region according to the position (u0, v0) (e.g., the upper left corner of the bounding box of the current sampled region). When the adaptive sampling module (1120) detects that the current sampling region overlaps with an already placed sampling region, the adaptive sampling module (1120) can determine a new position to place the current sampling region to avoid overlapping with the previously placed sampling region.

[0176] In some examples, a predefined search window and / or criteria can be defined, and the adaptive sampling module (1120) can find a new position (denoted as (u0,v0)) to place the current sampling region according to the predefined search window and / or criteria. Note that in some examples, an offset between the new position (u1,v1) and the original position (also referred to as UV offset) can be signaled from the encoder side to the decoder side for reconstruction.

[0177] In some embodiments, the sampled regions are arranged not only to not overlap, but also to have a predetermined amount of gap between the regions. For example, each sampled region may be required to have a minimum distance of 10 pixels between other sampled regions. Note 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.

[0178] Some aspects of the present disclosure also provide signal techniques for adaptive sampling for mesh compression.

[0179] In some embodiments, the sampling rates of different regions of a mesh can be signaled in a bitstream carrying information of the mesh. Note that the sampling rate can be signaled at different levels of the bitstream. As an 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 (i.e., a concept similar 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.

[0180] 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, a control flag is signaled in a sequence header of an entire mesh sequence. In another example, a control flag is signaled in a group header of a group of mesh frames. In another example, a control flag is signaled in a frame header of each mesh frame. In another example, a control flag for a slice in a mesh frame is signaled in a slice header of the slice. In another example, a control flag for a tile in a mesh frame is signaled in a tile header of the tile. In another example, a control flag for a patch in a mesh frame is signaled in a patch header of the patch. If the control flag is true at a level, adaptive sampling is enabled at that level, and thus an adaptive sampling rate may be applied. If the control flag is false at a level, adaptive sampling is disabled and a uniform sampling rate is applied at that level.

[0181] 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 with a less complex coding technique (referred to as bypass coding).

[0182] 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 for that region. If adaptive sampling is disabled, the base sampling rate can be used as a uniform sampling rate throughout the content at the appropriate level.

[0183] The base sampling rate may be signaled at various levels in the bitstream as well. 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.

[0184] In some examples, the base sampling rate can be binarized with a fixed or variable length representation (e.g., fixed k-bit representation and k-ordered Exp-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.

[0185] 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 in the entire mesh frame can be signaled or derived (e.g., as the number of CTU rows, the number of tiles, the number of patches, etc.).

[0186] According to one aspect of the present disclosure, the sampling rate of a region can be signaled without prediction. As an 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-set sampling rates that are known by both the encoder and the decoder. Signaling of a particular sampling rate can be performed by signaling an index of a particular sampling rate in the pre-set rate set. For example, the set of pre-set 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).

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

[0188] 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.

[0189] 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, the predictor 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, the value of the sampling rate is signaled, for example, by another syntax.

[0190] In some examples, when the sampling rate is directly signaled (by signaling the sampling rate or 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., fixed k-bit representation and 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.

[0191] In some examples, when the sampling rate is signaled by the 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., fixed k-bit representation and 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 by a less complex 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.

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

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

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

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

[0196] 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., fixed k-bit representation and 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 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.

[0197] 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 a positive value. And, 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 a negative value. If the sampling rate of the region is equal to the base sampling rate, the UV offset can be inferred or predicted as zero.

[0198] 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 or variable length representation (e.g., fixed k-bit representation and k-th order exponential Golomb), 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. 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.

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

[0200] In some examples, the decoded map (1165) includes a decoded occupancy map, and the mesh reconstruction module (1190) can reconstruct a mesh frame according to the decoded map (1165), which includes the decoded occupancy map, the decoded geometry map, and one or more decoded attribute maps. Note that in some examples, the decoded occupancy map corresponds to a sampled occupancy map resulting from 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.

[0201] 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 inferred occupancy map based on the boundary vertices of the region. Note that in some examples, the inferred occupancy map is not processed with adaptive sampling. The mesh reconstruction module (1190) can reconstruct a mesh frame according to the inferred occupancy map and the decoded map (1165), which includes a decoded geometry map and one or more decoded attribute maps.

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

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

[0204] 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 For each occupied point having a vertex, the mesh reconstruction module (1190) calculates the UV coordinates (U i ,V i ) can be determined.

number

number

[0205] In another example, the decoded map (1165) does not include a decoded occupancy map. The mesh reconstruction module (1190) can determine an estimated 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 not have a particular 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.

[0206] In some embodiments, for each occupancy point on the occupancy map (e.g., the decoded occupancy map, the estimated occupancy map), the mesh reconstruction module (1190) can recover the vertices on the mesh frame and determine the 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.

[0207] 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 the attribute map for vertices in the region. u ,offset v ), the UV offsets are determined according to syntax values ​​decoded from the bitstream (1145).

[0208] In one example, the decoded map (1165) includes a decoded occupancy map. For each occupancy point with coordinates in a sampled region of the decoded occupancy map, the corresponding location in the decoded geometry map and the decoded attribute map is (u i ,v i ). For example, the sampling rate applied to the occupancy map to obtain the sampled occupancy map corresponds to the sampling rates 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.

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

number

number

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

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

[0212] At (S1410), a mesh frame data structure with 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 in the UV atlas.

[0213] In (S1420), respective sampling rates are determined for the regions of the mesh frame according to the respective characteristics of the regions of the mesh frame.

[0214] In (S1430), the sampling rates of each region of the mesh frame are applied to the UV atlas to determine sampling positions in the UV atlas.

[0215] At (S1440), one or more sampled two-dimensional (2D) maps are formed for the mesh frame according to the sampling locations in the UV atlas.

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

[0217] 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 a first number of sampling locations 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 a ratio between the first number of sampling locations and a total number of vertices originally in the first region of the mesh frame.

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

[0219] 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 a ratio between a first total number of sampling locations and a total number of vertices originally in the first region of the mesh frame.

[0220] In some examples, the sampled 2D map of one or more sampled 2D maps includes a sampled region with a sampled point corresponding to a sampling location in the UV atlas. In one example, if the sampling location is within a polygon, the sampling location is determined to be occupied. Attributes of the sampled point in the sampled 2D map corresponding to the sampling location are then determined according to attributes of the vertices of the polygon.

[0221] In some examples, sampled regions corresponding to regions of the mesh can be determined based on the respective sampling rates of the regions of the mesh to form one or more sampled 2D maps. The sampled regions are then arranged in a non-overlapping configuration to form the sampled maps. In one example, the sampled regions are arranged one by one. In one example, a bounding box of 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 that have already been arranged.

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

[0223] In some examples, an offset for the initial placement position is determined in response to a current sampled region at the initial placement position overlapping with the subset of the sampled region, the offset allowing the current sampled region to not overlap with the subset of the sampled region.

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

[0225] In some embodiments, the sampling rates associated with the regions are encoded by various techniques. In one example, a value of the first sampling rate of the first region is directly encoded into the bitstream. In another example, a first index is encoded into the bitstream, and the first index indicates 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-defined sampling rates is encoded into the bitstream. In another example, a syntax indicating a predictor for predicting the first sampling rate from a previously used sampling rate 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 previously used sampling rate for the encoded region in another mesh frame previously encoded of the mesh frame is encoded into the bitstream.

[0226] In some embodiments, the encoder can decide whether to signal a first sampling rate associated with the first region or to predict the first sampling rate and encode a first syntax value into the bitstream indicative of the decision. 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.

[0227] 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. Additionally, in one example, a prediction residual is encoded into the bitstream. The prediction residual is the difference between the first sampling rate and the sampling rate of the predictor.

[0228] 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.

[0229] In some examples, a control flag is encoded to indicate enabling or disabling of adaptive 2D atlas sampling in the mesh frame.

[0230] In some examples, a first UV offset associated with a first region of the mesh frame is determined. The first UV offset is applied to a first sampling region corresponding to the first region to avoid overlap with other sampling regions. 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 directly encoded into the bitstream. In another example, a syntax indicating a predictor for predicting the first UV offset based on a pre-defined set of UV offsets is encoded into the bitstream. In another example, a syntax indicating a predictor for predicting 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 for predicting the first UV offset based on a UV offset previously used for the encoded region in another mesh frame previously encoded of the mesh frame is encoded into the bitstream.

[0231] In some examples, a syntax indicating a predictor for predicting the 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.

[0232] The process then proceeds to (S1499) and ends.

[0233] The process 1400 may be adapted as appropriate. Steps in the process 1400 may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0234] 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 decoding process for a mesh. In various embodiments, the process (1500) is performed by a processing circuit. In some embodiments, the process (1500) is implemented with software instructions, such that the processing circuit performs the process (1500) when the processing circuit executes the software instructions. The process starts at (S1501) and proceeds to (S1510).

[0235] At (S1510), 2D multiple maps are decoded from a bitstream carrying a mesh frame, the mesh frame representing a surface of an object with polygons, the 2D multiple maps including at least a decoded geometry map and a decoded attribute map to which adaptive 2D atlas sampling has been applied.

[0236] At (S1520), at least a first sampling rate and a second sampling rate are determined according to syntax signaled in the bitstream, where the first sampling rate is applied to a first region of the mesh frame during adaptive 2D atlas sampling, and the second sampling rate is applied to a second region of the mesh frame during adaptive 2D atlas sampling, where the first sampling rate is different from the second sampling rate.

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

[0238] 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 occupancy point in a first sampling region of the decoded occupancy map corresponding to a first region of the mesh frame are determined. The occupancy point corresponds to the first vertex. Then, recovered UV coordinates for the first vertex are determined based on the initial UV coordinates and the first sampling rate. In one example, a first UV offset of the first sampling region is determined according to syntax from the bitstream. The recovered UV coordinates of the first vertex are determined based on the initial UV coordinates, the first sampling rate, and the first UV offset. Furthermore, in one example, recovered 3D coordinates for the first vertex are determined according to a pixel in the decoded geometry map at the initial UV coordinates, and recovered attribute values ​​for the first vertex are determined according to a pixel in the decoded attribute map at the initial UV coordinates.

[0239] In some embodiments, the multiple maps lack an occupancy map. Information indicative of a first bound vertex for the first region is decoded from the bitstream to reconstruct at least a first vertex according to a first sampling rate. A first occupancy region in the occupancy map corresponding to the first region is inferred according to the first bound vertex. UV coordinates of an occupancy point in the first occupancy region are obtained, the occupancy point may correspond to a first vertex. The UV coordinates are transformed into sampled UV coordinates according to at least the first sampling rate. Based on the multiple maps, the first vertex is reconstructed according to the sampled UV coordinates.

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

[0241] 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 the sampled UV coordinates according to the first sampling rate and the first UV offset.

[0242] In some embodiments, at least the first and second sampling rates can be determined by various techniques. In one example, at least the first and second sampling rate values ​​are decoded directly from the bitstream. In another example, at least the first and second indexes are decoded from the bitstream. The first index indicates a selection of a first sampling rate from a set of sampling rates, and the second index indicates 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-defined rates. In another example, the first sampling rate is predicted based on a sampling rate previously used for a decoded region of the mesh frame. In another example, the first sampling rate is predicted based on a sampling rate previously used for a decoded region of another mesh frame previously decoded of the mesh frame.

[0243] 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 indicating a selection of the first sampling rate from the set of sampling rates.

[0244] In some examples, a second syntax is decoded from the bitstream in response to the first syntax value indicating that the first sampling rate is predicted. The second syntax indicates 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. The first sampling rate is then determined based on the predictor and the prediction residual.

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

[0246] In some examples, a control flag indicating the enablement of adaptive 2D atlas sampling in the mesh frame is decoded from the bitstream. Then, the total number of regions in the mesh frame and the sampling rate of the regions are determined for each region, for example, based on the syntax of the bitstream.

[0247] 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 directly decoded 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-defined 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 previously decoded of the mesh frame.

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

[0249] 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 for predicting the first UV offset, and 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.

[0250] The process then proceeds to (S1599) and ends.

[0251] The process (1500) may be adapted as appropriate. Steps in the process (1500) may be modified and / or omitted. Additional steps may be added. Any suitable order of implementation may be used.

[0252] The techniques disclosed in this disclosure may be used separately in any order or in combination. Furthermore, each of the techniques (e.g., methods, embodiments), the encoder, and the 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 on a non-transitory computer-readable medium.

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

[0254] Computer software can be coded using any suitable machine code or computer language, which can be subject to assembly, compilation, linking, or similar mechanisms to produce code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., either directly or through interpretation, microcode execution, etc.

[0255] The instructions may be executed in various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, internet of things devices, and the like.

[0256] 16 for 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 embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system (1600).

[0257] The computer system (1600) may include certain human interface input devices that may be responsive to input by one or more human users through, for example, tactile input (such as keystrokes, swipes, data glove movements, etc.), audio input (such as voice, clapping, etc.), visual input (such as gestures, etc.), and olfactory input (not shown). Human interface devices may also be used to capture certain media that do not necessarily involve direct human conscious input, such as audio (such as speech, music, ambient sounds, etc.), images (such as scanned images, photographic images acquired from a still image camera, etc.), and video (such as one-dimensional video, three-dimensional video, including stereoscopic vision, etc.).

[0258] 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).

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

[0260] The computer system (1600) can also include human accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (1620) with associated media such as CD / DVD (1621), thumb-drives (1622), removable hard drives or solid state drives (1623), traditional magnetic media such as tape and floppy disks (not shown), specialized ROM / ASIC / PLD based devices such as security dongles (not shown), and the like.

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

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

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

[0264] The cores (1640) may include one or more central processing units (CPUs) (1641), graphics processing units (GPUs) (1642), specialized programmable processing units in the form of field programmable gate arrays (FPGAs) (1643), hardware accelerators for certain tasks (1644), graphics adapters (1650), etc. These devices may be connected via a system bus (1648), along with read only memory (ROM) (1645), random access memory (1646), internal mass storage such as an internal non-user accessible hard drive, SSD, etc. (1647). In some computer systems, the system bus (1648) is accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be connected directly to the core's system bus (1648) or through a peripheral bus (1649). In one example, a screen (1610) may be connected to the graphics adapter (1650). Peripheral bus architectures include PCI, USB, and the like.

[0265] The CPU (1641), GPU (1642), FPGA (1643), and accelerator (1644) can execute predetermined instructions, which in combination can constitute the computer code described above. The computer code can be stored in ROM (1645) or RAM (1646). Transient data can also be stored in RAM (1646), while permanent data can be stored in, for example, internal mass storage (1647). Rapid storage and retrieval to any of the memory devices can be made possible through the use of cache memory, which can be closely associated with one or more of the CPU (1641), GPU (1642), mass storage (1647), ROM (1645), RAM (1646), etc.

[0266] The computer-readable media can have computer code thereon for performing various computer-implemented operations. The media 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 skilled in the computer software arts.

[0267] By way of example and not limitation, a computer system having the architecture (1600), and in particular the cores (1640), can provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage as described above, as well as storage associated with the cores (1640) of a non-transitory nature, such as core-internal mass storage (1647) or ROM (1645). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the cores (1640). The computer-readable media may include one or more memory devices or chips according to particular needs. The software can cause the core (1640), and in particular the processors therein (including CPUs, GPUs, FPGAs, etc.), to execute certain processes described herein, or certain portions of certain processes, including defining data structures stored in RAM (1646) and modifying such data structures according to processes defined by the software. Additionally or alternatively, the computer system can provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerators (1644)), which can operate in place of or in conjunction with software to execute certain processes or certain portions of certain processes described herein. Reference to software includes logic, and vice versa, as appropriate. Reference to a computer-readable medium can include circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software.

[0268] While this disclosure has described several exemplary embodiments, there exist modifications, permutations, and various substitute equivalents, which are within the scope of this disclosure. Thus, it will be appreciated that those skilled in the art will be able to devise numerous systems and methods which, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within its spirit and scope.

Claims

1. 1. A mesh thawing method comprising the steps of: decoding two-dimensional (2D) maps from a bitstream carrying the mesh frames; the mesh frame represents a surface of an object having polygons; the plurality of maps in 2D includes at least a decoded geometry map and a decoded attribute map to which adaptive 2D atlas sampling has been applied; Steps and determining at least a first sampling rate and a second sampling rate according to a syntax signaled in the bitstream; the first sampling rate is applied to a first region of the mesh frame during the adaptive 2D atlas sampling; and the second sampling rate is applied to a second region of the mesh frame during the adaptive 2D atlas sampling; the first sampling rate is different from the second sampling rate; Steps and reconstructing at least first vertices of the mesh frame at the first sampling rate and second vertices of the mesh frame at the second sampling rate based on the plurality of maps; A method comprising:

2. the plurality of maps includes a decoded occupancy map to which the adaptive 2D atlas sampling has been applied; and The step of reconstructing at least first vertices of the mesh frame at the first sampling rate and second vertices of the mesh frame at the second sampling rate further comprises: obtaining initial UV coordinates of occupancy points in a first sampling region of the decoded occupancy map corresponding to a first region of the mesh frame; the occupied point corresponds to the first vertex; Steps and determining recovered UV coordinates for the first vertex based on the initial UV coordinates and the first sampling rate; The method of claim 1 , comprising:

3. The method further comprises: decoding a first UV offset of the first sampling area from the bitstream; determining the recovered UV coordinates of the first vertex based on the initial UV coordinates, the first sampling rate, and the first UV offset; The method of claim 2 , comprising:

4. The method further comprises: determining a recovered 3D coordinate for the first vertex according to a pixel in the geometry map decoded with the initial UV coordinates; determining a recovered attribute value for the first vertex according to pixels in the decoded attribute map of the initial UV coordinates; The method of claim 2 , comprising:

5. the plurality of maps is devoid of an occupancy map; and The step of reconstructing at least first vertices of the mesh frame at the first sampling rate and second vertices of the mesh frame at the second sampling rate further comprises: decoding information from the bitstream indicative of a first bounding vertex for the first region; inferring a first occupancy region in an occupancy map corresponding to the first region according to the first bounding vertices; obtaining UV coordinates of an occupancy point in the first occupancy region; The occupied point corresponds to the first vertex. Steps and converting the UV coordinates to sampled UV coordinates according to at least the first sampling rate; reconstructing the first vertex according to the sampled UV coordinates based on the plurality of maps; The method of claim 1 , comprising:

6. The step of reconstructing the first vertex further comprises: determining a recovered 3D coordinate for the first vertex according to a pixel in the decoded geometry map at the sampled UV coordinates; determining a recovered attribute value for the first vertex according to pixels in the decoded attribute map at the sampled UV coordinates; The method of claim 5 , comprising:

7. The step of converting the UV coordinates to the sampled UV coordinates further comprises: decoding a first UV offset associated with the first region from the bitstream; transforming the UV coordinates into the sampled UV coordinates according to the first sampling rate and the first UV offset; The method of claim 5 , comprising:

8. The step of determining at least a first sampling rate and a second sampling rate further comprises: decoding at least the first and second sampling rate values ​​directly from the bitstream; decoding at least a first index and a second index from the bitstream; the first index indicates a selection of the first sampling rate from a set of sampling rates; and the second index indicating a selection of the second sampling rate from a set of sampling rates. Step, predicting the first sampling rate based on a set of predefined rates; predicting the first sampling rate based on a sampling rate previously used for a decoded region of the mesh frame; and predicting the first sampling rate based on a sampling rate previously used for a decoded region in another mesh frame that was decoded prior to the mesh frame; The method of claim 1 , comprising at least one of:

9. The step of determining at least a first sampling rate and a second sampling rate further comprises: decoding a first syntax value indicating whether the first sampling rate is signaled or predicted; The method of claim 1 , comprising:

10. In response to the first syntax value indicating the first sampling rate being signaled, the method includes: decoding the first sampling rate values ​​directly from the bitstream; and decoding an index from the bitstream; the index indicating a selection of the first sampling rate from a set of sampling rates. Step, The method of claim 9, comprising at least one of:

11. In response to the first syntax value indicating that the first sampling rate is predicted, the method includes: decoding a second syntax from the bitstream; The second syntax indicates a predictor used to predict the first sampling rate. Step, 10. The method of claim 9, comprising:

12. The method further comprises: determining a prediction residual based on syntax values ​​decoded from the bitstream; determining the first sampling rate based on the predictor and the prediction residual; The method of claim 11 , comprising:

13. The step of determining at least a first sampling rate and a second sampling rate further comprises: decoding a base sampling rate from the bitstream; determining at least the first sampling rate and the second sampling rate according to the base sampling rate; The method of claim 1 , comprising:

14. The method further comprises: decoding a control flag indicating enablement of adaptive 2D atlas sampling; determining a number of regions in the mesh frame; determining a sampling rate for each of said regions; The method of claim 1 , comprising:

15. The method further comprises: determining a first UV offset associated with the first region from the bitstream; reconstructing the first vertices of the mesh frame according to the first sampling rate and the first UV offsets based on the plurality of maps; The method of claim 1 , comprising:

16. The step of determining a first UV offset associated with the first region further comprises: decoding the first UV offset value directly from the bitstream; predicting the first UV offset based on a set of predefined UV offsets; predicting the first UV offset based on a previously used UV offset for a decoded region of the mesh frame; and predicting the first UV offset based on a previously used UV offset for a decoded region in another mesh frame that was decoded before the mesh frame; The method of claim 15, comprising at least one of:

17. The step of determining a first UV offset associated with the first region further comprises: decoding a first syntax value indicating whether the first UV offset is signaled or predicted; 16. The method of claim 15, comprising:

18. In response to the first syntax value indicating the first UV offset being signaled, the method includes: decoding the first UV offset value directly from the bitstream; inferring a sign of the first UV offset based on a comparison of the first sampling rate to a base sampling rate; 20. The method of claim 17, comprising:

19. In response to the first syntax value indicating that the first UV offset is predicted, the method includes: decoding a second syntax from the bitstream; The second syntax indicates a predictor used to predict the first UV offset. Steps and determining a prediction residual based on syntax values ​​decoded from the bitstream; determining the first UV offset based on the predictor and the prediction residual; 20. The method of claim 17, comprising:

20. 1. A mesh thawing device including a processing circuit, the processing circuit comprising: Decoding two-dimensional (2D) maps from a bitstream carrying the mesh frames; the mesh frame represents a surface of an object having polygons; the plurality of maps in 2D include at least a decoded geometry map and a decoded attribute map to which adaptive 2D atlas sampling has been applied; determining at least a first sampling rate and a second sampling rate according to a syntax signaled in the bitstream; the first sampling rate is applied to a first region of the mesh frame during the adaptive 2D atlas sampling; and the second sampling rate is applied to a second region of the mesh frame during the adaptive 2D atlas sampling; the first sampling rate is different from the second sampling rate; reconstructing at least first vertices of the mesh frame at the first sampling rate and second vertices of the mesh frame at the second sampling rate based on the plurality of maps; It is configured as follows: Device.

21. A computer program comprising one or more computer-executable instructions that, when executed by one or more processors of a device, the one or more processors, Decoding two-dimensional (2D) maps from a bitstream carrying the mesh frames; the mesh frame represents a surface of an object having polygons; the plurality of maps in 2D includes at least a decoded geometry map and a decoded attribute map to which adaptive 2D atlas sampling has been applied; determining at least a first sampling rate and a second sampling rate according to a syntax signaled in the bitstream; the first sampling rate is applied to a first region of the mesh frame during the adaptive 2D atlas sampling; and the second sampling rate is applied to a second region of the mesh frame during the adaptive 2D atlas sampling; the first sampling rate is different from the second sampling rate; reconstructing at least first vertices of the mesh frame at the first sampling rate and second vertices of the mesh frame at the second sampling rate based on the plurality of maps. Computer program.

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