Mesh vertex displacement coding
By decomposing and entropy coding technology of 3D models, the problem of low compression efficiency of complex 3D models in the prior art is solved, and efficient 3D model compression and data transmission of dynamic mesh sequences are realized.
Patent Information
- Application Number
- JP2024544995
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-05-10
- Filing Date
- 2023-05-11
- Publication Date
- 2025-02-06
- Estimated Expiration
- 2043-05-11
AI Technical Summary
Existing video encoding technology is difficult to effectively compress complex 3D models, especially 3D models and dynamic mesh sequences containing multiple instances. There is a problem of large quantization error, large data volume, and existing standards fail to effectively process attribute graphs and connection information with time variations.
By decomposing the input mesh, a simplified reference mesh and residual mesh are obtained, and local attributes are used for encoding, and the displacement vector of each sub-segment vertex is calculated by using the method of sub-segmentation curve, and efficient compression is performed by combining entropy coding technology.
It realizes efficient compression of complex 3D models, reduces quantization errors, improves data transmission efficiency, and is suitable for the compression requirements of real-time dynamic mesh sequences.
Smart Images

Figure 2025504039000053 
Figure 2025504039000054 
Figure 2025504039000055
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 63 / 354,088, filed June 21, 2022, and U.S. Patent Application No. 18 / 314,884, filed May 10, 2023, which are expressly incorporated by reference herein in their entireties.
[0002] This disclosure relates to a set of advanced video coding techniques, including mesh compression techniques, for encoding displacements of subdivision mesh vertices. [Background technology]
[0003] Advances in 3D capture, modeling, and rendering are facilitating the ubiquitous presence of 3D content across several platforms and devices. Today, it is possible to capture a baby's first steps on one continent while grandparents watch (and perhaps interact) on another and enjoy a fully immersive experience with that child. Nevertheless, to achieve such immersion, models are becoming increasingly sophisticated, and a significant amount of data is associated with the creation and consumption of those models.
[0004] VMesh is an ongoing MPEG standard for compressing static and dynamic meshes. VMesh separates the input mesh into a simplified base mesh and a residual mesh. The base mesh can be coded at high quality, and the residual mesh can be coded using subdivision surface fitting and displacement coding to exploit local properties.
[0005] However, complex meshes often contain information about multiple instances to associate texture maps. This information is available at the time of encoding. On the other hand, meshes can be segmented into several parts based on their characteristics. For example, there are more polygons in the face region of a human mesh.
[0006] Thus, a constant quantization step size applied to all instances, objects, and parts within a mesh will result in large quantization errors, mesh regions may not be equally important, the number of faces may vary significantly in different parts of the mesh, the base mesh may be simpler than the original mesh and the displacements may therefore require less bit depth precision.
[0007] Also, dynamic mesh sequences may require a large amount of data since it may consist of a significant amount of information that changes over time. Therefore, efficient compression techniques are required to store and transmit such content. Mesh compression standards IC, MESHGRID, FAMC were previously developed by MPEG to address dynamic meshes with constant connectivity and time-varying geometry and vertex attributes. However, these standards do not consider time-varying attribute maps and connectivity information. DCC (Digital Content Creation) tools usually generate such dynamic meshes. Correspondingly, it is difficult for volumetric acquisition techniques to generate constant connectivity dynamic meshes, especially under real-time constraints. This kind of content is not supported by existing standards. MPEG plans to develop a new mesh compression standard to directly handle dynamic meshes with time-varying connectivity information and optionally time-varying attribute maps.
[0008] Therefore, for any of these reasons, a technical solution to such problems that arise in video coding technology is desirable. Summary of the Invention [Means for solving the problem]
[0009] Methods and apparatuses are included that include a memory configured to store computer program code and one or more processors configured to access and operate as directed by the computer program code, the computer program configured to cause the processor to execute: an acquisition code configured to cause the at least one processor to acquire an input mesh corresponding to volumetric data of at least one three-dimensional (3D) visual content; a derivation code configured to cause the at least one processor to derive a curve of a mesh sequence from the input mesh corresponding to the volumetric data, the curve including a plurality of vertices of the input mesh; a subdivision code configured to cause the at least one processor to subdivide the derived curve of the mesh sequence by adding a plurality of subdivided vertices; a calculation code configured to cause the at least one processor to calculate a displacement vector for each of the plurality of subdivided vertices; and a coding code configured to cause the at least one processor to entropy code the volumetric data based on the displacement vector from at least one of the subdivided vertices.
[0010] According to an exemplary embodiment, subdividing the derived curve includes forming a thinned curve by thinning the derived curve and adding a plurality of subdivided vertices to the thinned curve.
[0011] According to an exemplary embodiment, the displacement vector from at least one of the subdivided vertices is from a point on the thinning curve.
[0012] According to an example embodiment, entropy coding the volumetric data is further based on determining that at least one of the plurality of subdivision vertices of the thinned curve is not displaced from the curve.
[0013] According to an example embodiment, entropy coding the volumetric data includes determining to signal a coding context at a level of detail (LOD).
[0014] According to an example embodiment, the coding context in the LOD indicates that at least one of the coefficients of the displacement vector from at least one of the subdivision vertices is zero.
[0015] According to an example embodiment, entropy encoding the volumetric data includes signaling locations of non-zero coefficients of a displacement vector from at least one of the subdivision vertices.
[0016] According to an example embodiment, entropy coding the volumetric data includes determining whether a tree structure is signaled.
[0017] According to an example embodiment, entropy coding the volumetric data includes determining a percentage of a zerotree based on determining a proportion of zero coefficients that are not descendants of the zerotree and are roots of the zerotree among zero coefficients that are not at a particular level of detail (LOD), and specifying a coding context for multiple LODs, at least one of which is at the particular LOD.
[0018] According to an exemplary embodiment, the particular LOD is one of LOD0 and the last LOD.
[0019] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Brief description of the drawings]
[0020] [Figure 1] FIG. 2 is a schematic diagram of a diagram according to an embodiment. [Diagram 2] FIG. 2 is a simplified block diagram according to an embodiment. [Diagram 3] FIG. 2 is a simplified diagram according to an embodiment. [Figure 4] FIG. 2 is a simplified diagram according to an embodiment. [Diagram 5] FIG. 2 is a simplified diagram according to an embodiment. [Figure 6] FIG. 2 is a simplified diagram according to an embodiment. [Figure 7] FIG. 2 is a simplified diagram according to an embodiment. [Figure 8] FIG. 2 is a simplified diagram according to an embodiment. [Figure 9] FIG. 2 is a simplified diagram according to an embodiment. [Figure 10] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 11] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 12] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 13] FIG. 2 is a simplified diagram according to an embodiment. [Figure 14] FIG. 2 is a simplified diagram according to an embodiment. [Figure 15] FIG. 2 is a simplified diagram according to an embodiment. [Figure 16] FIG. 2 is a simplified diagram according to an embodiment. [Figure 17] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 18] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 19] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 20] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 21] FIG. 2 is a simplified diagram according to an embodiment. [Figure 22] FIG. 2 is a simplified diagram according to an embodiment. [Figure 23] FIG. 2 is a simplified flow diagram according to an embodiment. [Figure 24] FIG. 2 is a simplified diagram according to an embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0021] The proposed features described below may be used separately or combined in any order. Furthermore, the embodiments may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.
[0022] FIG. 1 illustrates a simplified block diagram of a communication system 100 according to an embodiment of the present disclosure. The communication system 100 may include at least two terminals 102 and 103 interconnected via a network 105. For unidirectional transmission of data, a first terminal 103 may code video data at a local location for transmission to the other terminal 102 via the network 105. The second terminal 102 may receive the coded video data of the other terminal from the network 105, decode the coded data, and display the recovered video data. Unidirectional data transmission may be common in media serving applications, etc.
[0023] 1 shows a second pair of terminals 101 and 104 provided to support bidirectional transmission of coded video, such as may occur during a video conference. For the bidirectional transmission of data, each terminal 101 and 104 may code video data captured at a local location for transmission to the other terminal over network 105. Each terminal 101 and 104 may also receive coded video data transmitted by the other terminal, decode the coded data, and display the recovered video data on a local display device.
[0024] In FIG. 1, terminals 101, 102, 103, and 104 may be depicted as servers, personal computers, and smartphones, although the principles of the present disclosure are not so limited. Embodiments of the present disclosure are contemplated for use with laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network 105 represents any number of networks that convey coded video data between terminals 101, 102, 103, and 104, including, for example, wired and / or wireless communication networks. Communication network 105 may exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of network 105 may not be important to the operation of the present disclosure, unless described below.
[0025] 2 illustrates the arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter may be equally applicable to other video-enabled applications including, for example, video conferencing, digital television, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0026] The streaming system may include a capture subsystem 203, which may include a video source 201, such as a digital camera, that creates an uncompressed video sample stream 213. The sample stream 213 may be emphasized as a high data volume when compared to an encoded video bitstream and may be processed by an encoder 202 coupled to the video source 201, which may be a camera, as described above. The encoder 202 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream 204 may be emphasized as a lower data volume compared to the sample stream and may be stored on a streaming server 205 for future use. One or more streaming clients 212 and 207 may access the streaming server 205 to retrieve copies 208 and 206 of the encoded video bitstream 204. The client 212 may include a video decoder 211 that decodes the incoming copy 208 of the encoded video bitstream and creates an outgoing video sample stream 210 that may be rendered on a display 209 or other rendering device (not shown). In some streaming systems, the video bitstreams 204, 206, and 208 may be encoded according to a particular video coding / compression standard, examples of which are mentioned above and described further herein.
[0027] FIG. 3 may be a functional block diagram of a video decoder 300 according to one embodiment of the present invention.
[0028] The receiver 302 may receive one or more codec video sequences to be decoded by the decoder 300, in the same or another embodiment, one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from a channel 301, which may be a hardware / software link to a storage device that stores the coded video data. The receiver 302 may receive the coded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective usage entity (not shown). The receiver 302 may separate the coded video sequences from the other data. To combat network jitter, a buffer memory 303 may be coupled between the receiver 302 and the entropy decoder / parser 304 (hereinafter, "parser"). If the receiver 302 is receiving data from a storage / forwarding device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer 303 may not be needed or may be small. For use in a best effort packet network such as the Internet, buffer 303 may be required and may be relatively large, and may advantageously be adaptively sized.
[0029] The video decoder 300 may include a parser 304 for reconstructing symbols 313 from the entropy coded video sequence. These categories of symbols include information used to manage the operation of the decoder 300 and potentially information for controlling a rendering device, such as a display 312, that is not an integral part of the decoder but may be coupled to it. The rendering device control information may be in the form of supplemental enhancement information (SEI message) or a video usability information (VUI) parameter set fragment (not shown). The parser 304 may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context dependency, etc. The parser 304 may 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 that group. The subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The entropy decoder / parser may also extract from the coded video sequence information such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0030] The parser 304 may perform an entropy decoding / parsing operation on the video sequence received from the buffer 303 to create symbols 313. The parser 304 may receive the encoded data and selectively decode particular symbols 313. Additionally, the parser 304 may determine whether the particular symbol 313 should be provided to the motion compensated prediction unit 306, the scaler / inverse transform unit 305, the intra prediction unit 307, or the loop filter 311.
[0031] The reconstruction of symbols 313 may involve several different units depending on the type of coded video picture or part thereof (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how may be controlled by subgroup control information parsed from the coded video sequence by parser 304. The flow of such subgroup control information between parser 304 and the following units is not shown for clarity.
[0032] Besides the functional blocks already mentioned, the decoder 300 can be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units will closely interact with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate:
[0033] The first unit is a scalar / inverse transform unit 305. The scalar / inverse transform unit 305 receives the quantized transform coefficients and control information including the transform to use, block size, quantization factor, quantization scaling matrix, etc. as symbols 313 from the parser 304. The scalar / inverse transform unit 305 can output blocks containing sample values that can be input to an aggregator 310.
[0034] In some cases, the output samples of the scalar / inverse transform unit 305 may relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture, but can use prediction information from a previously reconstructed part of the current picture. Such prediction information can be provided by the intra-picture prediction unit 307. In some cases, the intra-picture prediction unit 307 uses surrounding already reconstructed information fetched from the current (partially reconstructed) picture 309 to generate a block of the same size and shape as the block being reconstructed. The aggregator 310 adds, possibly on a sample-by-sample basis, the prediction information generated by the intra-prediction unit 307 to the output sample information provided by the scalar / inverse transform unit 305.
[0035] In other cases, the output samples of the scalar / inverse transform unit 305 may relate to an inter-coded, potentially motion-compensated block. In such cases, the motion compensated prediction unit 306 may access the reference picture memory 308 to fetch samples used for prediction. After motion compensating the fetched samples according to the symbols 313 relating to the block, these samples may be added by the aggregator 310 to the output of the scalar / inverse transform unit to generate output sample information (in this case referred to as residual samples or residual signals). The addresses in the reference picture memory format from which the motion compensation unit fetches the prediction samples may be controlled by a motion vector and may be made available to the motion compensation unit in the form of symbols 313 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 when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.
[0036] The output samples of the aggregator 310 may be subjected to various loop filtering techniques in a loop filter unit 311. The video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video bitstream and available to the loop filter unit 311 as symbols 313 from the parser 304, but may also be responsive to meta-information obtained during decoding of a coded picture or previous (in decoding order) part of a coded video sequence, or to previously reconstructed and loop filtered sample values.
[0037] The output of the loop filter unit 311 may be a sample stream that can be output to the rendering device 312 as well as stored in the reference picture memory 557 for use in future inter-picture prediction.
[0038] Once fully reconstructed, a particular coded picture can be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture has been identified as a reference picture (e.g., by parser 304), the current reference picture 309 can become part of the reference picture buffer 308, and a new current picture memory can be reallocated before starting reconstruction of the following coded picture.
[0039] The video decoder 300 may perform decoding operations according to a given video compression technique, which may be documented in a standard such as ITU-T Rec. H.265. The coded video sequence may conform to the syntax specified by the video compression technique or standard being used in the sense that it complies with the syntax of the video compression technique or standard as specified in the video compression technical document or standard, and specifically as specified in the profile documented therein. Also, what is required for compliance may be 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, the maximum frame rate, the maximum reconstructed sample rate (e.g., measured in megasamples per second), the maximum reference picture size, etc. The limits set by the level may be further limited in some cases by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled within the coded video sequence.
[0040] In one embodiment, the receiver 302 may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder 300 to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, a temporal layer, a spatial layer, or a signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, forward error correction codes, etc.
[0041] FIG. 4 may be a functional block diagram of a video encoder 400 according to one embodiment of the present disclosure.
[0042] The encoder 400 may receive video samples from a video source 401 (not part of the encoder), which may capture video images to be coded by the encoder 400 .
[0043] The video source 401 may provide a source video sequence to be coded by the encoder (303) in the form of a digital video sample stream that may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...) and any suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source 401 may be a storage device that stores previously prepared video. In a video conferencing system, the video source 401 may be a camera that captures local image information as a video sequence. The video data may be provided as a number of separate pictures that give motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.
[0044] According to an embodiment, the encoder 400 may code and compress pictures of a source video sequence into a coded video sequence 410 in real time or under any other time constraint required by the application. Providing an appropriate coding rate is one function of the controller 402. The controller controls and is functionally coupled to other functional units as described below. For clarity, coupling is not depicted. Parameters set by the controller may include rate control related parameters (picture skip, quantizer, lambda value of rate distortion optimization technique, etc.), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art may easily identify other functions of the controller 402 as they may relate to the video encoder 400 being optimized for a particular system design.
[0045] Some video encoders operate in what those skilled in the art will easily recognize as a "coding loop." As an oversimplified explanation, the coding loop may consist of an encoding part of the encoder 400 (hereafter "source coder") (responsible for creating symbols based on the input picture to be encoded and reference pictures), and a (local) decoder 406 embedded in the encoder 400 that reconstructs the symbols to create sample data that the (remote) decoder will also create (since any compression between the symbols and the encoded video bitstream is lossless in the video compression techniques considered in the disclosed subject matter). The reconstructed sample stream is input to a reference picture memory 405. The decoding of the symbol stream results in bit-exact results regardless of the location of the decoder (local or remote), so the reference picture buffer contents are also bit-exact between the local and remote encoders. In other words, the predictive part of the encoder "sees" exactly the same sample values as the decoder "sees" when using prediction during decoding as reference picture samples. This basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, for example due to channel errors) is well known to those skilled in the art.
[0046] The operation of the "local" decoder 406 may be the same as that of the "remote" decoder 300, which has already been described in detail above in relation to Figure 3. However, with brief reference also to Figure 4, because symbols are available and the encoding / decoding of symbols into a coded video sequence by the entropy coder 408 and the parser 304 may be lossless, the entropy decoding portion of the decoder 300, including the channel 301, the receiver 302, the buffer 303, and the parser 304, may not be fully implemented in the local decoder 406.
[0047] At this point, it can be said that any decoder technique, other than analysis / entropy decoding, present in the decoder must necessarily also be present in the corresponding encoder in substantially the same functional form. A description of the encoder techniques can be omitted, since they are the inverse of the decoder techniques described generically. Only in certain areas is a more detailed description necessary, which is presented below.
[0048] As part of its operation, source coder 403 may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence, designated as “reference frames.” In this method, coding engine 407 codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references to the input frame.
[0049] The local video decoder 406 may decode the coded video data of the frames that may be designated as reference frames based on the symbols created by the source coder 403. The operation of the coding engine 407 may preferably be a lossy process. When the coded video data may be decoded in a video decoder (not shown in FIG. 4), the reconstructed video sequence may be a copy of the source video sequence, usually with some errors. The local video decoder 406 may replicate the decoding process that may be performed on the reference frames by the video decoder, and store the reconstructed reference frames in the reference picture memory 405, which may be, for example, a cache. In this way, the encoder 400 may locally store copies of the reconstructed reference frames that have common content as the reconstructed reference frames that will be retrieved by the far-end video decoder (without transmission errors).
[0050] The predictor 404 may perform a prediction search for the coding engine 407. That is, for a new frame to be coded, the predictor 404 may search the reference picture memory 405 for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., that may serve as suitable prediction references for the new picture. The predictor 404 may operate on a pixel block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor 404, the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory 405.
[0051] The controller 402 may manage the coding operations of a source coder 403, which may be, for example, a video coder, including, for example, setting parameters and subgroup parameters used to encode the video data.
[0052] The output of all the aforementioned functional units may undergo entropy coding in an entropy coder 408. The entropy coder converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as, for example, Huffman coding, variable length coding, arithmetic coding, etc.
[0053] The transmitter 409 may buffer the coded video sequence created by the entropy coder 408 and prepare it for transmission over a communication channel 411, which may be a hardware / software link to a storage device that will store the coded video data. The transmitter 409 may merge the coded video data from the source coder 403 with other data to be transmitted, such as coded audio data and / or an auxiliary data stream (source not shown).
[0054] The controller 402 may manage the operation of the encoder 400. During coding, the controller 402 may assign a particular coded picture type to each of the coded pictures, which may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following frame types:
[0055] An intra picture (I-picture) may be a picture that can be coded and decoded without using any other frame in a sequence as a source of prediction. Some video codecs allow various types of intra pictures, including, for example, independent decoder refresh pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0056] A predictive picture (P picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict sample values for each block.
[0057] A bidirectionally predicted picture (B-picture) may be a picture that can be coded and decoded using intra- or inter-prediction that uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multi-predicted picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0058] A source picture may generally be spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples, respectively) and coded block by block. A block may be predictively coded with reference to other (already coded) blocks as determined by the coding assignment applied to the block's respective picture. For example, a block of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial or intra prediction). A pixel block of a P-picture may be non-predictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. A block of a B-picture may be non-predictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0059] Encoder 400, which may be, for example, a video coder, may perform coding operations according to a given video coding technique or standard, such as ITU-T Rec. H.265. In its operations, encoder 400 may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in an input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0060] In one embodiment, the transmitter 409 may transmit additional data along with the encoded video. The source coder 403 may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.
[0061] FIG. 5 illustrates a simplified block-style workflow diagram 500 of example viewport-dependent processing in Omnidirectional Media Application Format (OMAF) that may enable 360-degree virtual reality (VR360) streaming described in OMAF.
[0062] In acquisition block 501, video data A, such as multiple image and audio data of the same time instance, is acquired if the image data can represent a scene in VR360. In processing block 503, image B of the same time instance is acquired. i are processed by one or more of stitching, mapping to a projected picture for one or more virtual reality (VR) angles or other angles / viewpoints, and packed by region. In addition, metadata indicating any of such processed information and other information may be created to aid in the distribution and rendering process.
[0063] For data D, in the image coding block 505, the projected picture is i In viewport independent streaming, the video pictures are encoded into a media file, and in the video encoding block 504, the video pictures are encoded into a data E, for example as a single layer bitstream. v and data B is encoded as a Regarding the audio data, the audio data is also encoded in the audio encoding block 502 as data E a can be encoded as:
[0064] Data E a , E v , and E i , the coded bitstream F iand / or the entire F may be stored on a (content delivery network (CDN) / cloud) server and may be transmitted in its entirety, typically at a distribution block 507, to an OMAF player 520 and may be fully decoded by a decoder, whereby at least the area of the decoded picture corresponding to the current viewport is rendered to the user at a display block 516, from a head / eye tracking block 508, along with various metadata, file playback, and orientation / viewport metadata, e.g., regarding the angle the user can see through the VR image device with respect to the viewport specifications of that device. A distinct feature of VR360 is that only viewports may be displayed at any particular time, and such features may be exploited to improve the performance of omnidirectional video systems by selective delivery according to the user's viewport (or any other criteria, such as preferred viewport timed metadata). For example, viewport-dependent delivery may be enabled by tile-based video coding according to an exemplary embodiment.
[0065] Similar to the coding blocks discussed above, the OMAF player 520 according to the exemplary embodiment receives data F′ and / or F′ i 5, and similarly reverses one or more facets of such encoding with respect to file / segment deencapsulation of one or more of the metadata to produce audio data E' at audio decoding block 510. i , the video decoding block 513 receives the video data E' v , and image data E' in image decoding block 514. i is decoded to produce data B' in the audio rendering block 511. a 3, proceeds with the audio rendering and image rendering of data D' in an image rendering block 515 to render display data A' in a display block 516 in VR360 format according to various metadata such as orientation / viewport metadata. i and audio data A' at speaker / headphone block 512 sIt should be understood that various metadata may affect one of the data decoding and rendering processes depending on various tracks, languages, qualities, views that may be selected by or for a user of the OMAF player 520, and that the order of processing described herein is presented for an exemplary embodiment and may be performed in other orders according to other exemplary embodiments.
[0066] 6 illustrates a simplified block-style content flow process diagram 600 of (coded) point cloud data with view position and angle dependent processing of point cloud data (herein "V-PCC") for 6-DOF media capture / generation / (de)coding / rendering / display. It should be understood that the described features may be used separately or combined in any order, and elements such as encoding and decoding may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits), particularly as illustrated, and the one or more processors may execute a program stored on a non-transitory computer-readable medium according to an exemplary embodiment.
[0067] Diagram 600 illustrates an example embodiment for streaming coded point cloud data with V-PCC.
[0068] In volumetric data acquisition block 601, a real-world visual scene or a computer-generated visual scene (or a combination thereof) may be captured by a set of camera devices or may be synthesized by a computer as volumetric data, and the volumetric data, which may have any format, may be converted to a (quantized) point cloud data format via image processing in conversion to point cloud block 602. For example, the data from the volumetric data may be area data, according to an exemplary embodiment, with area data converted to one of the points of the point cloud by pulling one or more of the values described below from the volumetric data and any associated data into the desired point cloud format. According to an exemplary embodiment, the volumetric data may be a 3D dataset of 2D images, such as slices, which may project a 2D projection of the 3D dataset. According to an example embodiment, a point cloud data format includes a representation of data points in one or more various spaces and may be used to represent volumetric data and may provide improvements with respect to sampling and data compression with respect to temporal redundancy, etc. For example, point cloud data in an x,y,z format may represent color values (e.g., RGB, etc.), brightness, intensity, etc. at each point of a plurality of points of cloud data and may be used with progressive decoding, polygon meshes, direct rendering, octree 3D representations of 2D quadtree data.
[0069] In the projection onto image block 603, the acquired point cloud data may be projected onto a 2D image and encoded as an image / video picture using video-based point cloud coding (V-PCC). The projected point cloud data may consist of attributes, geometry, occupancy maps, and other metadata used for point cloud data reconstruction using, for example, Painter's algorithm, ray casting algorithms, (3D) binary space partitioning algorithms, among others.
[0070] Meanwhile, in the scene generator block 609, the scene generator may generate some metadata used to render and display 6 degrees of freedom (DoF) media, for example, according to the director's intent or user's preferences. Such 6DoF media may include 360VR like 3D view of the scene from rotational changes on 3D axes X, Y, Z, in addition to additional dimensions that allow for forward / backward, up / down, and left / right movement within the point cloud coded data, or at least for the virtual experience according to it. The scene description metadata defines one or more scenes composed of the coded point cloud data and other media data including VR360, light field, audio, etc., and may be provided to one or more cloud servers and / or file / segment encapsulation / deencapsulation processes, as shown in FIG. 6 and related description.
[0071] After a video encoding block 604 and an image encoding block 605 similar to the video and image encoding described above (it will be appreciated that audio encoding may also be provided as described above), a file / segment encapsulation block 606 processes the coded point cloud data to be arranged into a media file for file playback, or a sequence of initialization segments, and media segments for streaming according to a particular media container file format, such as one or more video container formats, such as may be used in relation to DASH, described below, such as representing an exemplary embodiment. The file container may also include scene description metadata, such as from a scene generator block 1109, in the file or segment.
[0072] According to an exemplary embodiment, a file includes at least one view position and at least one or more angular views at the view position(s) at one or more times of the 6DoF media, encapsulated according to scene description metadata such that such a file may be transmitted on request according to user or creator input. Further, according to an exemplary embodiment, a segment of such a file may include one or more portions of such a file, e.g., a portion of the 6DoF media showing one viewpoint and an angle at one or more times, although these are merely exemplary embodiments and may be changed according to various conditions such as network, user, creator capabilities and input.
[0073] According to an example embodiment, the point cloud data is partitioned into multiple 2D / 3D regions that are coded independently, such as in one or more of the video coding block 604 and the image coding block 605. Then, each partition of the independently coded point cloud data may be encapsulated as a track in a file and / or segment in the file / segment encapsulation block 606. According to an example embodiment, each point cloud track and / or metadata track may include some useful metadata for view position / angle dependent processing.
[0074] According to an example embodiment, metadata useful for view position / angle dependent processing, such as included in files and / or segments encapsulated with respect to a file / segment encapsulation block, includes one or more of the following: layout information of 2D / 3D partitions with indexes; (dynamic) mapping information associating a 3D volume partition with one or more 2D partitions (e.g., tiles / tile groups / slices / subpictures); 3D position of each 3D partition on the 6DoF coordinate system; a representative view position / angle list; a selected view position / angle list corresponding to the 3D volume partition; an index of the 2D / 3D partition corresponding to the selected view position / angle; quality (rank) information of each 2D / 3D partition; and rendering information of each 2D / 3D partition according to, for example, each view position / angle. Invoking such metadata when requested, such as by a user of the V-PCC player or as directed by a content creator on behalf of a user of the V-PCC player, may enable more efficient processing with respect to the particular portion of the 6DoF media that is desired with respect to such metadata, such that the V-PCC player may deliver a higher quality image that is focused on that portion of the 6DoF media more than other portions, rather than delivering unused portions of that media.
[0075] From the File / Segment Encapsulation block 606, the file or one or more segments of the file may be delivered directly to either the V-PCC Player 625 and a cloud server such as the Cloud Server block 607 using a delivery mechanism (e.g., Dynamic Adaptive Streaming over HTTP (DASH)), which may extract one or more tracks and / or one or more specific 2D / 3D partitions from the file and may merge multiple coded point cloud data into one data.
[0076] If the current viewing position and angle is defined in the 6DoF coordinate system at the client system according to data such as position / view angle tracking block 608, then in the cloud server block 607, the view position / angle metadata may be delivered from the file / segment encapsulation block 606 or otherwise processed from files or segments already on the cloud server, so that the cloud server can extract the appropriate partitions from the store files and merge them (if necessary) depending on the metadata, for example from a client system having a V-PCC player 625, and the extracted data can be delivered to the client as files or segments.
[0077] With regard to such data, in file / segment decapsulation block 615, a file decapsulator processes the file or received segment, extracts the coded bitstream and parses the metadata, and in video decoding and image decoding blocks 610 and 611, the coded point cloud data is then decoded and reconstructed into point cloud data in point cloud reconstruction block 612, which can be displayed in display block 614 and / or may be initially configured according to one or more various scene descriptions in scene composition block 613 with respect to scene description data in accordance with scene generator block 609.
[0078] In view of the above, such an exemplary V-PCC flow represents advantages over the V-PCC standard including one or more of the described partitioning capabilities for multiple 2D / 3D areas, the capability of compressed domain assembly of coded 2D / 3D partitions into a single conforming coded video bitstream, and the capability of coded 2D / 3D bitstream extraction of coded pictures into a conforming coded bitstream, such V-PCC system support being further improved by including a container formation for a VVC bitstream to support a metadata-containing mechanism for carrying one or more of the above-mentioned metadata.
[0079] In that respect, according to the exemplary embodiment described further below, the term "mesh" or "input mesh", e.g. as the initially obtained mesh, denotes a configuration of one or more polygons describing the surface of a volumetric object. Each polygon is defined by its vertices in 3D space and information on how the vertices are connected, called connectivity information. Optionally, vertex attributes such as color, normal, etc. may be associated with the mesh vertices. Attributes may also be associated with the surface of the mesh by utilizing mapping information that parameterizes the mesh with a 2D attribute map. Such mapping may be described by a set of parametric coordinates, called UV coordinates or texture coordinates, associated with the mesh vertices. The 2D attribute map is used to store high-resolution attribute information such as texture, normal, displacement, etc. Such information may be used for various purposes, such as texture mapping and shading according to the exemplary embodiment.
[0080] Nevertheless, dynamic mesh sequences may require a large amount of data since it may consist of a significant amount of information that changes over time. Therefore, efficient compression techniques are required to store and transmit such content. Mesh compression standards IC, MESHGRID, FAMC were previously developed by MPEG to address dynamic meshes with constant connectivity and time-varying geometry and vertex attributes. However, these standards do not consider time-varying attribute maps and connectivity information. DCC (Digital Content Creation) tools typically generate such dynamic meshes. Correspondingly, it is difficult for volumetric acquisition techniques to generate constant connectivity dynamic meshes, especially under real-time constraints. This type of content is not supported by existing standards. According to exemplary embodiments herein, aspects of a new mesh compression standard are described to directly handle dynamic meshes with time-varying connectivity information and optionally time-varying attribute maps, which targets lossy and lossless compression for various applications such as real-time communication, storage, free viewpoint video, AR and VR. Features such as random access and scalable / progressive coding are also considered.
[0081] FIG. 7 represents one dynamic mesh compression example framework 700 for 2D atlas sampling based methods, etc. Each frame of an input mesh 701 can be pre-processed by a series of operations, such as tracking, remeshing, parameterization, voxelization, etc. Note that these operations can be encoder only, meaning that they may not be part of the decoding process, and such a possibility may be signaled in the metadata by a flag, such as 0 indicating only to the encoder and 1 indicating elsewhere. Then, a mesh with a 2D UV atlas 702 can be obtained, and each vertex of the mesh has one or more associated UV coordinates on the 2D atlas. The mesh can then be converted into multiple maps, including geometry maps and attribute maps, by sampling on the 2D atlas. These 2D maps can then be coded by a video / image codec, such as HEVC, VVC, AV1, AVS3, etc. At the decoder 703 side, a mesh can be reconstructed from the decoded 2D maps. Any post-processing and filtering can also be applied to the reconstructed mesh 704. Note that metadata may be signaled to the decoder side for the purpose of 3D mesh reconstruction. Note that chart boundary information, including uv and xyz coordinates of boundary vertices, can be predicted, quantized, and entropy coded in the bitstream. The quantization step size can be configured on the encoder side for a tradeoff between quality and bitrate.
[0082] In some implementations, a 3D mesh can be partitioned into several segments (or patches / charts), and one or more 3D mesh segments can be considered to be a "3D mesh" according to an example embodiment. Each segment is composed of a set of connected vertices associated with their geometry, attributes, and connectivity information. As shown in the volumetric data example 800 in FIG. 8, a UV parameterization process 802 that maps 3D mesh segments to 2D charts, such as the 2D UV atlas 702 block described above, maps one or more mesh segments 801 to a 2D chart 803 in a 2D UV atlas 804. Each vertex (v n ) are assigned 2D UV coordinates in the 2D UV atlas. n ) form a connected component as their 3D counterparts. The geometry, attributes, and connectivity information of each vertex may be inherited from their 3D counterparts as well. For example, vertex v4 may indicate that it is directly connected to vertices v0, v5, v1, and v3, and so on for each of the other vertices. Furthermore, such a 2D textured mesh may further indicate information such as color information for each triangular patch, e.g., v2, v5, v3, etc. as one "patch", according to an exemplary embodiment.
[0083] For example, see example 900 of FIG. 9, in addition to the features of example 800 of FIG. 8, a 3D mesh segment 801 can also be mapped to multiple separate 2D charts 901 and 902. In this case, a 3D vertex can correspond to multiple vertices in the 2D UV atlas. As shown in FIG. 9, the same 3D mesh segment is mapped to multiple 2D charts in the 2D UV atlas, instead of a single chart as in FIG. 8. For example, 3D vertices v1 and v4 each have two 2D correspondences v1,v 1’ and v4,v 4’Thus, a typical 2D UV atlas of a 3D mesh may be composed of multiple charts, as shown in Figure 14, where each chart may contain multiple vertices (usually three or more) associated with their 3D geometry, attributes, and connectivity information.
[0084] FIG. 9 shows an example 903 illustrating the derived triangulation in a chart with boundary vertices B0, B1, B2, B3, B4, B5, B6, B7. When such information is presented, any triangulation method can be applied to create connectivity between vertices (including boundary vertices and sampled vertices). For example, for each vertex, find the two closest vertices. Or, for every vertex, generate triangles successively until a minimum number of triangles is achieved after a set number of attempts. As shown in example 903, there are various regular shaped repeating triangles and various irregular shaped triangles, which are generally closest to the boundary vertices and have their own dimensions that may or may not be shared with other triangles. The connectivity information can also be reconstructed by explicit signaling. If the polygon cannot be restored by implicit rules, the encoder can signal the connectivity information in the bitstream according to an exemplary embodiment.
[0085] Boundary vertices B0, B1, B2, B3, B4, B5, B6, B7 are defined in 2D UV space. Boundary edges can be determined by checking if the edge appears in only one triangle. The following information of the boundary vertices is important and should be signaled in the bitstream according to the exemplary embodiment: geometry information, e.g., 3D XYZ coordinates even though currently in 2D UV parametric form, and 2D UV coordinates.
[0086] As shown in Figure 9, if a 3D bounding vertex corresponds to multiple vertices in the 2D UV atlas, the mapping from 3D XYZ to 2D UV can be one-to-many. Therefore, a UV-to-XYZ (or called UV2XYZ) index can be signaled to indicate the mapping function. UV2XYZ can be a 1D array of indices that maps each 2D UV vertex to a 3D XYZ vertex.
[0087] According to an example embodiment, to efficiently represent a mesh signal, a subset of mesh vertices may be first coded along with connectivity information between them. In the original mesh, connections between these vertices may not exist because they are subsampled from the original mesh. There are various ways to signal connectivity information between vertices, and thus such a subset is referred to as a base mesh or base vertices.
[0088] According to an exemplary embodiment, several methods are implemented for dynamic mesh compression, which are part of the edge-based vertex prediction framework described above, where a base mesh is first coded and then more additional vertices are predicted based on connectivity information from the edges of the base mesh. It should be noted that the methods may be applied individually or in any form of combination.
[0089] Consider, for example, the vertex grouping for prediction mode example flowchart 1001 of FIG. 10. In S201, vertices in a mesh may be obtained and in S202, they may be divided into different groups for prediction purposes, see, for example, FIG. 9. In one example, the division is done using patch / chart partitioning in S204. In another example, the division is done under each patch / chart in S205. The decision S203 to proceed to S204 or S205 may be signaled by a flag or the like. For S205, some vertices of the same patch / chart form a prediction group and share the same prediction mode, while some other vertices of the same patch / chart may use a different prediction mode. Here, a "prediction mode" may be considered to be a particular mode that a decoder uses to make predictions for video content including patches, and prediction modes may be categorized into intra prediction modes and inter prediction modes, and within each category, there may be different particular modes that a decoder selects. According to an exemplary embodiment, each group, "prediction group", may share the same specific mode (e.g., angular mode at a specific angle) or the same categorical prediction mode (e.g., all intra prediction modes, but can be predicted at different angles) according to an exemplary embodiment. Such grouping in S206 can be assigned at different levels by determining the respective number of vertices included per group. For example, every 64, 32, or 16 vertices according to the scanning order in the patch / chart may be assigned the same prediction mode according to an exemplary embodiment, and other vertices may be assigned differently. For each group, the prediction mode can be an intra prediction mode or an inter prediction mode. This can be signaled or assigned.According to the exemplary flowchart 1000, if a mesh frame or mesh slice is determined to be of intra type in S207, such as by checking whether a flag in the mesh frame or mesh slice indicates an intra type, all vertex groups within that mesh frame or mesh slice shall use intra prediction mode, and if not, in S208, either an intra prediction mode or an inter prediction mode may be selected for each group for all vertices therein.
[0090] Furthermore, for a group of mesh vertices using intra prediction mode, the vertices can only be predicted by using previously coded vertices in the same subpartition of the current mesh. Sometimes, the subpartition can be the current mesh itself according to an exemplary embodiment, and for a group of mesh vertices using inter prediction mode, the vertices can only be predicted by using previously coded vertices from another mesh frame according to an exemplary embodiment. Each of the above information can be determined and signaled by a flag or the like. The prediction feature may occur in S210, and the result of the prediction and signaling may occur in S211.
[0091] According to an exemplary embodiment, for each vertex in the group of vertices of the exemplary flowchart 1000 and the flowchart 1100 described below, after prediction, the residual becomes a 3D displacement vector indicating the shift from the current vertex to its predictor. The residual of the group of vertices needs to be further compressed. In one example, the transformation in S211 can be applied to the residual of the vertex group before entropy coding, together with its signaling. To handle the coding of the group of displacement vectors, the following methods can be implemented. For example, one method appropriately signals the group of displacement vectors, some displacement vectors, or cases where its components have only zero values. In another embodiment, a flag is signaled for each displacement vector whether this vector has a non-zero component, and if not, the coding of all components of this displacement vector can be skipped. Furthermore, in another embodiment, a flag is signaled for each group of displacement vector whether this group has a non-zero vector, and if not, the coding of all displacement vectors of this group can be skipped. Further, in another embodiment, a flag is signaled for each component of the group of displacement vectors whether this component of the group has any non-zero vectors, and if not, coding of this component of all displacement vectors s of this group can be skipped. Further, in another embodiment, there may be signaling if a group of displacement vectors or a component of a group of displacement vectors needs a transform, and if not, the transform can be skipped and quantization / entropy coding can be applied directly to the group or group component. Further, in another embodiment, a flag may be signaled for each component of the group of displacement vectors whether this group needs to undergo a transform, and if not, transform coding of all displacement vectors of this group can be skipped. Further, in another embodiment, a flag is signaled for each component of the group of displacement vectors whether this component of the group needs to undergo a transform, and if not, transform coding of this component of all displacement vectors of this group can be skipped.The above-described embodiments in this paragraph regarding processing of vertex prediction residuals may also be performed in combination in parallel, each on a different patch.
[0092] FIG. 11 shows an example flowchart 1150 in which a mesh frame can be coded as a whole data unit to obtain in S221, meaning that all vertices or attributes of a mesh frame may have correlations between them. Alternatively, depending on the decision in S222, the mesh frame can be divided into smaller independent subpartitions in S223, in a similar concept to slices or tiles of a 2D video or image. A coded mesh frame or a coded mesh subpartition can be assigned a prediction type in S224. Possible prediction types include intra-coding type and inter-coding type. For intra-coding type, only prediction from a reconstructed part of the same frame or slice is allowed in S225. Meanwhile, inter-prediction type allows prediction from a previously coded mesh frame in addition to intra-mesh frame prediction in S225. Also, inter-prediction type may be classified into more subtypes, such as P type and B type. In P type, only one predictor may be used for prediction purpose, and in B type, two predictors from two previously coded mesh frames may be used to generate a predictor. A weighted average of two predictors can be an example. When a mesh frame is coded as a whole, the frame can be considered as an intra-coded or inter-coded mesh frame. For an inter-mesh frame, the P or B type can be further identified via signaling. Alternatively, when a mesh frame is further divided and coded within a frame, a prediction type for each sub-partition is assigned in S224. Each of the above information may be determined and signaled by a flag or the like, and the prediction feature may occur in S226, and the result of the prediction and signaling may occur in S227, similar to S210 and S211 in FIG. 10.
[0093] Thus, dynamic mesh sequences may consist of a significant amount of information that changes over time and therefore may require large amounts of data, but efficient compression techniques are needed to store and transmit such content, and the features described above with respect to Figures 20 and 21 represent such improved efficiency by enabling at least improved mesh vertex 3D position prediction by using either previously decoded vertices within the same mesh frame (intra prediction) or previously decoded vertices from a previously coded mesh frame (inter prediction).
[0094] Further, the exemplary embodiment may generate displacement vectors of a third layer 1303 of the mesh based on one or more of the reconstructed vertices of the second layer 1302 and its previous layer(s), such as the first layer 1301. Assuming that the index of the second layer 1302 is T, a predictor T+1 of a vertex of the third layer 1303 is generated based on at least the reconstructed vertices of the current layer or the second layer 1302. An example of such a layer-based prediction structure is shown in the example 1300 of FIG. 13, which illustrates reconstruction-based vertex prediction, i.e., progressive vertex prediction using edge-based interpolation, where a predictor is generated based on previously decoded vertices rather than predictor vertices. The first layer 1301 may be a mesh bounded by a first polygon 1340 having as its vertices the decoded vertices at its boundary and the interpolated vertices along one of the lines between those decoded vertices. As the progressive coding proceeds from the first layer 1301 to the second layer 1302, additional polygons 1341 may be formed by displacement vectors from one of the interpolated vertices of the first layer to additional vertices of the second layer 1302, so that the total number of vertices of the second layer 1302 may be greater than the total number of vertices of the first layer 1301. Similarly, when proceeding to the third layer 1303, the additional vertices of the second layer 1302, together with the decoded vertices from the first layer 1301, may function in the coding in the same way as the decoded vertices that functioned in proceeding from the first layer 1301 to the second layer 1303, i.e., multiple additional polygons may be formed. As a note, referring to example 1360 of FIG. 13 which illustrates such progressive coding, unlike example 1300, example 1360 illustrates that when moving from a first layer 1361 to a second layer 1362 and then to a third layer 1363, each of the additionally formed polygons may be entirely within the polygon formed by the boundary of the first layer 1361.
[0095] For such examples 1300 and / or 1360, which are summarized in example 1350 of FIG. 13, please refer to the example flowcharts 1201 and 1202 of example 1200 of FIG. 12, according to an exemplary embodiment, where the interpolated vertices on the current layer are predicted values, and therefore such values need to be reconstructed before being used to generate predictors for vertices on the next layer. This is done by coding a base mesh in S231, performing vertex prediction in S232, and then adding the decoded displacement vectors of the current layer to the predictors of vertices of layer 1302, etc. in S233. The reconstructed vertices of this layer 2303 can then be used to generate and signal predictor vertices of the next layer 1303 in S235, together with all the decoded vertices of the previous layer(s), such as checking the additional vertex values of such layer in S234. This process can also be summarized as follows: Let P[t](Vi) denote the predictor of vertex Vi on layer t, R[t](Vi) denote the reconstructed vertex Vi on layer t, D[t](Vi) denote the displacement vector of vertex Vi on layer t, and f(*) denote the predictor generator, which may in particular be the average of two existing vertices. Then, for each layer t, according to an exemplary embodiment there is: P[t](Vi)=f(R[s|s <t](Vj),R[m|m<t](Vk))、 During the ceremony Vj and Vk are the reconstructed vertices of the previous layer, R[t](Vi)=P[t](Vi)+D[t](Vi) Equation (1) It is.
[0096] Next, for all vertices in one mesh frame, we split them into layer 0 (base mesh), layer 1, layer 2, ... etc. The reconstruction of vertices on one layer then depends on the reconstruction of vertices on the previous layer(s). In the above, P, R and D each represent a 3D vector under the context of a 3D mesh representation. D is the decoded displacement vector, and quantization may or may not be applied to this vector.
[0097] According to an exemplary embodiment, vertex prediction using reconstructed vertices may only be applied to certain layers. For example, layer 0 and layer 1. For other layers, vertex prediction can still use nearby predictor vertices without adding displacement vectors to them for reconstruction. Thus, these other layers can be processed simultaneously without waiting for the previous layer to reconstruct. According to an exemplary embodiment, for each layer, it can be signaled whether to select reconstruction-based vertex prediction or predictor-based vertex prediction, or it can be signaled that a layer (and its subsequent layers) does not use reconstruction-based vertex prediction.
[0098] For displacement vectors generated by vertices whose vertex predictors are reconstructed, quantization can be applied to them without further transformation, such as a wavelet transform. For displacement vectors whose vertex predictors are generated by other predictor vertices, a transformation may be required and quantization can be applied to the transform coefficients of those displacement vectors.
[0099] Thus, dynamic mesh sequences may require a large amount of data since they may consist of a significant amount of information that changes over time. Therefore, efficient compression techniques are needed to store and transmit such content. In the framework of the interpolation-based vertex prediction method described above, one important step is to compress the displacement vectors, which account for a large portion of the coded bitstream, and the features of FIG. 12, for example, mitigate such problems by providing such compression.
[0100] Moreover, as with the other examples discussed above, even those embodiments may still require a large amount of data since dynamic mesh sequences may consist of a significant amount of information that changes over time, and thus efficient compression techniques are needed to store and transmit such content. In the framework of the 2D atlas sampling based method described above, important advantages can be achieved by inferring connectivity information from sampled vertices and boundary vertices at the decoder side. This is a major part of the decoding process and is the focus of further examples described below.
[0101] According to an exemplary embodiment, the connectivity information of the base mesh can be inferred (derived) from the decoded boundary vertices and sampled vertices of each chart on both the encoder and decoder sides.
[0102] Similar to the above, any triangulation method can be applied to create connectivity between vertices (including boundary vertices and sampled vertices). According to an example embodiment, the connectivity type can be signaled in a high-level syntax such as a sequence header or slice header.
[0103] As mentioned above, for irregularly shaped triangular meshes, the connectivity information can also be reconstructed by explicit signaling, i.e., if it is determined that a polygon cannot be reconstructed by implicit rules, the encoder can signal the connectivity information in the bitstream. Also, according to an exemplary embodiment, the overhead of such explicit signaling can be reduced depending on the boundaries of the polygon.
[0104] According to an embodiment, it is decided that only connectivity information between boundary vertices and sampled locations is to be signaled, and connectivity information between the sampled locations themselves is inferred.
[0105] Also, in any of the embodiments, connectivity information may be signaled by prediction, such that only the difference from the estimated connectivity (as a prediction) from one mesh to another may be signaled in the bitstream.
[0106] As a note, the inferred triangle orientation (e.g., inferred clockwise or counterclockwise for each triangle) can be signaled for all charts in a high-level syntax such as a sequence header or slice header, or fixed (assumed) by the encoder and decoder according to an example embodiment. The inferred triangle orientation can also be signaled differently for each chart.
[0107] As a further note, any reconstructed mesh may have a different connectivity than the original mesh, for example, the original mesh may be a triangle mesh and the reconstructed mesh may be a polygon mesh (e.g., a quad mesh).
[0108] According to an example embodiment, connectivity information of any base vertices may not be signaled, instead edges between base vertices may be derived using the same algorithm at both the encoder and decoder sides. Also according to an example embodiment, the predicted vertex interpolation of additional mesh vertices may be based on the derived edges of the base mesh.
[0109] According to an exemplary embodiment, a flag may be used to signal whether the connectivity information of the base vertices should be signaled or derived, and such a flag can be signaled at different levels of the bitstream, such as at the sequence level or the frame level.
[0110] According to an exemplary embodiment, the edges between the base vertices are first derived using the same algorithm on both the encoder and decoder sides.Then, the difference between the derived edges and the actual edges is signaled compared with the original connectivity of the base mesh vertices.Thus, after decoding the difference, the original connectivity of the base vertices can be restored.
[0111] In one example, for a derived edge, if it is determined to be erroneous when compared to the original edge, such information may be signaled in the bitstream (by indicating the pair of vertices that form this edge), and for an original edge, if it is not derived, such information may be signaled in the bitstream (by indicating the pair of vertices that form this edge). Furthermore, vertex interpolation involving connectivity on and to boundary edges may be performed separately from interior vertices and edges.
[0112] Thus, by way of the exemplary embodiments described herein, the technical problems noted above may be advantageously ameliorated by one or more of these technical solutions. For example, dynamic mesh sequences may require large amounts of data, as they may consist of a significant amount of information that changes over time, and thus the exemplary embodiments described herein represent at least an efficient compression technique for storing and transmitting such content.
[0113] The embodiments described herein may be further applied to a subdivision scheme to advantageously utilize dynamic meshes for efficient compression, as shown in a 1D diagram in example 1400 in FIG. 14, where an original curve 1491 is first thinned with a thinning curve 1492 and then subdivided with a subdivided curve 1493.
[0114] As shown in example 1400 of Figure 14, there are shown an original curve 1491, a thinned curve 1492, a subdivided curve 1493, and a displacement curve 1494. The thinned curve 1492 is thinned compared to the original curve 1491. The subdivided curve 1493 is subdivided compared to the thinned curve 1492. The displacement curve 1494 is displaced compared to the subdivided curve 1493.
[0115] The original curve 1491 includes points that may be vertices of the mesh, such as point 1410, point 1411, point 1412, point 1413, point 1414, point 1415, point 1416, point 1417, point 1418, point 1419, point 1420, point 1421, point 1422, point 1423, and point 1424.
[0116] The thinned curve 1492 may be a thinned version of the original curve 1482 and may include only points 1410, 1412, 1413, 1416, 1420, and 1424, thereby being simplified compared to the original curve 1491. The thinning may be based on the complexity of the original curve 1491, such that the fewest, or at least a fewer number of straight lines, approximate the original curve 1491, as shown by the example thinned curve 1492.
[0117] The subdivided curve 1493 is a subdivided version of the thinned curve 1493 and includes not only points 1410, 1412, 1413, 1416, 1420, and 1424, but also the subdivided points therebetween, such as points 1431', 1432', 1433', 1434', 1435', 1436', 1437', 1438', 1439', 1440', 1441', 1442', 1443', 1444', and 1445'. The subdivided points may be added as a predetermined number of points, such as three, between each point of the thinned curve 1492. Note that the number of points may vary. Each of the subdivided points, i.e., point 1431', point 1432', point 1433', point 1434', point 1435', point 1436', point 1437', point 1438', point 1439', point 1440', point 1441', point 1442', point 1443', point 1444', and point 1445', potentially serves as an anchor on the thinning curve 1492, as represented by the subdivided curve 1493 to which a displacement may be applied.
[0118] Displaced curve 1494 is a displaced version of subdivided curve 1493 and includes not only points 1410, 1412, 1413, 1416, 1420, and 1424, but also subdivided and displaced points therebetween, such as points 1431'', 1432'', 1433'', 1437'', 1438'', 1439'', 1440'', 1441'', 1442'', 1443'', 1444'', and 1445'', as well as subdivided points 1434', 1435', and 1436' that have not been displaced compared to subdivided curve 1493 because subdivided points 1434', 1435', and 1436' already accurately reflect their respective portions of original curve 1491. Points 1431", 1432", 1433", 1437", 1438", 1439", 1440", 1441", 1442", 1443", 1444", and 1445" are displaced compared to points 1431', 1432', 1433', 1437', 1438', 1439', 1440', 1441', 1442', 1443', 1444', and 1445', thereby reflecting the original curve 1491. Such reflection may be non-reversible or reversible according to various embodiments described herein.
[0119] The subdivided polyline from the subdivided curve 1493 is then transformed into a displacement curve 1494 to obtain a better approximation of the original curve 1491. More precisely, a displacement vector, if any, is calculated for each vertex of the subdivided mesh such that the shape of the displacement curve 1494 is as close as possible to the shape of the original curve 1491, or as close as necessary according to one or more of the aspects provided herein. The main advantage of the subdivided curve 1493 is that it has a subdivision structure that allows for efficient compression while providing a faithful approximation of the original curve 1491.
[0120] Nevertheless, dynamic mesh sequences may require large amounts of data since they may consist of a significant amount of information that changes over time. Subdivision-based methods such as those described below with reference to FIG. 19 can be utilized to compress dynamic mesh sequences, and since the displacements of the vertices of the subdivided meshes are signaled, efficient coding of the displacements is required for high-performance compression of dynamic meshes.
[0121] The above-described embodiment may further be applied to instance-based mesh coding, where an instance may be a mesh of an object or a part of an object. For example, the illustrated example 1600 of FIG. 16 shows an example mesh 1601 in which various instances 1602 (representing a mesh of a cup), 1603 (representing a mesh of a spoon), and 1604 (representing a mesh of a plate) exist and may be separated and coded, respectively. Also, each of the instances 1601, 1602, 1603, and 1604 are shown in respective bounding boxes, which will be further described below, but it should be noted that the instance 1601 may be considered to be shown bounded by a "mesh-based bounding box", and each of the instances 1602, 1603, and 1604 may be considered to be shown bounded by a respective "instance-based bounding box".
[0122] According to an exemplary embodiment, the proposed methods may be used separately or combined in any order. The proposed methods may be used for any polygon mesh, but only triangular meshes may be used to demonstrate the various embodiments. As mentioned above, it is assumed that an input mesh may contain one or more instances, and a sub-mesh is a portion of an input mesh that has one or more instances, and multiple instances may be grouped to form a sub-mesh.
[0123] In that regard, Figure 12 shows an example 1202 in which it is proposed to separately quantize different objects or parts at a given input bit depth (which bit depth may be referred to as "QP"). For example, in S1201, one or more input meshes may be taken and each separated into multiple sub-meshes. The sub-meshes may be objects, instances of objects, or segmented regions, which are independently quantized in S1202 according to an exemplary embodiment.
[0124] According to an example embodiment, a mesh M having m points at (x, y, z) coordinates may be quantized by the QP bit depth in S1202. The quantization step size for all three dimensions (x, y, z) may be determined based on the maximum length of the bounding box in all dimensions, d bbox >0. Also, the same quantization step size may be applied in S1204 to all objects in the mesh identified in S1203 such that:
number
number
number
number
[0125] However, in complex scenes, the largest objects are the background, which may be relatively simple in many cases and can tolerate higher quantization step sizes, while the main objects are smaller and suffer from large quantization errors that can be accounted for by various embodiments described further below.
[0126] Therefore, as shown in example 1202 of FIG. 12, the bounding box d bbox The maximum length of is always the bounding box of each instance, as follows:
number
number
number
[0127] For a given bit depth QP, the quantization step size of each of the instances 1602 (representing a mesh of a cup), 1603 (representing a mesh of a spoon), and 1604 (representing a mesh of a plate) is always
number
[0128] Therefore, the quantization error for each instance is smaller, and the overall quantization error is smaller.
[0129] According to various embodiments, looking at the flowchart 1700 of FIG. 17, the bit depth may be adaptively assigned to each instance / region, called a "sub-mesh," in S1702 and may be determined based on the areal density of that particular instance. Each sub-mesh may be obtained from the volumetric data of the mesh, which itself may signal each instance in the mesh individually, and each sub-mesh is derived from that mesh on an instance-by-instance basis in S1702. For example, each of the instances 1602, 1603, and 1604 may be assigned its own respective bit depth in S1704 according to its own particular areal density or number of vertices forming therein one or more of the aforementioned polygons. In general, the more faces each instance has, which may be determined by counting the number of such polygons therein, etc., in S1703, the less quantization should be applied to that instance in S1702. For example, given a mesh M, the total number of faces is n, and the faces corresponding to the kth sub-mesh are n such that k and
number
number
number
number
[0130] According to various embodiments, the meshes are represented as a base mesh B and its corresponding displacement D, which are quantized at different bit depths in S1702. For example, for the kth object, the bit depths of the base mesh B and its corresponding displacement D are
number
number
number
[0131] According to various embodiments, an adaptive bit depth parameter based on minimizing distortion may be used. For example, given an input bit depth QP, the mean square error (MSE) of the quantization method is ε_QP, which may be as in equation (4). The MSE of each sub-mesh is derived as ε_QP̂k=ω_k*ε_QP,∀k∈[1,...,K], where ω_k>0 is a weighting factor. In one example, ω_k=1∀k. A linear search is performed for each sub-mesh to find the best bit depth of the base mesh that satisfies:
number
[0132] In addition, the best bit depth for the displacement can also be obtained via:
number
[0133] According to an example embodiment, there may be signaling of the quantization of each object, such as by signaling the bit depth via the bit stream in the signal of S1707. The set of ascending base quantization bit depths is then sorted into corresponding displacement quantization bit depths.
number
number
[0134] [Table 1]
[0135] Where: - u(n) is an unsigned integer using n bits, i(n) is an integer using n bits, and mips_quant() is a sequence of signaling data. -mips_min_bbox[k] is the minimum of the bounding box in the i-th dimension, -mips_num_instances_minus1 is the number of instances in the mesh minus 1 -mips_base_bitdepth_minus1 is the bit depth of the first instance in this order, -mips_base_quant[k] is the difference between the quantization of the k+1th and kth submeshes. If the quantization set is sorted in ascending order, this number is always non-negative, -mips_dist_quant[k] is the kth quantization data for the bit depth of the base mesh.
[0136] According to various embodiments, to reduce signaling overhead, multiple instances may be grouped into K groups with the same bit depth. The instances can be clustered by a bounding box using a simple clustering method such as K-means clustering.
number
[0137] However, because such 3D scenes may often consist of multiple instances with similar mesh structures that reuse assets, further improvements may be realized by not only taking advantage of local characteristics but also by considering similarities between instances in accordance with exemplary embodiments.
[0138] For example, continuing from above, FIG. 18 shows an exemplary flowchart 1800 for finding redundant meshes and encoding corresponding displacements using an instance-based matching prediction (IMP) method, which may advantageously normalize instances to maximize their similarity and may be used in any of the embodiments described above.
[0139] For example, in S1801, an input mesh may be obtained and partitioned into multiple sub-meshes as described above, which may be instances of individual objects or portions of objects, according to an example embodiment.
[0140] At S1802, instances may be grouped into similarity groups using simple scaling features and similarity measures. For example, according to an embodiment, instances may be aligned and normalized so that only transient assets may be reused. Scale and orientation information may be signaled over a channel in IMP mode, and given an input mesh M with m instances, the i-th instance may be
number
number
[0141] According to an exemplary embodiment, in S1803, in response to the instruction of the flag, the IMP is used to select a size greater than 1, i.e., m k > 1 asset group
number
[0142] [Table 2]
[0143] Depending on the flag S1804, the coding in S1805 may be signaled to code the sub-meshes into sub-bitstreams independently. Each sub-mesh can be coded by a mesh codec with different coding parameters. Note that each sub-mesh can also be coded by a different mesh codec, in which case a codec index indicating which mesh codec is used needs to be signaled in the header of the sub-bitstream or the like. According to an exemplary embodiment, the sub-bitstreams of a sub-mesh can be coded and decoded in parallel without data dependency issues.
[0144] If the flag in S1804 indicates dependent coding instead, an additional flag may be considered in S1806 to indicate also the mode of dependently coding the sub-meshes. For example, according to an embodiment, a sub-mesh may be coded by prediction from other sub-meshes already coded. A prediction index may be coded to indicate which sub-mesh is used as a prediction. The prediction index may be signaled at different levels.
[0145] For example, in S1807, only one prediction index may be coded for the entire submesh, so that all vertices in the current submesh are predicted from the same submesh as indicated by the index according to an exemplary embodiment.
[0146] In S1808, a prediction index may be signaled for each vertex of the current submesh so that each vertex can be predicted from a different submesh. Note that the prediction index may also be coded by predictive coding, and the prediction index of a vertex may be predicted from neighboring coded vertices. Then, according to an exemplary embodiment, the prediction index residual may be coded by arithmetic coding.
[0147] In S1809, the prediction index may be signaled at an intermediate level between the vertex level and the sub-mesh level, for example at the vertex group level, where a group of vertices shares the same prediction index. Note that it is also possible to code the prediction indexes of different groups by predictive coding according to an exemplary embodiment. The signaling may be performed in S1810.
[0148] Then, given the prediction index of each vertex of the current submesh, each vertex can be predicted from the vertices in the corresponding submesh as described herein with any of the exemplary embodiments. According to the exemplary embodiment, a rigid motion may be estimated from the prediction submesh to the current submesh, and the parameters of the rigid motion (e.g., rotation and translation parameters) can be coded. Then, after applying the rigid motion to the prediction submesh, the residual of the attributes of the current vertex can be obtained by subtracting the attributes of the corresponding vertex in the transformed prediction submesh. The attributes of the vertex can include, but are not limited to, geometry, color, normal, uv coordinates, connectivity, etc. The residual information can then be coded by arithmetic coding according to the exemplary embodiment.
[0149] Additionally, such coding may be applied to coding of material and texture information per sub-mesh, which may include, but is not necessarily limited to, ambient color, diffuse color, specular color, specular highlight focus, dissolve coefficients, lighting model, texture image ID, etc.
[0150] According to an example embodiment, one sub-mesh only allows one set of material and texture information, and in such a case this information can simply be coded in the header of the sub-bitstream.
[0151] Or, according to an exemplary embodiment, one submesh may have two or more sets of material and texture information, in which case the sets may be coded in the header of the subbitstream. Note that these parameters in different sets may be coded independently or dependently. If dependent coding is applied, prediction may be applied and the prediction residual of the material parameters may be coded instead. Then, for each vertex in the submesh, a material ID may be coded to indicate which set of material information is used for this vertex. Note that according to an exemplary embodiment, in order to reduce redundancy, the material ID (identifier) may be coded by predicting from the coded neighbor vertices.
[0152] Thus, according to embodiments herein, it is realized that complex meshes may often contain information about multiple instances to associate texture maps, and that information may be available at the time of encoding, so that each instance may be considered a 3D asset in 3D design according to exemplary embodiments herein, as the asset may be frequently used to reduce costs in designing models, especially for the synthesis of complex scenes. For example, 3D models may be reused with or without textures modified with differences in scale, orientation, etc. This, among other aspects mentioned above, addresses issues related to matching and searching 3D objects, since meshes may be normalized to position, size, and orientation based on PCA (principal component analysis) or bilateral symmetry planes, and thereby may be searched more efficiently.
[0153] FIG. 15 shows an example 1500 of block partitioning by using a quad-tree binary tree (QTBT) 1501 and corresponding tree representation 1502. The solid lines indicate quad-tree partitioning and the dotted lines indicate binary tree partitioning. At each partition (i.e., non-leaf) node of the binary tree, one flag is signaled to indicate which partition type is used (i.e., horizontal or vertical), with 0 indicating horizontal partitioning and 1 indicating vertical partitioning. In the case of quad-tree partitioning, there is no need to indicate the partition type, since quad-tree partitioning always partitions a block both horizontally and vertically to generate four sub-blocks of equal size.
[0154] The coding tree unit (CTU) is divided into coding units (CUs) by using a quadtree structure represented as a coding tree to fit various local characteristics. The decision of whether to use inter-picture (temporal) prediction or intra-picture (spatial) prediction to code a picture area is made at the CU level. Each CU can be further divided into one, two, or four prediction units (PUs) according to the PU partition type. Within one PU, the same prediction process is applied, and related information is transmitted to the decoder on a PU basis. After obtaining the residual block by applying the prediction process based on the PU partition type, the CU can be partitioned into transform units (TUs) according to another quadtree structure such as the coding tree of the CU.
[0155] According to an exemplary embodiment, there are both lossless and lossy mesh coding techniques: A base mesh may be extracted as a subset of the original mesh, and the remaining vertices are coded based on distance-based predictive displacement coding.
[0156] According to exemplary embodiments, the aspects described herein may be used separately or combined in any order, may be used for any polygon mesh, and geometry may be coded by a base mesh and predictive displacement coding. For example, looking at the example 1900 of FIG. 19, according to exemplary embodiments, the vertex displacements (displacement vectors) of the subdivided mesh are calculated and transformed, such as by one or more embodiments herein, and either by discrete cosine transform (DCT), or Fourier transform, or wavelet transform, etc., and it may be assumed that the output of the transform (i.e., coefficients) has lower entropy compared to the original displacements and can therefore be compressed more efficiently. For example, the magnitude of the scaling coefficients (low frequency components) of the wavelet transform (such scaling coefficients may increase or decrease the level of detail) may generally be larger than the wavelet coefficients (high frequency components). Thus, when the coefficients are quantized and ordered from low level of detail (LOD) to high LOD, the magnitude of the quantized coefficients will be in descending order, and most of the coefficients near the end will be zero. Given these assumptions, the aspect described with respect to FIG. 19 represents an improved coefficient coding, and such coding may generally be considered in the context of intra-mode coding.
[0157] A subdivided mesh may be obtained in S1901, and it may be checked whether a tree structure is signaled in S1902; if not, the coefficients of the transformed displacement vectors have lower entropy, especially after quantization, so that the coefficients may be efficiently compressed using an entropy coding algorithm such as arithmetic coding; for example, in S1903, the displacement vectors of different vertices may be arranged to form 1D arrays, and the transformation in S1904 may be applied to these arrays. For example, an array may be formed for each component of each vertex, and an index may be signaled in S1906 to indicate the last position of a non-zero coefficient in the array to avoid coding zeros near the end of the array. To further improve the efficiency of the entropy coding, a coding context may be specified at each level of detail (LOD), since coefficients of different LODs usually have different magnitudes. In one example, for each LOD and each component, the last position of a non-zero coefficient is signaled. If the value is signaled as 0, it means that all coefficients of this group are 0 and no coefficient needs to be decoded. In particular, if a 3D displacement vector is being considered, three such indices for each of the vector components may be signaled in S1906. In the above, the transformation in S1904 may optionally be applied to the displacement vector.
[0158] If it is determined in S1902 that the coefficients have a tree structure, the high frequency coefficients are descendants of the low frequency components, and the utilization aspect in S1906 may be applied according to the embodiment of the present specification by the tree structure to improve coding performance. For example, if it is signaled that loop subdivision or midpoint subdivision is used to subdivide the mesh, and it is determined that the wavelet transform is applied to the subdivided mesh, the tree structure of the wavelet coefficients may be obtained by determining the fact that each edge on level i (example 1504, parent of the coarse edge) is the parent of four edges (three child edges if the parent edge is a boundary edge) on level i+1 (example 1505, four finer edges with the same orientation as the parent edge of the coarser edge), as shown in example 1503 of FIG. As a result, each wavelet coefficient on level i (except the last level) has three or four child coefficients on level i+1, such that an edge on the base mesh or a wavelet coefficient on level 1 is determined to be the root of the tree according to the exemplary embodiment (i.e., according to the exemplary embodiment, it can simply be assumed that any descendant tree node coefficient may be 0 unless specifically coded).
[0159] According to an example embodiment, utilizing a tree structure in S1906 may be using a zerotree-based algorithm, such as Embedded Zerotree Wavelet (EZW) or Set Partitioning in Hierarchical Trees (SPIHT), that efficiently codes the positions of non-zero coefficients by using statistical properties of the tree (as opposed to the arithmetic coding described above). In particular, all descendants of a zero coefficient are likely to be zero as well, which is known as a zerotree.
[0160] In addition to coding efficiency, the EZW and SPIHT algorithms also generate an embedded bitstream according to an exemplary embodiment in which bits are generated in order of importance. If it is determined that an embedded code is not necessary, which may be signaled by a preset flag or the like, the embodiments herein may use the zerotree structure only to code the coefficients. Specifically, a percentage of the zerotree may be calculated, which is the proportion of zero coefficients that are roots of the zerotree among those that are not descendants of the zerotree and are not at LOD0 or the last LOD. If the percentage is determined to be above a given threshold, the zerotree structure may be signaled to be used for coding, otherwise it may be signaled that the zerotree structure is not considered. The signaling may be by one or more flags. Furthermore, the embodiments may set another threshold such that if the percentage of the zerotree is determined to be greater than the threshold, the index of the zero coefficients that are not part of the zerotree is signaled, otherwise each zero coefficient that is not a zerotree descendant is signaled separately to indicate whether it is a zerotree root or not. The threshold may be 10%, 30%, 50%, 80%, etc. After this, when coding a zero coefficient, an embodiment herein may first check if the current data is at a zerotree root, which may or may not be signaled by a flag as well. If signaled, all descendants of that root are marked as "already coded" so that they will not be coded again later, if not signaled, nothing is done. It should be noted that according to an example embodiment, the use of zerotrees works best when the percentage of zerotrees is high and the LOD is large, such as greater than 50%.
[0161] Other statistical properties of the tree structure can also be exploited to achieve coding gains. For example, if we assume that all children of a coefficient are likely to be identical, then only one child coefficient needs to be coded, and the coding process can be implemented similarly to the zero-tree coding described above. A flag may be used to signal that likelihood. Also, if a coefficient has multiple dimensions, a tree can be built either for each dimension or for all dimensions. The former has scalar nodes in the tree, while the latter has vector nodes in the tree according to the exemplary embodiment.
[0162] According to an exemplary embodiment, the aspects described herein may be used separately or combined in any order, and may be used for any polygon mesh, and the geometry may be coded by a base mesh and a predicted displacement coding. For example, in the flowchart 2000, given a base mesh that is a subset of the original mesh obtained in S2001, in S2002, an original vertex may be coded by its predicted point (projected vertex) and the displacement between the predicted point (projected vertex) and the original point (remaining vertex), in the example 2100. The base mesh is constrained such that the remaining vertices (not included in the vertex) are always on the normal side of the intermediate vertex.
[0163] For example, if the displacement coding of a 2D mesh is determined in S2004, then looking at the two distance-based displacement coding examples for a 2D mesh 2101, the points
number
number
number
number
number
number
[0164] According to a 2D exemplary embodiment, and in 3D according to another exemplary embodiment, in S2006, an additional point y on the line between the neighboring points y1 and y2 is calculated. n is derived from the neighborhood. For example, point y n The scalar distance from is derived from the center of points y1,y3 as 0, 1 / 2, 1 / 3, 2 / 3. Then, in S2007, the best candidate in terms of rate and distortion is selected and signaled.
[0165] Such an embodiment uses points y1 and y3 to find intermediate point y n Then, from there,
number
number
[0166] Turning to example 2102 of FIG. 21, which illustrates two distance-based displacement codings for a 3D mesh, which may be considered lossless herein, the 3D mesh is described based on the selection of 3D coding in S2004, according to an exemplary embodiment. For example, if it is determined in S2008 that lossy coding is not selected, then in S2009, vertex z4 is predicted from neighboring vertices in the base mesh, i.e., points z1, z2, and z3. As in the 2D case of example 2101, the distance h h If is known, then point z4 is
number
number
number
number
number
[0167] Turning to example 2103 illustrating subdivision and distance-based mesh coding, such an exemplary embodiment similarly introduces displacement coding of the lossy 3D mesh as selected in S2008 based on distance and surface subdivision in S2011. That is, similar to example 2102, in example 2103, the base mesh surface points
number
number
number
number
number
number
[0168] As described above for example 2101, example 2103 also differs from example 2102 in that example 2103 has points z4 and
number
number
number
number
number
[0169] According to an exemplary embodiment, in one embodiment, there is a face-level processing of the lossy (selected in S2008) 3D (selected in S2004) quad (selected in S2010) mesh based on distance and face subdivision. For example, instead of coding by sequential prediction, there is a pixelation of the mesh in S2012 into corresponding rectangular blocks such as one or more of the blocks shown in example 1501. This approach enables a block partitioning, block merging framework in video coding.
[0170] For example, when pixelating a face in S2012, given a quad face, first the original vertices that were subdivided are 2 The example ternary tree shown in the example 2201 of the ternary tree subdivision example at level 1 for a group representation of a quad mesh and corresponding displacements in the example 2200 of FIG. 2 Based on the assumption of smooth varying surfaces of the mesh, groups of displacements are likely to be highly correlated. Therefore, intra-like prediction and local transformations can be used to divide the displacements.
number
[0171] According to an exemplary embodiment, the displacement
number
[0172] For example, looking at the group displacement representation 2252, we may use the already coded base mesh vertices (bottom left LL, bottom right LR, top left TL, top right TF) to predict the displacement depending on its position, i.e., given a group displacement representation of size B1×B2, we may use four weight matrices to derive the prediction at position i,j of the partition grid as follows:
number
[0173] Further, example 2202 shows a neighborhood-based intra-displacement prediction, which can predict a current displacement group using base mesh vertices and already coded neighboring displacement vertices. The prediction can be an angle prediction in intra-prediction. Additional base mesh vertices can be utilized to perform correction for angle prediction as well as post-smoothing of equation (11) according to an exemplary embodiment.
[0174] Thus, the aspects described herein address technical deficiencies by avoiding creating additional vertices with spurious connectivity that reduce the throughput of GPU-based mesh rendering and thereby prevent advanced coding methods from being utilized in video compression for mesh coding.
[0175] According to an example embodiment, m(i) may be the ith frame in a mesh sequence, v(i,j) may be the location of the jth vertex of m(i), and m(i0), ..., m(i n Please further refer to example 2300 of FIG. 23, which shows a flowchart in which one or more frames are obtained in S2301, such that m(i0) may be a tracked mesh determined by signaling in S2302, and m(i0) may be a reference frame. k ) the motion vector f(i k ,j) is calculated in S2303 as follows: f(i k ,j)=v(i k ,j)-v(i0,j) Equation (12)
[0176] Or, m(i k ) the motion vector f(i k , j) can be calculated as follows: For k>0, f(i k ,j)=v(i k ,j)-v(i k-1 ,j) Equation (13)
[0177] According to an exemplary embodiment, m(i k ) consists of all the motion vectors in the frame, f(i k ), and embodiments herein are expressed as f(i k ). Note that f(i0) does not need to be coded since it contains all zeros by definition.
[0178] In response to signaling, such as by a flag or operator instruction, a mode may be selected in S2304.
[0179] In a mesh sequence, the exemplary embodiment of this specification refers to tracking multiple mesh frames when all those meshes are determined to share the same one or more of some vertices, connectivity, texture coordinates, and texture connectivity in S2302, and only the positions of vertices differ among those meshes. Since there is a one-to-one correspondence between the vertices of the two tracked mesh frames, which may be referred to as a reference frame and a current frame in this specification, the vertex positions of the current frame can be predicted by the reference frame, and the prediction residual forms a motion field.
[0180] Furthermore, it should be understood that a "mesh" as described herein according to an exemplary embodiment may be composed of several polygons that describe the surface of a volumetric object. Each polygon is defined by its vertices in 3D space and information on how the vertices are connected, referred to as connectivity information. Optionally, vertex attributes such as color, normal, displacement, etc. may be associated with the mesh vertices. Attributes may also be associated with the surface of the mesh by utilizing mapping information that parameterizes the mesh with a 2D attribute map. Such mapping is typically described by a set of parametric coordinates, referred to as UV coordinates or texture coordinates, associated with the mesh vertices. The 2D attribute map is used to store high-resolution attribute information such as texture, normal, displacement, etc. Such information is used for various purposes herein such as texture mapping, shading, mesh reconstruction, etc.
[0181] In S2305, a 1D transform such as a discrete cosine transform (DCT) or a lifting wavelet transform may be applied to the trajectory of each vertex. See, for example, the displacement vectors shown in Figures 12, 13, 21, and 22, which may be included as the trajectory of the vertices described herein in any of S2305, S2306, and S2307. Specifically, in S2305, for the jth vertex, f(i k A 1D transform can be applied to each spatial dimension (k=1,...,n), where k=1,...,n. The resulting transform coefficients can then be coded using entropy / arithmetic coding, video coding, etc. At the decoder side, an inverse transform can be performed to reconstruct the motion field.
[0182] In S2306, the motion field can be directly encoded by video coding. For each frame, such as a patch or group of patches as described above, all the motion vectors f(i k ,j) may be grouped according to a specific order, such as the order of vertex indices listed in the encoding / decoding order, or the order of a mesh traversal algorithm such as the edge breaker algorithm, and then the ordered motion vectors may be packed into a three-channel image, with each channel corresponding to one spatial dimension of the motion vectors. Packing may be done in any order, such as raster order, Morton order, etc. After packing, the images from all frames may be encoded by a video codec, and decoding may be performed accordingly. After decoding the video frames, an unpacking operation may be applied to return the 2D array of motion vectors to an array of mesh vertices with a known order, which is used at the encoder side according to an exemplary embodiment.
[0183] In S2307, there may be coding of the motion field by using Principal Component Analysis (PCA) that may change coordinates, and the motion field may include displacement vectors and motion vector information for multiple or all vertices of a patch or group of patches as described herein, respectively. First, there may be construction of a data matrix M for the motion field. The j-th row of M is f(i k ,j), k = 1,…,n, so the length of each row, i.e. the number of columns, is 3n, and the number of rows, r, is equal to the number of vertices in each mesh, so the size of M is r × 3n. The flattening of the three spatial dimensions is x1y1z1…x n y n z n or x1...x n y1...y n z1…z n Note that after constructing the data matrix M, there may be a centering of its columns by subtracting its mean, and then the covariance matrix C = M T M can be calculated, and then the principal components can be obtained by eigendecomposition of C, which has low computational complexity because the size of the covariance matrix C is 3n×3n. After the eigendecomposition of C, there can be either signaling of all eigenvectors, or only signaling of the first plurality, at least two, of the eigenvectors with a configurable threshold of eigenvalues. In addition, the projection of each row of M on the signaled eigenvectors can be signaled, and the coefficients of M with respect to those eigenvectors can be signaled. According to an exemplary embodiment, the average of each column of M should be signaled as well. According to an exemplary embodiment, all signaling can be done with entropy coding, such as arithmetic coding. At the decoder side, the central trajectory of each vertex can be restored by a linear combination of the decoded eigenvectors and the corresponding decoded coefficients, and then the original trajectory of each vertex can be obtained by the sum of the central trajectory and the decoded average position.
[0184] According to an exemplary embodiment, when it is determined that there is other data encoded via video coding, the exemplary embodiment concatenates the data with the motion vectors and packs them into a single video frame for coding. For example, for a mesh frame having both motion vectors and displacement vectors, the motion vectors and displacement vectors can be packed into the same video frame for further coding. In particular, the displacement information can be placed behind all the motion vectors. This includes the possibility that the motion vectors and the displacement vectors are included in different streams or in the same stream, and can also be coded by a single video codec.
[0185] Thus, although dynamic mesh sequences may require a large amount of data, as they may consist of a large amount of information that changes over time, when mesh sequences consist of tracked meshes that contain a large amount of redundant information, there is a large scope for significantly compressing the meshes by the embodiments described herein for compressing the motion fields of dynamically subdivided meshes. Thus, in the exemplary embodiments herein, several methods are described for improving the approach to compressing the motion fields of dynamic subdivision meshes, which methods described herein are applied individually or in any form of combination.
[0186] The techniques described above can be implemented using computer readable instructions, as computer software physically stored on one or more computer readable media, or by one or more tangibly configured hardware processors. For example, FIG. 24 illustrates a computer system 2400 suitable for implementing certain embodiments of the disclosed subject matter.
[0187] The computer software can be coded using any suitable machine code or computer language that can be subjected to mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc. directly, or via interpretation, microcode execution, etc.
[0188] The instructions may be executed on various types of computers or computer components including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.
[0189] 24 with respect to computer system 2400 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure. The arrangement of components should not be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 2400.
[0190] The computer system 2400 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users, for example, via tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), olfactory input (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (voice, music, ambient sounds, etc.), images (scanned images, photographic images obtained from still image cameras, etc.), video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).
[0191] The input human interface devices may include one or more of a keyboard 2401, a mouse 2402, a trackpad 2403, a touch screen 2410, a joystick 2405, a microphone 2406, a scanner 2408, a camera 2407 (only one of each is shown).
[0192] The computer system 2400 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., touch screen 2410, or haptic feedback via joystick 2405, although there may be haptic feedback devices that do not function as input devices), audio output devices (such as speakers 2409, headphones (not shown)), visual output devices (such as screens 2410, including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input capabilities, each with or without haptic feedback capabilities, some of which may be capable of outputting two-dimensional visual output, or output in more than three dimensions, via means such as stereographic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0193] The computer system 2400 may also include human accessible storage devices and their associated media, such as CD / DVD 2411 or CD / DVD ROM / RW 2420 with similar media, thumb drives 2422, removable hard drives or solid state drives 2423, legacy magnetic media such as tapes and floppy disks (not shown), optical media including dedicated ROM / ASIC / PLD based devices such as security dongles (not shown), and the like.
[0194] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0195] The computer system 2400 may also include an interface 2499 to one or more communication networks 2498. The network 2498 may be, for example, wireless, wired, optical. The network 2498 may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks 2498 include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial including CANBus, etc. A particular network 2498 generally requires an external network interface adapter attached to a particular general purpose data port or peripheral bus (2450 and 2451) (e.g., USB port of the computer system 2400, etc.), while other networks are generally built into the core of the computer system 2400 by attachment to the system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks 2498, the computer system 2400 can communicate with other entities. Such communications may be one-way receive only (e.g., broadcast TV), one-way transmit only (e.g., CANbus to a particular CANbus device), or two-way, such as to other computer systems using local area or wide area digital networks. Specific protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.
[0196] The aforementioned human interface devices, human accessible storage devices, and network interfaces may be attached to the core 2440 of the computer system 2400.
[0197] The core 2440 may include one or more central processing units (CPUs) 2441, graphics processing units (GPUs) 2442, graphics adapters 2417, dedicated programmable processing units in the form of field programmable gate areas (FPGAs) 2443, hardware accelerators 2444 for specific tasks, etc. These devices may be connected through a system bus 2448, along with read only memory (ROM) 2445, random access memory 2446, internal mass storage 2447 such as an internal non-user accessible hard drive, SSD, etc. In some computer systems, the system bus 2448 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 2448 or through a peripheral bus 2449. Architectures for peripheral buses include PCI, USB, etc.
[0198] The CPU 2441, GPU 2442, FPGA 2443, and accelerator 2444 may combine to execute certain instructions that may constitute the aforementioned computer code. This computer code may be stored in ROM 2445 or RAM 2446. Transient data may also be stored in RAM 2446, while persistent data may be stored, for example, in internal mass storage 2447. Cache memory, which may be closely associated with one or more of the CPU 2441, GPU 2442, mass storage 2447, ROM 2445, RAM 2446, etc., may be used to enable fast storage and fast retrieval to any of the memory devices.
[0199] The computer-readable medium can bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0200] By way of example and not limitation, computer system 2400 having the architecture, and specifically core 2440, may provide functionality as a result of processor(s) (including CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage as previously described, as well as media associated with specific storage of core 2440 that is non-transitory in nature, such as core internal mass storage 2447 or ROM 2445. Software implementing various embodiments of the present disclosure may be stored in such devices and executed by core 2440. Computer-readable media may include one or more memory devices or chips, depending on the particular needs. The software may cause core 2440, and specifically the processors therein (including CPU, GPU, FPGA, etc.) to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM 2446 and modifying such data structures according to the processes defined by the software. Additionally, or alternatively, a computer system may provide functionality as a result of hardwired or otherwise embodied logic in circuitry (e.g., accelerator 2444) that may operate in place of or in conjunction with software to perform a particular process or a particular portion of a particular process described herein. Reference to software may encompass logic, and vice versa, where appropriate. Reference to a computer-readable medium may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0201] While this disclosure has described several exemplary embodiments, there are modifications, substitutions, and various alternative equivalents that are within the scope of the disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and are therefore within the spirit and scope of the disclosure. [Explanation of symbols]
[0202] 100 communication system, 101 terminal, 102 terminal, 103 terminal, 104 terminal, 105 network, 201 video source, 202 encoder, 203 capture subsystem, 204 video bitstream, 205 streaming server, 206 copy of video bitstream 204, 207 streaming client, 208 copy of video bitstream 204, 209 display, 210 outgoing video sample stream, 211 video decoder, 212 streaming client, 213 video sample stream, 300 video decoder, 301 channel, 302 receiver, 303 buffer memory, 304 parser, 305 scaler / inverse transform unit, 306 motion compensation prediction unit, 307 intra prediction unit, 308 reference picture memory, reference picture buffer, 309 current reference picture, 310 aggregator, 311 loop filter unit, 312 display, rendering device, 313 symbols, 400 encoder, 401 video source, 402 controller, 403 source coder, 404 predictor, 405 reference picture memory, 406 local decoder, 407 coding engine, 408 entropy coder, 409 transmitter, 410 video sequence, 411 communication channel, 500 simplified block-style workflow diagram, 600 simplified block-style content flow process diagram, 601 volumetric data acquisition block, 602 conversion to point cloud block, 603 projection to image block, 604 video encoding block, 605 image encoding block, 606 file / segment encapsulation block, 607 cloud server block, 608 position / viewing angle tracking block, 609 scene generator block, 610 video decoding block, 611 image decoding block, 612 point cloud reconstruction block, 613 scene construction block, 614 display block, 615 File / Segment Decapsulation Block, 625 V-PCC Player, 700 Framework, 701 Input Mesh, 702 2D UV Atlas, 703 Decoder, 704 Reconstructed Mesh, 800 Example, 801 Mesh Segments, 802UV parameterization process, 803 2D chart, 804 2D UV atlas, 900 example, 901 2D chart, 902 2D chart, 903 example, 1150 flowchart, 1201 flowchart, 1202 flowchart, 1300 example, 1301 first layer, 1302 second layer, 1303 third layer, 1340 first polygon, 1341 additional polygon, 1350 example, 1360 example, 1361 first layer, 1362 second layer, 1363 third layer, 1400 example, 1491 original curve, 1492 thinned curve, 1493 subdivided curve, 1494 displacement curve, 1500 example, 1501 quadtree-binary tree, 1502 corresponding tree representation, 1503 example, 1504 example, 1505 example, 1600 example, 1601 instance, 1602 instance, 1603 instance, 1604 instance, 1700 flowchart, 1800 flowchart, 1900 example, 2000 flowchart, 2100 example, 2101 example, 2102 example, 2103 example, 2200 example, 2201 example, 2202 example, 2251 displacement prediction, 2252 group displacement representation, 2253 coded surface, 2254 coded surface, 2300 flowchart, 2400 computer system, 2401 keyboard, 2402 mouse2, 2403 trackpad, 2405 joystick, 2406 microphone, 2407 camera, 2408 scanner, 2409 speaker, 2410 touch screen, 2411 CD / DVD, 2417 graphics adapter, 2420 CD / DVD ROM / RW, 2422 thumb drive, 2423 removable hard drive or solid state drive, 2440 core, 2441 CPU, 2442 GPU, 2443 FPGA, 2444 accelerator, 2445 ROM, 2446 RAM, 2447 internal mass storage, 2448 system bus, 2449 peripheral bus, 2450 general purpose data port or peripheral bus, 2451 general purpose data port or peripheral bus, 2498 communication network, 2499 interface
Claims
1. 1. A method for video encoding, the method being executed by at least one processor, comprising: obtaining an input mesh corresponding to volumetric data of at least one three-dimensional (3D) visual content; deriving a mesh sequence curve from the input mesh corresponding to the volumetric data, the curve including a plurality of vertices of the input mesh; subdividing the derived curve of the mesh sequence by adding a plurality of subdivision vertices; calculating a displacement vector for each of the plurality of subdivided vertices; entropy encoding the volumetric data based on the displacement vector from at least one of the subdivision vertices; 16. A method for video encoding comprising:
2. wherein the step of subdividing the derived curve comprises forming a thinned curve by thinning the derived curve and adding the plurality of subdivided vertices to the thinned curve. The method for video encoding according to claim 1.
3. the displacement vector from the at least one of the subdivided vertices is from a point on the thinning curve. The method for video encoding according to claim 2.
4. and wherein the step of entropy encoding the volumetric data is further based on determining that at least one of the plurality of subdivision vertices of the thinned curve is not displaced from the curve. A method for video encoding according to claim 3.
5. determining that the step of entropy coding the volumetric data includes signaling a coding context at a level of detail (LOD); A method for video encoding according to claim 4.
6. the coding context at the LOD indicates that at least one of the coefficients of the displacement vector from the at least one of the subdivision vertices is zero. A method for video encoding according to claim 5.
7. and wherein entropy encoding the volumetric data comprises signaling a location of a non-zero coefficient of the displacement vector from the at least one of the subdivision vertices. A method for video encoding according to claim 6.
8. the step of entropy encoding the volumetric data includes determining whether a tree structure is signaled. A method for video encoding according to claim 4.
9. The step of entropy encoding the volumetric data comprises: determining a percentage of the zerotree based on determining a proportion of zero coefficients that are not descendants of the zerotree and are not at a particular level of detail (LOD) that are roots of the zerotree; specifying coding contexts for a number of LODs, at least one of which is the particular LOD; 9. The method for video encoding of claim 8, comprising:
10. The particular LOD is one of LOD0 and the last LOD; A method for video encoding according to claim 9.
11. 1. An apparatus for video encoding, comprising: at least one memory configured to store computer program code; at least one processor configured to access said computer program code and to operate as instructed by said computer program code; Equipped with The computer program code comprises: obtaining code configured to cause the at least one processor to obtain an input mesh corresponding to volumetric data of at least one three-dimensional (3D) visual content; derivation code configured to cause the at least one processor to derive a curve of a mesh sequence from the input mesh corresponding to the volumetric data, the curve including a plurality of vertices of the input mesh; subdivision code configured to cause the at least one processor to subdivision the derived curve of the sequence of meshes by adding a plurality of subdivision vertices; computation code configured to cause the at least one processor to compute a displacement vector for each of the plurality of subdivided vertices; entropy encoding code configured to cause the at least one processor to entropy encode the volumetric data based on the displacement vector from at least one of the subdivision vertices; Including, Apparatus for video encoding.
12. subdividing the derived curve includes forming a thinned curve by thinning the derived curve and adding the plurality of subdivided vertices to the thinned curve. An apparatus for video encoding according to claim 11.
13. the displacement vector from the at least one of the subdivided vertices is from a point on the thinning curve. An apparatus for video encoding according to claim 12.
14. and entropy coding the volumetric data based on determining that at least one of the subdivision vertices of the thinned curve is not displaced from the curve. An apparatus for video encoding according to claim 13.
15. determining that the entropy coding of the volumetric data includes signaling a coding context at a level of detail (LOD); An apparatus for video encoding according to claim 14.
16. the coding context at the LOD indicates that at least one of the coefficients of the displacement vector from the at least one of the subdivision vertices is zero. An apparatus for video encoding according to claim 15.
17. and entropy encoding the volumetric data includes signaling a location of a non-zero coefficient of the displacement vector from the at least one of the subdivision vertices. An apparatus for video encoding according to claim 16.
18. coding the volumetric data includes determining whether a tree structure is signaled. An apparatus for video encoding according to claim 14.
19. entropy encoding the volumetric data; determining a percentage of the zerotree based on determining a proportion of zero coefficients that are not descendants of the zerotree and are not at a particular level of detail (LOD) that are roots of the zerotree; specifying coding contexts for a plurality of LODs, at least one of which is the particular LOD; 20. An apparatus for video encoding according to claim 18, comprising:
20. On the computer, obtaining an input mesh corresponding to volumetric data of at least one three-dimensional (3D) visual content; deriving a mesh sequence curve from the input mesh corresponding to the volumetric data, the curve including a plurality of vertices of the input mesh; subdividing the derived curve of the mesh sequence by adding a plurality of subdivision vertices; calculating a displacement vector for each of the plurality of subdivided vertices; entropy encoding the volumetric data based on the displacement vector from at least one of the subdivision vertices. A non-transitory computer-readable medium storing a program.
Citation Information
Patent Citations
Method and apparatus for patch unit mesh coding
JP2025516513A
Coding method and apparatus, decoding method and apparatus, and device
WO2023231872A1