Feature-based multiview representation and coding.
Feature-based multiview representation and coding techniques address the inefficiencies in existing video coding by utilizing 3D feature models to compress and decode multiview video data, reducing bit rates and storage needs.
Patent Information
- Application Number
- JP2023524147
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-07-11
- Filing Date
- 2022-07-12
- Publication Date
- 2025-11-07
- Estimated Expiration
- 2042-07-12
AI Technical Summary
Existing video coding technologies face challenges in efficiently compressing multiview video data, particularly in reducing redundancy and optimizing intra-prediction modes, which can lead to increased bit rates and storage requirements.
The use of feature-based multiview representation and coding techniques, which involve determining feature changes across different views and using 3D feature models to decode key pictures, allowing for more efficient compression and reconstruction of multiview video data.
This approach significantly reduces the bit rate and storage requirements for multiview video by leveraging 3D feature information, improving compression efficiency and decoding accuracy.
Smart Images

Figure 0007766090000001 
Figure 0007766090000002 
Figure 0007766090000003
Abstract
Description
[Technical Field]
[0001] [Incorporated by reference] This application claims the benefit of priority to U.S. Patent Application No. 17 / 861,667, entitled "FEATURE-BASED MULTI-VIEW REPRESENTATION AND CODING," filed July 11, 2022, which claims the benefit of priority to U.S. Provisional Application No. 63 / 221,351, entitled "Features Based Multi-View Representation and Delivery," filed July 13, 2021. The entire disclosure of the prior application is incorporated by reference.
[0002] [Technical field] This disclosure describes embodiments generally related to video coding. [Background technology]
[0003] The background discussion provided herein is intended to generally present the context for the present disclosure. The work of the inventors named in this application, to the extent that their work is described in this background section, and aspects of this description that may not otherwise qualify as prior art at the time of filing, are not admitted, expressly or implicitly, as prior art to the present disclosure.
[0004] Image and / or video coding and decoding can be performed using inter-picture prediction with motion compensation. Uncompressed digital images and / or video can include a series of pictures, each having spatial dimensions of, for example, 1920 x 1080 luminance samples and associated chrominance samples. The series of pictures can have a fixed or variable picture rate (also informally known as frame rate), for example, 60 pictures per second or a 60 Hz picture rate. Uncompressed images and / or videos have specific bitrate requirements. For example, 1080p60 4:2:0 video (1920 x 1080 luminance sample resolution at a 60 Hz frame rate) with 8 bits per sample requires a bandwidth approaching 1.5 Gbit / s. One hour of such video requires more than 600 Gbytes of storage space.
[0005] One goal of image and / or video coding and decoding can be reducing redundancy in an input image and / or video signal through compression. Compression can help reduce the aforementioned bandwidth and / or storage space requirements, in some cases by more than two orders of magnitude. While the description herein uses video encoding / decoding as an illustrative example, the same techniques can be applied to image encoding / decoding as well without departing from the spirit of this disclosure. Both lossless and lossy compression, as well as combinations thereof, can be used. Lossless compression refers to a technique that allows an exact copy of an original signal to be reconstructed from a compressed version of the original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signal is small enough to make the reconstructed signal useful for its intended application. For video, lossy compression is widely used. The amount of acceptable distortion depends on the application; for example, a viewer of a particular consumer streaming application may tolerate higher distortion than a viewer of a television distribution application. The achievable compression ratio can reflect that a higher tolerable / acceptable distortion can result in a higher compression ratio.
[0006] Video encoders and decoders can utilize techniques from several broad categories, including, for example, motion compensation, transforms, quantization, and entropy coding.
[0007] Video codec technology can include a technique known as intra-coding. In intra-coding, sample values are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, a picture is spatially divided into blocks of samples. If all blocks of samples are coded in intra mode, the picture may be an intra-picture. Intra-pictures and their derivatives, such as independent decoder refresh pictures, can be used to reset the decoder state and thus can be used as the first picture in a coded video bitstream and video session, or as a still image. Samples of intra-blocks can be subjected to a transform, and the transform coefficients can be quantized before entropy coding. Intra-prediction can be a technique that minimizes sample values in the pre-transform domain. In some cases, smaller DC values and smaller AC coefficients after the transform result in fewer bits required for a given quantization step size to represent the block after entropy coding.
[0008] Traditional intra-coding, e.g., as known from MPEG-2 generation coding techniques, does not use intra-prediction. However, some newer video compression techniques include techniques that attempt to predict intra-prediction from surrounding sample data and / or metadata obtained, for example, during the encoding / decoding of spatially adjacent and preceding blocks of data in decoding order. Such techniques are hereinafter referred to as "intra-prediction" techniques. Note that, at least in some cases, intra-prediction uses only reference data from the current picture being reconstructed, and not from reference pictures.
[0009] There may be various forms of intra-prediction. If more than one such technique is available for a given video coding technique, the technique used may be coded in intra-prediction mode. In certain cases, a mode may have sub-modes and / or parameters, which may be coded separately or may be included in a mode codeword. Which codeword to use for a given mode, sub-mode, and / or parameter combination may affect the coding efficiency gain through intra-prediction, as well as the entropy coding technique used to convert the codeword into a bitstream.
[0010] A mode of intra prediction was introduced in H.264, refined in H.265, and further refined in newer coding techniques such as the Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Benchmark Set (BMS). A predictor block can be formed using neighboring sample values belonging to already available samples. The sample values of the neighboring samples are copied into the predictor block according to a certain direction. A reference to the direction used can be coded in the bitstream or may be predicted itself.
[0011] Referring to FIG. 1A, a subset of nine known predictor directions from the 33 possible predictor directions (corresponding to the 33 angular modes of the 35 intra modes) of H.265 is depicted in the lower right. The point where the arrows converge (101) represents the sample to be predicted. The arrows represent the direction in which the sample is predicted. For example, arrow (102) indicates that sample (101) is predicted from the sample(s) to the upper right and at an angle of 45 degrees from horizontal. Similarly, arrow (103) indicates that sample (101) is predicted from the sample(s) to the lower left of sample (101), at an angle of 22.5 degrees from horizontal.
[0012] Continuing with reference to FIG. 1A , a square block (104) of 4×4 samples is depicted in the upper left (indicated by a thick dashed line). The square block (104) contains 16 samples, each labeled with an “S” and its position in the Y dimension (e.g., row index) and its position in the X dimension (e.g., column index). For example, sample S21 is the second sample (from the top) in the Y dimension and the first sample (from the left) in the X dimension. Similarly, sample S44 is the fourth sample in the block (104) in both the Y and X dimensions. Because the block is 4×4 samples in size, S44 is located in the lower right. Also shown are reference samples, which follow a similar numbering scheme. The reference samples are labeled R and their Y position (e.g., row index) and X position (column index) relative to the block (104). In both H.264 and H.265, predicted samples are neighbors of the block being reconstructed, so there is no need to use negative values.
[0013] Intra-picture prediction can work by copying reference sample values from the appropriate neighboring samples according to the signaled prediction direction. For example, assume that the coded video bitstream signals a prediction direction consistent with arrow (102) for this block. That is, the sample is predicted from the upper right sample at a 45-degree angle from horizontal. In that case, samples S41, S32, S23, and S14 are predicted from the same reference sample R05. Then, sample S44 is predicted from reference sample R08.
[0014] In certain cases, especially when the direction is not divisible by 45 degrees, the values of multiple reference samples can be combined, for example by interpolation, to calculate the reference sample.
[0015] As video coding technology has evolved, the number of possible directions has increased. In H.264 (2003), nine different directions could be represented. This increased to 33 in H.265 (2013), and as of the time of this disclosure, JEM / VVC / BMS can support up to 65 directions. Experiments are performed to identify the most likely directions, and specific techniques in entropy coding are used to represent those likely directions with a small number of bits while accepting some penalty for less likely directions. Furthermore, the direction itself can sometimes be predicted from neighboring directions used in nearby, already decoded blocks.
[0016] Figure 1B shows a schematic diagram (110) depicting 65 intra-prediction directions with JEM to illustrate the increasing number of prediction directions over time.
[0017] The mapping of intra-prediction direction bits in a coded video bitstream to represent direction can vary from one video coding technique to another; for example, it can range from a simple direct mapping of prediction direction to intra-prediction mode to complex adaptive schemes involving codewords, most probable modes, and similar techniques. However, in all cases, there may be certain directions that are statistically less likely to occur in the video content than certain other directions. Because the goal of video compression is to reduce redundancy, in well-performing video coding techniques, these less likely ways are represented by more bits than more likely directions.
[0018] Motion compensation may be a lossy compression technique and may refer to a technique in which blocks of sample data from a previously reconstructed picture or part thereof (reference picture) are used for predicting a newly reconstructed picture or part thereof after being spatially shifted in a direction indicated by a motion vector (hereinafter, MV). In some cases, the reference picture may be the same as the picture currently being reconstructed. The MV may have two dimensions, X and Y, or three dimensions, with the third dimension being an indication of the reference picture used (which may indirectly be the temporal dimension).
[0019] In some video compression techniques, the MV applicable to a region of sample data can be predicted from other MVs, e.g., from an MV associated with another region of sample data that is spatially adjacent to the region being reconstructed and precedes that MV in decoding order. Doing so can significantly reduce the amount of data required to code the MV, thereby removing redundancy and increasing compression. MV prediction works effectively because, for example, when coding an input video signal derived from a camera (known as natural video), there is a statistical likelihood that regions larger than the region to which a single MV is applicable move in a similar direction and can therefore, in certain cases, be predicted using similar motion vectors derived from MVs of nearby regions. As a result, the MV found for a given region will be similar or identical to the MV predicted from the surrounding MVs, and, after entropy coding, can be represented with fewer bits than would be used to code the MV directly. In some cases, MV prediction can be an example of lossless compression of a signal (i.e., an MV) derived from the original signal (i.e., a sample stream). In other cases, the MV prediction itself may be lossy, for example due to rounding errors in computing the predictor from several surrounding MVs.
[0020] H.265 / HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016) describes various MV prediction mechanisms. Among the many MV prediction mechanisms provided by H.265, the one described here is a technique hereafter referred to as "spatial merge."
[0021] Referring to Figure 2, a current block (201) contains samples that the encoder found during the motion search process to be predictable from a spatially shifted previous block of the same size. Instead of coding its MV directly, the MV can be derived from metadata associated with one or more reference pictures, e.g., from the most recent reference picture (in decoding order), using the MVs associated with any of five surrounding samples, denoted A0, A1, and B0, B1, B2 (202-206, respectively). In H.265, MV prediction can use predictors from the same reference picture as neighboring blocks. Summary of the Invention
[0022] Aspects of the present disclosure provide methods and apparatuses for video coding and decoding. In some examples, the apparatus for video decoding includes a processing circuit configured to decode at least one first key picture of a picture from a multiview bitstream. The pictures correspond to different views. The at least one first key picture corresponds to at least one first view of the different views. First feature information of content in the at least one first key picture of the pictures can be determined. Based on the multiview bitstream, a first feature change for the first feature information can be decoded. The first feature change can indicate a content change between the key picture in the at least one first key picture and the first picture. The first picture can be reconstructed based on the decoded first feature change, the first feature information, and the key picture in the at least one first key picture.
[0023] In one embodiment, the at least one first key picture corresponds to a first time instance. The at least one first key picture includes a plurality of first key pictures. The at least one first view of the different views includes a plurality of first views. The first feature information includes first three-dimensional (3D) feature information indicated by the plurality of first views. The first 3D feature information at the first time instance can be determined based on a first predetermined 3D feature model and the plurality of first key pictures.
[0024] In one example, the first 3D feature information is used to decode a picture of each of the different views.
[0025] In one example, the plurality of first key pictures includes each key picture at a first time instance.
[0026] In one example, second 3D feature information of content in a plurality of second key pictures of the picture at a first time instance is determined based on a second predetermined 3D feature model, wherein the plurality of second key pictures correspond to the first time instances of the plurality of second views of the different views.
[0027] In one example, the first feature information is associated with the first view of the at least one first view. For each of the different views other than the first view, the processing circuit can determine the respective feature information based on a key picture of the view and another key picture of an adjacent view of the different view. The processing circuit can decode feature changes for the respective feature information based on the multiview bitstream. The feature changes correspond to respective pictures of the view. Pictures of the view can be generated based on the respective feature changes, the respective feature information, and the key picture of the view.
[0028] In one example, the first picture of the view in the different view is at the second time instance.
[0029] In one example, the processing circuit can decode a subset of pictures corresponding to a different view. The subset of pictures is for a first view of at least one first view corresponding to a respective time instance. The subset of pictures of the first view can include a key picture in at least one first key picture. The first picture is for a second view of the different view. The first picture and the key picture of the at least one first key picture correspond to the first time instance. The first feature change indicates a feature change between the first picture of the second view at the first time instance and the key picture of the first view at the first time instance.
[0030] In one example, each picture of the at least one first view is decoded as a key picture, where each picture of the first view corresponds to a respective time instance.
[0031] Aspects of the present disclosure also provide a non-transitory computer-readable storage medium storing a program executable by at least one processor to perform a method for video decoding. [Brief explanation of the drawings]
[0032] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings.
[0033] [Figure 1A] FIG. 2 is a schematic diagram of an example subset of intra-prediction modes.
[0034] [Figure 1B] FIG. 1 is an illustration of an exemplary intra-prediction direction.
[0035] [Figure 2] 2 shows a current block (201) and surrounding samples according to one embodiment.
[0036] [Figure 3] FIG. 3 is a simplified block diagram schematic of a communication system (300) according to one embodiment.
[0037] [Figure 4] FIG. 4 is a simplified block diagram schematic of a communication system (400) according to one embodiment.
[0038] [Figure 5] FIG. 2 is a schematic diagram of a simplified block diagram of a decoder according to one embodiment.
[0039] [Figure 6] FIG. 2 is a schematic diagram of an exemplary block diagram of an encoder according to one embodiment.
[0040] [Figure 7]1 shows a block diagram of an encoder according to one embodiment;
[0041] [Figure 8] 1 shows a block diagram of a decoder according to one embodiment.
[0042] [Figure 9A] 1 illustrates an exemplary arrangement of cameras in a multi-camera capturing system according to one embodiment of the present disclosure.
[0043] [Figure 9B] 1 illustrates an exemplary 1D parallel arrangement of cameras in a multi-camera capturing system according to one embodiment of the present disclosure.
[0044] [Figure 10] 1 illustrates an example of spatial stitching according to one embodiment of the present disclosure.
[0045] [Figure 11A] 1 shows an exemplary schematic diagram of feature-based video coding or a feature-based video coding process;
[0046] [Figure 11B] 1 shows an exemplary schematic diagram of feature-based video coding or a feature-based video coding process;
[0047] [Figure 12] 1 illustrates an example of a picture in a bitstream according to one embodiment of the present disclosure.
[0048] [Figure 13] 10 illustrates exemplary key pictures of different views in a bitstream used to determine feature information of the key pictures according to one embodiment of the present disclosure.
[0049] [Figure 14]10 illustrates an exemplary subset of key pictures of different views in a bitstream used to determine multiple 3D feature information according to one embodiment of the present disclosure.
[0050] [Figure 15] 1 illustrates an exemplary subset of key pictures of different views in a bitstream used to determine multiple feature information according to one embodiment of the present disclosure.
[0051] [Figure 16] 1 illustrates an exemplary coding method for feature-based multiview coding according to one embodiment of the present disclosure.
[0052] [Figure 17] 1 illustrates an exemplary coding method for feature-based multiview coding according to one embodiment of the present disclosure.
[0053] [Figure 18] 1 illustrates an exemplary coding method for feature-based multiview coding according to one embodiment of the present disclosure.
[0054] [Figure 19] 1 illustrates examples of pictures at different time instances and for different views according to one embodiment of the present disclosure.
[0055] [Figure 20] 1 shows a flowchart outlining an encoding process according to one embodiment of the present disclosure.
[0056] [Figure 21] 1 shows a flowchart outlining a decoding process according to one embodiment of the present disclosure.
[0057] [Figure 22] FIG. 1 is a schematic diagram of a computer system according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0058] Figure 3 illustrates a simplified block diagram of a communication system (300) according to one embodiment of the present disclosure. The communication system (300) includes multiple terminal devices that can communicate with each other, e.g., via a network (350). For example, the communication system (300) includes a first pair of terminal devices (310) and (320) interconnected via the network (350). In the example of Figure 3, the first pair of terminal devices (310) and (320) perform unidirectional transmission of data. For example, the terminal device (310) may code video data (e.g., a stream of video pictures captured by the terminal device (310)) for transmission to the other terminal device (320) via the network (350). The encoded video data can be transmitted in the form of one or more coded video bitstreams. The terminal device (320) may receive coded video data from the network (350), decode the coded video data to reconstruct video pictures, and display the video pictures according to the reconstructed video data. One-way data transmission may be common in media service applications, etc.
[0059] In another example, the communication system (300) includes a second pair of terminal devices (330) and (340) that perform bidirectional transmission of coded video data, such as may occur during a video conference. For the bidirectional transmission of data, in one example, each of the terminal devices (330) and (340) may code video data (e.g., a stream of video pictures captured by the terminal device) for transmission to the other of the terminal devices (330) and (340) over the network (350). Each of the terminal devices (330) and (340) may receive coded video data transmitted by the other of the terminal devices (330) and (340), decode the coded video data to reconstruct the video pictures, and display the video pictures on an accessible display device in accordance with the reconstructed video data.
[0060] In the example of FIG. 3 , terminal devices 310, 320, 330, and 340 may be depicted as a server, a personal computer, and a smartphone, respectively, although the principles of the present disclosure may not be limited thereto. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players, and / or dedicated video conferencing equipment. Network 350 represents any number of networks that convey coded video data between terminal devices 310, 320, 330, and 340, including, for example, wired and / or wireless communication networks. Communication network 350 may exchange data over circuit-switched and / or packet-switched channels. Exemplary networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of discussion herein, the architecture and topology of network 350 may not be important to the operation of the present disclosure, unless otherwise described below.
[0061] 4 shows the arrangement of a video encoder and a video decoder in a streaming environment as an example for 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 TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0062] The streaming system may include a video source (401), such as a digital camera, and may also include a capture subsystem (413) that generates, for example, an uncompressed stream of video pictures (402). In one example, the stream of video pictures (402) includes samples captured by the digital camera. The stream of video pictures (402), depicted as a thick line to emphasize its high data volume compared to the encoded video data (404) (or coded video bitstream), may be processed by an electronic device (420) that includes a video encoder (403) coupled to the video source (401). The video encoder (403) 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 data (404) (or coded video bitstream), depicted as a thin line to emphasize its lower data volume compared to the stream of video pictures (402), may be stored on a streaming server (405) for future use. One or more streaming client subsystems, such as the client subsystems (406) and (408) of Figure 4, can access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) can include a video decoder (410), for example, within an electronic device (430). The video decoder (410) decodes an input copy (407) of the encoded video data and generates an output stream (411) of video pictures that can be rendered on a display (412) (e.g., a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (e.g., a video bitstream) can be coded according to a particular video coding / compression standard.Examples of these standards include ITU-T Recommendation H.265. In one example, a video coding standard under development is informally known as Versatile Video Coding (VVC). The disclosed subject matter may be used in the context of VVC.
[0063] It should be noted that the electronic devices 420 and 430 may include other components (not shown). For example, the electronic device 420 may include a video decoder (not shown), and the electronic device 430 may also include a video encoder (not shown).
[0064] 5 shows a block diagram of a video decoder (510) according to one embodiment of the present disclosure. The video decoder (510) can be included in an electronic device (530). The electronic device (530) can include a receiver (531) (e.g., a receiving circuit). The video decoder (510) can be used in place of the video decoder (310) in the example of FIG. 4.
[0065] The receiver (531) may receive one or more coded video sequences to be decoded by the video decoder (510); 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 (501), which may be a hardware / software link to a storage device that stores the encoded video data. The receiver (531) may also receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, which may be forwarded to respective usage entities (not shown). The receiver (531) may separate the coded video sequences from other data. To combat network jitter, a buffer memory (515) may be coupled between the receiver (531) and the entropy decoder / parser (520) (hereinafter "parser"). In certain applications, the buffer memory (515) is part of the video decoder (510). In other applications, it may be external to the video decoder (510) (not shown). In still other applications, there may be a buffer memory (not shown) external to the video decoder (510), for example, to combat network jitter, and there may be another buffer memory (515) internal to the video decoder (510), for example, to handle playback timing. If the receiver (531) is receiving data from a store / forward device with sufficient bandwidth and controllability or from an isochronous network, the buffer memory (515) may not be required or may be small. For use with best-effort packet networks such as the Internet, the buffer memory (515) may be required, may be relatively large, may advantageously be adaptively sized, and may be implemented, at least in part, in an operating system or similar element (not shown) external to the video decoder (510).
[0066] The video decoder (510) may include a parser (520) for reconstructing symbols (521) from the coded video sequence. These symbol categories include information used to manage the operation of the video decoder (510) and, potentially, information for controlling a rendering device, such as a render device (512) (e.g., a display screen). The rendering device may be coupled to the electronic device (530) rather than being an integral part of the electronic device (530) as shown in FIG. 5. Control information for the rendering device(s) may be in the form of a Supplementary Enhancement Information (SEI) message or a Video Usability Information (VUI) parameter set fragment (not shown). The parser (520) may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may follow a video coding technique or standard and may follow various principles, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser (520) can extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups can include Groups of Pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The parser (520) can also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0067] The parser (520) can perform entropy decoding / parsing operations on the video sequence received from the buffer memory (515), thereby generating symbols (521).
[0068] The reconstruction of the symbols (521) can involve several different units, depending on the type of coded video picture or portions thereof (e.g., inter- and intra-picture, inter- and intra-block) and other factors. Which units are involved and how can be controlled by subgroup control information parsed by the parser (520) from the coded video sequence. The flow of such subgroup control information between the parser (520) and the following units is not depicted for clarity.
[0069] In addition to the functional blocks already mentioned, the video decoder (510) can be conceptually divided into several functional units, as described below. In a practical implementation operating under commercial constraints, many of these units will interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate.
[0070] The first unit is a scalar / inverse transform unit (551). The scalar / inverse transform unit (551) receives quantized transform coefficients and control information as symbol(s) (521) from the parser (520). The control information includes which transform to use, block size, quantization coefficients, quantization scaling matrix, etc. The scalar / inverse transform unit (551) can output blocks containing sample values that can be input to an aggregator (555).
[0071] In some cases, the output samples of the scaler / inverse transform (551) may relate to intra-coded blocks; i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by an intra-picture prediction unit (552). In some cases, the intra-picture prediction unit (552) generates blocks of the same size and shape as the block being reconstructed using surrounding, already reconstructed information taken from a current picture buffer (558). The current picture buffer (558), for example, buffers partially reconstructed and / or fully reconstructed current pictures. The aggregator (555) optionally adds, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit (552) to the output sample information provided by the scaler / inverse transform unit (551).
[0072] In other cases, the output samples of the scalar / inverse transform unit (551) may relate to an inter-coded, potentially motion-compensated, block. In such cases, the motion-compensated prediction unit (553) may access a reference picture memory (557) to retrieve samples used for prediction. After motion-compensating the retrieved samples according to the symbols (521) for the block, these samples may be added by an aggregator (555) to the output of the scalar / inverse transform unit (in this case, referred to as residual samples or residual signals) to generate output sample information. The addresses in the reference picture memory (557) from which the motion-compensated prediction unit (553) retrieves prediction samples may be controlled by motion vectors available to the motion-compensated prediction unit (553) in the form of symbols (521). The symbols may have, for example, X, Y, and reference picture components. Motion compensation may include interpolation of sample values retrieved from the reference picture memory (557) when sub-sample accurate motion vectors are used, motion vector prediction mechanisms, etc.
[0073] The output samples of the aggregator (555) can be subjected to various loop filtering techniques in a loop filter unit (556). Video compression techniques can include in-loop filter techniques controlled by parameters contained in the coded video sequence (also called the coded video bitstream) and made available to the loop filter unit (556) as symbols (521) from the parser (520), but can also be responsive to meta-information obtained during decoding of previous portions (in decoding order) of the coded picture or coded video sequence, as well as to previously reconstructed loop-filtered sample values.
[0074] The output of the loop filter unit (556) can be a sample stream, which can be output to a render device (512) or stored in a reference picture memory (557) for use in future inter-picture prediction.
[0075] Once a coded picture is fully reconstructed, it can be used as a reference picture for future prediction. For example, once a coded picture corresponding to a current picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by the parser (520)), the current picture buffer (558) can become part of the reference picture memory (557), and a fresh current picture buffer can be reallocated before beginning reconstruction of a subsequent coded picture.
[0076] The video decoder (510) can perform decoding operations in accordance with a standard video compression technology, such as ITU-T Recommendation H.265. A coded video sequence can conform to the syntax specified by the video compression technology or standard being used, in the sense that the coded video sequence conforms to both the syntax of the video compression technology or standard and a profile documented in the video compression technology or standard. Specifically, a profile can select specific tools from all tools available in the video compression technology or standard as the only tools available for use under that profile. Compliance may also require that the complexity of the coded video sequence be within a range defined by the level of the video compression technology or standard. In some cases, the level constrains the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in units of megasamples per second), maximum reference picture size, etc. The limits set by the level can be further constrained through a Hypothetical Reference Decoder (HRD) specification and metadata for HRD buffer management, possibly signaled in the coded video sequence.
[0077] In some embodiments, the receiver (531) may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence(s). The additional data may be used by the video decoder (510) to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial, or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant pictures, forward error correction codes, etc.
[0078] 6 shows a block diagram of a video encoder (603) according to one embodiment of the present disclosure. The video encoder (603) is included in an electronic device (620). The electronic device (620) includes a transmitter (640) (e.g., a transmitting circuit). The video encoder (603) can be used in place of the video encoder (403) in the example of FIG. 4.
[0079] The video encoder (603) can receive video samples from a video source (601) (which is not part of the electronic device (620) in the example of Figure 6) that can capture video images to be coded by the video encoder (603). In another example, the video source (601) is part of the electronic device (620).
[0080] The video source (601) can provide a source video sequence to be coded by the video encoder (603) in the form of a digital video sample stream, which can be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 YCrCB, RGB, ...), and any suitable sampling structure (e.g., YCrCb 4:2:0, YCrCb 4:4:4). In a media services system, the video source (601) can be a storage device storing pre-prepared video. In a video conferencing system, the video source (601) can be a camera that locally captures image information as a video sequence. The video data can be provided as multiple individual pictures that, when viewed in sequence, impart motion. The pictures themselves can be organized as a spatial array of pixels, each of which can contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can readily understand the relationship between pixels and samples. The following description focuses on samples.
[0081] According to one embodiment, the video encoder (603) can code and compress pictures of a source video sequence into a coded video sequence (643) in real time or under any other time constraints required by the application. Enforcing an appropriate coding rate is one function of the controller (650). In some embodiments, the controller (650) controls and is operatively coupled to other functional units, such as those described below. Such coupling is not depicted for clarity. Parameters set by the controller (650) can include parameters related to rate control (picture skip, quantizer, lambda value for rate-distortion optimization techniques, ...), picture size, group-of-picture (GOP) layout, maximum motion vector search range, etc. The controller (650) can be configured to have other suitable functions for the video encoder (603) optimized for a particular system design.
[0082] In some embodiments, the video encoder (603) is configured to operate in a coding loop. As a simplistic explanation, in one example, the coding loop can include a source coder (630) (e.g., responsible for generating symbols, such as a symbol stream, based on an input picture to be coded and reference picture(s)) and a (local) decoder (633) embedded in the video encoder (603). The decoder (633) reconstructs the symbols to generate sample data in a manner similar to that which a (remote) decoder would also generate (because the video compression techniques contemplated by the disclosed subject matter provide lossless compression between the symbols and the coded video bitstream). The reconstructed sample stream (sample data) is input to a reference picture memory (634). Because decoding of the symbol stream yields bit-accurate results regardless of the decoder location (local or remote), the contents of the reference picture memory (634) are also bit-accurate between the local and remote encoders. In other words, the predictor of the encoder "sees" exactly the same sample values as the reference picture samples that the decoder "sees" when using the prediction during decoding. This basic principle of reference picture synchrony (and the resulting drift when synchrony cannot be maintained, e.g., due to channel errors) is also used in several related technologies.
[0083] The operation of the "local" decoder (633) may be the same as the operation of the "remote" decoder, e.g., the video decoder (410), already described in detail above in connection with Figure 5. However, briefly referring also to Figure 5, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder (645) and parser (420) may be lossless, the entropy decoding portion of the video decoder (410), including the buffer memory (415) and parser (420), may not be fully implemented in the local decoder (633).
[0084] In some embodiments, decoder techniques, with the exception of parsing / entropy decoding, present in a decoder are present in the same or substantially the same functional form in the corresponding encoder. Therefore, the disclosed subject matter focuses on decoder operation. A description of the encoder techniques can be omitted, as they are the reverse of the decoder techniques described generically. In certain areas, more detailed descriptions are provided below.
[0085] In operation, in some examples, the source coder (630) may perform motion-compensated predictive coding, which predictively codes an input picture with reference to one or more previously coded pictures from a video sequence designated as “reference pictures.” In this manner, the coding engine (632) codes differences between pixel blocks of the input picture and pixel blocks of reference picture(s) that may be selected as predictive references for the input picture.
[0086] The local video decoder (633) can decode coded video data of pictures that may be designated as reference pictures based on symbols generated by the source coder (630). The operation of the coding engine (632) can advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 6), the reconstructed video sequence will typically be a copy of the source video sequence, possibly with some errors. The local video decoder (633) can replicate the decoding process that may be performed on the reference pictures by the video decoder and store the reconstructed reference pictures in the reference picture memory (634). In this way, the video encoder (603) can locally store copies of reconstructed reference pictures that have common content (barring transmission errors) as reconstructed reference pictures that would be obtained by a far-end video decoder.
[0087] The predictor (635) may perform a predictive search for the coding engine (632). That is, for a new picture to be coded, the predictor (635) may search the reference picture memory (634) for sample data (as candidate reference pixel blocks) or specific metadata, such as reference picture motion vectors, block shapes, etc., that can serve as suitable prediction references for the new picture. The predictor (635) may operate on a sample block-by-pixel block basis to find suitable prediction references. In some cases, as determined by the search results obtained by the predictor (635), the input picture may have prediction references drawn from multiple reference pictures stored in the reference picture memory (634).
[0088] The controller (650) may manage the coding operations of the source coder (630), including, for example, setting the parameters and subgroup parameters used to encode the video data.
[0089] The output of all of the above functional units can undergo entropy coding in an entropy coder (645), which converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques such as Huffman coding, variable length coding, arithmetic coding, etc.
[0090] The transmitter (640) can buffer the coded video sequence(s) generated by the entropy encoder (645) and prepare them for transmission over a communication channel (660), which may be a hardware / software link to a storage device that stores the encoded video data. The transmitter (640) can merge the coded video data from the video encoder (603) with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0091] The controller (650) may manage the operation of the video encoder (603). During coding, the controller (650) may assign a coded picture type to each coded picture. The coded picture type may affect the coding technique that may be applied to each picture. For example, pictures may often be assigned as one of the following picture types:
[0092] An intra picture (I-picture) may be one that can be coded and decoded without using other pictures in a sequence as a source of prediction. Some video codecs allow different types of intra pictures, including, for example, Independent Decoder Refresh ("IDR") pictures. Those skilled in the art will recognize these variations of I-pictures and their respective uses and characteristics.
[0093] A predictive picture (P picture) may be one that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict the sample values of each block.
[0094] Bidirectionally predicted pictures (B-pictures) may be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, multi-predicted pictures may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0095] A source picture is typically spatially divided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be non-predictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra prediction). Pixel blocks of a P-picture may be predictively coded via spatial prediction or temporal prediction with reference to one previously coded reference picture. Blocks of a B-picture may be predictively coded via spatial prediction or temporal prediction with reference to one or two previously coded reference pictures.
[0096] The video encoder (603) may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Recommendation H.265. In doing so, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard used.
[0097] In some embodiments, the transmitter (640) may transmit additional data along with the encoded video. The source coder (630) may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures and slices, SEI messages, VUI parameter set fragments, etc.
[0098] Video may be captured as multiple source pictures (video pictures) in a temporal sequence. Intra-picture prediction (often abbreviated as intra-prediction) exploits spatial correlation within a given picture, while inter-picture prediction exploits correlation (temporal or other) between pictures. In one example, a particular picture to be encoded / decoded, called the current picture, is partitioned into blocks. If a block in the current picture is similar to a reference block in a previously coded and still buffered reference picture in the video, that block in the current picture can be coded by a vector called a motion vector. A motion vector points to a reference block within a reference picture and may have a third dimension that identifies the reference picture if multiple reference pictures are used.
[0099] In some embodiments, bi-prediction techniques can be used in inter-picture prediction. Bi-prediction techniques use two reference pictures, such as a first reference picture and a second reference picture, both of which precede the current picture in decoding order (but may also precede and follow, respectively, in display order) in the video. A block in the current picture can be coded with a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. A block can be predicted by a combination of the first and second reference blocks.
[0100] Furthermore, merge mode techniques can be used in inter-picture prediction to improve coding efficiency.
[0101] According to some embodiments of the present disclosure, prediction, such as inter-picture prediction and intra-picture prediction, is performed in units of blocks. For example, according to the HEVC standard, pictures in a sequence of video pictures are divided into coding tree units (CTUs) for compression, and the CTUs in a picture have the same size, such as 64x64 pixels, 32x32 pixels, or 16x16 pixels. Generally, a CTU includes three coding tree blocks (CTBs), one luma CTB and two chroma CTBs. Each CTU can be recursively quadtree-decomposed into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one CU of 64x64 pixels, four CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In one example, each CU is analyzed to determine a prediction type for that CU, such as an inter-prediction type or an intra-prediction type. A CU is divided into one or more prediction units (PUs) depending on temporal and / or spatial predictability. Generally, each PU includes a luma prediction block (PB) and two chroma PBs. In an embodiment, prediction operations in coding (encoding / decoding) are performed in units of prediction blocks. Taking a luma prediction block as an example of a prediction block, the prediction block includes a matrix of values (e.g., luma values) for pixels, such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc.
[0102] 7 shows a diagram of a video encoder (703) according to one embodiment of this disclosure. The video encoder (703) is configured to receive a processed block (e.g., a predictive block) of sample values in a current video picture in a sequence of video pictures and encode the processed block into a coded picture that is part of a coded video sequence. In one example, the video encoder (703) is used in place of the video encoder (403) in the example of FIG. 4.
[0103] In an HEVC example, the video encoder (703) receives a matrix of sample values for a processing block, such as a predictive block, such as 8x8 samples. The video encoder (703) determines whether the processing block is best coded using intra-mode, inter-mode, or bi-predictive mode, e.g., using rate-distortion optimization. If the processing block is coded in intra-mode, the video encoder (703) may use intra-prediction techniques to encode the processing block into a coded picture. If the processing block is coded in inter-mode or bi-predictive mode, the video encoder (703) may use inter-prediction techniques or bi-prediction techniques, respectively, to encode the processing block into a coded picture. In certain video coding techniques, merge mode may be an inter-picture prediction submode in which motion vectors are derived from one or more motion vector predictors but without the benefit of coded motion vector components outside the predictors. In certain other video coding techniques, there may be motion vector components applicable to the current block. In one example, the video encoder (703) includes other components, such as a mode decision module (not shown) for determining the mode of the processing block.
[0104] In the example of FIG. 7, the video encoder (703) includes an inter-encoder (730), an intra-encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a general controller (721), and an entropy coder (725), coupled together as shown in FIG. 7.
[0105] The inter-encoder (730) is configured to receive samples of a current block (e.g., a processing block), compare the block with one or more reference blocks in a reference picture (e.g., blocks in previous and subsequent pictures), generate inter-prediction information (e.g., a description of redundant information due to inter-encoding techniques, motion vectors, merge mode information), and calculate an inter-prediction result (e.g., a predicted block) based on the inter-prediction information using any suitable technique. In some examples, the reference picture is a decoded reference picture that is decoded based on encoded video information.
[0106] The intra encoder (722) is configured to receive samples of a current block (e.g., a processing block), optionally compare the block to previously coded blocks in the same picture, and generate transformed and quantized coefficients and optionally intra prediction information (e.g., intra prediction direction information according to one or more intra encoding techniques). In one example, the intra encoder (722) also calculates intra prediction results (e.g., predicted blocks) based on the intra prediction information and reference blocks in the same picture.
[0107] The general controller (721) is configured to determine general control data and control other components of the video encoder (703) based on the general control data. In one example, the general controller (721) determines the mode of the block and provides a control signal to the switch (726) based on the mode. For example, if the mode is intra mode, the general controller (721) controls the switch (726) to select the intra mode result for use by the residual calculator (723) and controls the entropy encoder (725) to select intra prediction information and include the intra prediction information in the bitstream. If the mode is inter mode, the general controller (721) controls the switch (726) to select the inter prediction result for use by the residual calculator (723) and controls the entropy encoder (725) to select inter prediction information and include the inter prediction information in the bitstream.
[0108] The residual calculator (723) is configured to calculate the difference (residual data) between the received block and a prediction result selected from the intra-encoder (722) or the inter-encoder (730). The residual encoder (724) is configured to encode the residual data to generate transform coefficients based on the residual data. In one example, the residual encoder (724) is configured to transform the residual data from the spatial domain to the frequency domain to generate transform coefficients. The transform coefficients are then subjected to a quantization process to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform an inverse transform to generate decoded residual data. The decoded residual data can be suitably used by the intra-encoder (722) and the inter-encoder (730). For example, the inter-encoder (730) can generate decoded blocks based on the decoded residual data and inter-prediction information, and the intra-encoder (722) can generate decoded blocks based on the decoded residual data and intra-prediction information. The decoded blocks are suitably processed to generate decoded pictures, which can be buffered in memory circuitry (not shown) and, in some examples, used as reference pictures.
[0109] The entropy encoder (725) is configured to format a bitstream to include the encoded block. The entropy encoder (725) is configured to include various information according to a suitable standard, such as the HEVC standard. In one example, the entropy encoder (725) is configured to include general control data, selected prediction information (e.g., intra-prediction information or inter-prediction information), residual information, and other suitable information in the bitstream. Note that, according to the disclosed subject matter, when coding a block in a merged sub-mode of either an inter mode or a bi-prediction mode, the residual information is not present.
[0110] 8 shows a diagram of a video decoder (810) according to one embodiment of this disclosure. The video decoder (810) is configured to receive coded pictures that are part of a coded video sequence and decode the coded pictures to generate reconstructed pictures. In one example, the video decoder (810) is used in place of the video decoder (410) in the example of FIG. 4.
[0111] In the example of Figure 8, the video decoder (810) includes an entropy decoder (871), an inter-decoder (880), a residual decoder (873), a reconstruction module (874), and an intra-decoder (872) coupled together as shown in Figure 8.
[0112] The entropy decoder (871) can be configured to reconstruct, from a coded picture, specific symbols representing the syntax elements of which the coded picture is composed. Such symbols can include, for example, prediction information (e.g., intra- or inter-prediction information, etc.) that can identify the mode in which the block is coded (e.g., intra- or inter-prediction mode, merged submode, or the latter two in another submode), specific samples or metadata used for prediction by the intra-decoder (872) or inter-decoder (880), respectively, residual information in the form of quantized transform coefficients, etc. In one example, if the prediction mode is an inter- or bi-prediction mode, the inter-prediction information is provided to the inter-decoder (880). If the prediction type is an intra-prediction type, the intra-prediction information is provided to the intra-decoder (872). The residual information can undergo inverse quantization and be provided to the residual decoder (873).
[0113] The inter decoder (880) is configured to receive inter prediction information and generate inter prediction results based on the inter prediction information.
[0114] The intra decoder (872) is configured to receive intra prediction information and generate a prediction result based on the intra prediction information.
[0115] The residual decoder (873) is configured to perform inverse quantization to extract dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require certain control information (including quantizer parameters (QP)), which may be provided by the entropy decoder (871) (this is only low-volume control information, so the data path is not depicted).
[0116] The reconstruction module (874) is configured to combine, in the spatial domain, the residual output by the residual decoder (873) and the prediction result (output by the intra- or inter-prediction module, as the case may be) to form a reconstructed block, which may be part of a reconstructed picture, which may be part of a reconstructed video. It is noted that other suitable operations, such as a deblocking operation, may be performed to improve visual quality.
[0117] It should be noted that the video encoders (403), (603), (703) and video decoders (410), (510), (810) may be implemented using any suitable technology. In some embodiments, the video encoders (403), (603), (703) and video decoders (410), (510), (810) may be implemented using one or more integrated circuits. In other embodiments, the video encoders (403), (603), (703) and video decoders (410), (510), (810) may be implemented using one or more processors executing software instructions.
[0118] According to one embodiment of the present disclosure, a bitstream may include one or more coded video sequences (CVSs). A CVS may be coded independently of other CVSs. Each CVS may include one or more layers, and each layer may be a representation of video with a particular quality (e.g., spatial resolution) or a representation of a particular component interpretation property, such as a depth map, a transparency map, or a perspective view. In the temporal dimension, each CVS may include one or more access units (AUs). Each AU may include one or more pictures of different layers corresponding to the same time instance. A Coded Layer Video Sequence (CLVS) is a layer-wise CVS that may include a sequence of picture units within the same layer. If a bitstream has multiple layers, a CVS in the bitstream may have one or more CLVSs for each layer.
[0119] In one embodiment, a CVS includes a sequence of AUs, where the sequence of AUs includes, in decoding order, an Intra Random Access Point (IRAP) AU, followed by zero or more AUs that are not IRAP AUs. In one example, the zero or more AUs include all subsequent AUs up to but not including a subsequent AU that is an IRAP AU. In one example, a CLVS includes a sequence of pictures and associated non-video coding layer (VCL) network abstraction layer (NAL) units of the base layer of the CVS.
[0120] According to some aspects of the present disclosure, video can be classified as single-view video and multi-view video. For example, single-view video (e.g., monoscopic video) is two-dimensional media that provides a viewer with a single view of a scene. Multi-view video can provide multiple perspectives of a scene, creating a sense of realism for the viewer. In one example, 3D video can provide two views, such as a left and right view corresponding to a human viewer. The two views can be displayed simultaneously or nearly simultaneously using different polarizations, and the viewer can wear polarized glasses so that each of the viewer's eyes receives one of the respective views.
[0121] This disclosure includes embodiments related to efficient coding and representation of multiple views. This disclosure includes feature-based multiview representation and delivery. In one embodiment, the content of each view (or each picture) can be extracted and represented using feature information that indicates features and / or key points. Features of different views at the same time or time instance can be prioritized to enable scalability of view access.
[0122] Multiple Views Can Be Used in Video Capture and Coding: To enrich the user's visual experience, multiple cameras can be used to capture a scene of interest from different locations, for example, as shown in Figures 9A-9B.
[0123] 9A illustrates an exemplary arch arrangement of cameras in a multi-camera capturing system according to one embodiment of the present disclosure. The cameras (e.g., designated i-1, i, i+1) are arranged around a one-dimensional (1D) arch shape. The distances between the cameras and the scene of interest may be the same or different.
[0124] FIG. 9B illustrates an exemplary 1D side-by-side arrangement of cameras in a multi-camera capturing system according to one embodiment of the present disclosure. The cameras (e.g., 1-3) are arranged along a 1D axis (e.g., horizontal camera axis). In one example, adjacent cameras are separated by a distance (e.g., camera parallax). The distances between the cameras and the scene of interest may be the same or different. The symbols v1, v2, and v3 indicate the views corresponding to cameras 1, 2, and 3, respectively. A panoramic view V pan can contain views v1-v3.
[0125] Multiple camera applications can include VR video or VR360, freeview (e.g., free viewpoint television (FTV)), lightfield video, etc. VR video can also be referred to as 360VR or VR360. VR360 can refer to video captured using an omnidirectional camera. An omnidirectional camera can simultaneously capture 360 degrees or a portion thereof. In VR video, the user can see the entire scene. Compared to regular video, VR video can provide a more immersive and interactive experience.
[0126] Free viewpoint television (FTV) can include systems for viewing natural video, allowing users to interactively control their viewpoint and generate new views of dynamic scenes from 3D positions. With FTV, the focus of attention can be controlled by the viewer rather than the director, allowing viewers to observe their own unique viewpoint.
[0127] Light field video can be captured by a light field camera or a plenoptic camera. Certain cameras record only the light intensity from a scene. Light field cameras or plenoptic cameras can record the light field. Light field video can contain information about the light field emanating from a scene, such as the light intensity in the scene and the direction that light rays are moving through space. Light field video can contain information about the light intensity in the scene and the direction that light rays are moving through space.
[0128] Multi-camera arrays such as those shown in Figures 9A-9B can capture VR360, FTV, light field video, and more.
[0129] As illustrated in Figures 9A-9B, multi-view video can be created by simultaneously capturing a scene using multiple cameras, which are appropriately positioned so that each camera captures the scene from a respective viewpoint. The multiple cameras can capture multiple video sequences corresponding to the multiple viewpoints. To provide more views, more cameras can be used to generate multi-view video with multiple video sequences associated with the views. Multi-view video may require a large storage space for storage and / or a high bandwidth for transmission. To reduce the required storage space or transmission bandwidth, multi-view video coding techniques have been developed in this field.
[0130] To improve the efficiency of coding of multi-view video, similarities between views can be exploited. In some embodiments, one of the views, called the base view, is encoded like a monoscopic video. For example, during encoding of the base view, intra-picture and / or temporal inter-picture prediction is used. The base view may be decoded using a monoscopic decoder (e.g., a monoscopic decoder) that performs intra-picture and inter-picture prediction. Other views beside the base view of the multi-view video may be called dependent views. In addition to intra-picture and inter-picture prediction, inter-view prediction with disparity compensation may be used to code the dependent views. In one example, in inter-view prediction, a current block in the dependent view is predicted using a reference block of samples from a picture of another view within the same time instance. The location of the reference block is indicated by a disparity vector. Inter-view prediction is similar to inter-(picture) prediction, except that motion vectors are replaced with disparity vectors and temporal reference pictures are replaced with reference pictures from other views.
[0131] According to some aspects of the present disclosure, multiview coding can employ a multi-layer approach. The multi-layer approach can multiplex different coded (e.g., HEVC coded) representations of a video sequence, called layers, into one bitstream. The layers can be interdependent. The dependencies can be used by inter-layer prediction to achieve improved compression performance by exploiting similarities between different layers. A layer can represent texture, depth, or other auxiliary information of a scene related to a particular camera perspective. In some examples, all layers belonging to the same camera perspective are denoted as a view. Layers carrying the same type of information (e.g., texture or depth) are called components within a multiview video.
[0132] According to one aspect of the present disclosure, multi-view video coding can include the addition of high-level syntax (HLS) (e.g., above the slice level) to an existing single-layer decoding core. In some examples, multi-view coding does not change the syntax or decoding process required for single-layer coding below the slice level (e.g., HEVC). Existing implementations can be reused without significant modification to build a multi-view video decoder. For example, the multi-view video decoder can be implemented based on the video decoder (510) or the video decoder (810).
[0133] In some examples, all pictures associated with the same capture or display time instance are included in an AU and have the same Picture Order Count (POC). Multi-view video coding enables inter-view prediction, which performs prediction from pictures within the same AU. For example, pictures decoded from other views can be inserted into one or both of the reference picture lists of the current picture. Furthermore, in some examples, a motion vector may be an actual temporal motion vector if it is associated with a temporal reference picture of the same view, or a disparity vector if it is associated with an inter-view reference picture. Regardless of whether the motion vector is a temporal motion vector or a disparity vector, a block-level motion compensation module (e.g., block-level encoding software or hardware, block-level decoding software or hardware) that operates in the same way can be used.
[0134] Once captured, the information in the multiple views (multiviews) can be processed, compressed, delivered to a client, and / or stored. The video of each view can be considered 2D video (e.g., monoscopic video) and can be efficiently coded (e.g., compressed) using the aforementioned video / image coding techniques (e.g., intra-picture and / or temporal inter-picture prediction), such as HEVC and VVC. Certain applications, such as the aforementioned VR 360, FTV, and light field video, can impose relatively high bandwidth requirements due to the large number of views in the video. Various techniques can be used to reduce the bandwidth burden.
[0135] As mentioned above, inter-view dependencies between different views can be explored. A subset of views across all views can be coded first. The contents of the coded subset of views can be used as a reference for other views to be coded, such as inter-view prediction with disparity compensation. Compared to coding the other views individually, the other views can be compressed more efficiently.
[0136] In one embodiment, a subset of views among all views can be selected for coding / compression. To reduce bandwidth requirements, other views (referred to as uncoded views) are not provided (e.g., transmitted) and do not need to be coded / compressed. From the client side, the received bitstream includes only a portion (e.g., a subset of views) of all captured views. When the content of uncoded views or other intermediate virtual (non-existent) views is to be accessed (e.g., consumed), information from neighboring view(s) can be used to render the uncoded and / or non-existent views. Uncoded views can be captured by one or more cameras but are not coded and are not transmitted. Non-existent views are views that are not captured by camera(s). In one example, depth information associated with a view (e.g., the distance between a scene of interest and the camera recording that scene of interest) is used for intermediate view rendering.
[0137] In one embodiment, spatial stitching can be performed, in which selected views to be coded are spliced into a larger video. Figure 10 shows an example of spatial stitching according to one embodiment of the present disclosure. Six views to be coded (e.g., views 0-5) can be spatially stitched into a video (1000), e.g., in a 3x2 setup. The resolution of the larger video (1000) is three times that of each of views 0-5 horizontally and twice that of each of views 0-5 vertically. The single video (1000) can be coded (e.g., encoded and / or decoded) using a related video coding method for 2D video (e.g., monoscopic video), including the aforementioned video / image coding techniques (e.g., intra-picture and / or temporal inter-picture prediction), such as HEVC or VVC. After the video (1000) is decoded, the individual views (e.g., views 0-5) can be extracted from the larger video (1000).
[0138] In one embodiment, time stacking can be performed. Pictures of different views corresponding to the same time instance can be coded sequentially, using one or more pictures as base view(s) with only intra prediction, while other pictures can reference one or more coded pictures with inter-picture prediction. After coding a view of a first time instance, similar operations can be applied to pictures of views at other time instances. For example, pictures of other time instances are not processed until all pictures of a particular time instance have been coded in order. The above method can be referred to as a "time first" coding approach. In one example, all pictures of the same time instance are processed before pictures of other time instances are coded.
[0139] In various examples, coding multiple views, such as with the coding methods described above, can be challenging due to total bandwidth consumption. In some applications, a user sees only a small subset of all view angles or viewpoints at a time. What a user can see in a reconstructed scene can be defined as a viewport. In one embodiment, a user can define a viewport. A viewport can have any suitable shape, such as a rectangle. The current viewport can change to another viewport, allowing the user to change views. If the user does not switch to another viewport, data not related to the reconstruction of the current viewport may not be transmitted. In one example, a server only needs to deliver a portion of the multi-view video data that corresponds to the current viewport. The server may not need to deliver data that does not correspond to the current viewport.
[0140] According to one embodiment of the present disclosure, feature-based video coding (or a feature-based video coding process) can be applied to selected applications, for example, when content does not change significantly across different pictures. In some selected applications, such as video conferencing scenarios, content such as a human face, a person's shoulders, or a background does not change significantly across different pictures. Feature-based video coding can be applied to selected applications, for example, when, to some extent, smoothness of playback and / or subjective quality of the video are more important than high fidelity to the original content. For example, in some video conferencing scenarios, smoothness of playback and / or subjective quality of the video are more important than high fidelity to the original content.
[0141] In this disclosure, a key picture may refer to a picture whose samples (or pixels) have been coded (e.g., encoded and decoded) using HEVC and / or VVC video / image coding techniques, including intra-(picture) and / or temporal inter-(picture) prediction, for example, as described in Figures 1A, 1B, and 2-8.
[0142] A non-key picture refers to a picture whose samples are not directly coded. For a non-key picture, feature information or feature changes of the non-key picture relative to other pictures (e.g., key pictures) can be coded (e.g., encoded and decoded).
[0143] In a feature-based video coding process, feature information of the content of a picture may be determined (e.g., extracted) from a picture. The feature information may indicate feature(s) of the content of the picture, key points of the content of the picture, etc. The process of determining (e.g., extracting) feature information (e.g., features and / or key points) may be referred to as a feature extraction process. The content (or characteristics of the content) of a picture may be represented or rendered by the feature information, including, for example, the extracted features and / or key points of the picture. In one embodiment, the feature information indicates feature(s) and / or key points of the picture that may change. If the content across different pictures of a view does not change significantly, the feature information may not include information of parts of the picture that do not change significantly, e.g., to improve coding efficiency without sacrificing visual quality.
[0144] For example, in a video conferencing application, a picture may include a person (e.g., face and upper body) and a background, and the feature information may represent content related to the person's face, but not content related to the background and upper body if, for example, the upper body does not change significantly.
[0145] A human face includes components that are common to different people in different pictures / videos, such as eyes, nose, mouth, chin, ears, etc. Differences in the shape, size, and structure of the components can distinguish one face from another. The feature information can include features such as the shape and size of the components and the placement of the components (e.g., the relative distance between two components or the position of the components on a human face). The picture can be determined based on the feature information of the human face and additional information (e.g., the background of the picture). The additional information can be determined based on another decoded picture (e.g., a decoded key picture).
[0146] Keypoints (or keypoints) can refer to significant locations within a picture and can be used to describe the structure of content within a picture (e.g., a human face or components of a human face). In some examples, component characteristics can be determined based on facial keypoints. In one example, in a nine-keypoint model of a human face, keypoints describing a human face include two keypoints indicating the positions of the two eyeballs, four keypoints indicating the near and far ends of the two eyes, a keypoint indicating the midpoints of the nostrils, and two keypoints indicating the corners of the mouth. The nine-keypoint model can be adapted to include additional keypoints (e.g., keypoints representing the positions of the ears or eyebrows) to provide a more accurate description of human facial features. In some examples, a model including several keypoints and keypoint locations is trained or determined, for example, using a neural network.
[0147] In an example such as a video conference, pictures in a video include a human face that changes from picture to picture and a background that remains relatively constant. The feature information may include keypoints, including, for example, keypoints from a nine-keypoint model and / or features associated with each keypoint. For example, two keypoints indicating two corners of the mouth may be included, and features indicating the shape / structure of the mouth, such as an open mouth, a closed mouth, etc., may be extracted from the picture. In one example, only the keypoints are extracted. The features associated with a particular keypoint(s) may be determined based on (i) the keypoints and (ii) another picture (e.g., a key picture) or feature information of another picture.
[0148] A feature difference or feature change of the current picture may indicate a change or difference between feature information of the current picture and feature information of another picture (e.g., a key picture). The feature change may relate to a change in position of the feature information, a change in orientation (e.g., in 3D space), a change in feature size, etc. For example, the coordinates of one or more key points of a 9-key point model may change. The feature information of the current picture may be determined based on the feature change of the current picture and the feature information of the other picture (e.g., a key picture).
[0149] FIG. 11A shows a schematic diagram of feature-based video coding or a feature-based video coding process (1100A). In one example, a video includes pictures of views. The feature-based video coding process (1100A) can be applied to code pictures of a single view. The pictures can include key pictures (e.g., at time instance T0) and non-key pictures (e.g., original pictures at time instances T1-T3). The video data includes data of key pictures and data of non-key pictures. On the encoder side (top), a portion of the video data (e.g., data of key pictures) can be compressed (e.g., encoded) using a method for monoscopic video, such as the aforementioned video / image coding techniques (e.g., HEVC and / or VVC image / video coding techniques) (e.g., intra-picture and / or temporal inter-picture prediction). The remaining data (e.g., data of non-key pictures at T1-T3) can be represented by corresponding feature information at T1-T3, respectively. The feature information at T1-T3 can be encoded. In one example, the samples or pixels of the non-key pictures in T1-T3 are not encoded using monoscopic video methods such as the aforementioned video / image coding techniques (e.g., HEVC and / or VVC image / video coding techniques) (e.g., intra-picture and / or temporal inter-picture prediction).
[0150] Referring to FIG. 11A , a key picture at T0 is encoded as described above. A feature extraction process is performed on the key picture at T0 to determine feature information for the key picture at T0. Feature information for the remainder of the video data (e.g., data for non-key pictures at T1-T3) can be determined. In one example, a feature extraction process can be performed on the non-key pictures at T1-T3 relative to the key picture. For the non-key pictures at T1-T3, the content of the original pictures at T1-T3 can be represented or rendered, along with corresponding adjustments, using the extracted feature information, which includes features and / or key points, respectively. For example, feature information at T1, T2, and T3 corresponding to the original pictures at T1, T2, and T3 can be encoded into a bitstream. In one example, the encoded bitstream includes the encoded key picture at T0 and the encoded feature information at T1-T3.
[0151] On the decoder side (bottom), the encoded key picture data at T0 can be decoded using a method for monoscopic video, such as the video / image coding techniques (e.g., HEVC and / or VVC image / video coding techniques) described above (e.g., intra- and / or temporal inter-picture prediction). In one example, feature information (e.g., features and / or key points) of the key picture at T0 is extracted in a similar manner to that performed on the encoder side. For additional pictures following the key picture (e.g., pictures at T1-T3), the encoded feature information indicating the features and / or key points at T1-T3 can be decoded. When feature information (e.g., features and / or key points) is prepared (e.g., decoded) for a particular picture (e.g., picture at T1), corresponding picture data at the same time instance (e.g., T1) can be restored, reconstructed, or rendered based on the decoded feature information at the time instance (e.g., T1) and the already-decoded key picture at T0. In one example, a picture at T1 is reconstructed by combining the decoded feature information at a time instance (eg, T1) with an already decoded key picture at T0.
[0152] The above description of the feature-based coding process can be appropriately adapted to the case where a feature change or feature difference is coded (e.g., encoded and / or decoded) as shown in FIG. 11B . Referring to FIG. 11B , a feature change of a current picture at a certain time instance (e.g., an original picture at T2) can indicate a difference between feature information of another picture (e.g., a key picture or a non-key picture at T0) and the feature information of the current picture at that time instance (e.g., T2). The feature change can indicate a position change, orientation change (e.g., in 3D space), feature size change, shape change, etc. of a feature and / or keypoint from another picture (e.g., a key picture at T0) to the current picture. For example, the feature change includes a coordinate change of one or more keypoints in a nine-keypoint model due to, for example, a change in human facial expression (e.g., closing or opening the mouth).
[0153] According to one embodiment of the present disclosure, the feature changes of different pictures in a video may refer to the feature changes of different pictures relative to a single picture (e.g., a picture used as a feature reference), such as a key picture at T0. For example, the feature changes of pictures at T1-T3 are relative to the same key picture at T0.
[0154] According to one embodiment of the present disclosure, feature changes of different pictures in a video can refer to feature changes of different pictures relative to each picture used as a feature reference. The feature reference can include more than one picture and can be different for different pictures. For example, a feature change at a time instance indicates a feature change between a current picture at that time instance and another picture at an adjacent time instance (or at a non-adjacent time instance). In one example, a feature change of a picture at T1 is relative to a picture at T0 (e.g., a key picture), a feature change of a picture at T2 is relative to a picture at T1, and a feature change of a picture at T3 is relative to a picture at T2.
[0155] FIG. 11B shows a schematic diagram of feature-based video coding or a feature-based video coding process (1100B). As shown in FIG. 11A, a video includes pictures of views. The feature-based video coding process (1100B) can be applied to code pictures of a single view. The pictures can include key pictures (e.g., at T0) and non-key pictures (e.g., the original pictures at T1-T3). Video data includes data of key pictures and data of non-key pictures. On the encoder side (top), data of the key picture at T0 can be compressed as shown in FIG. 11A. Feature information of the key picture at T0 can be extracted from the key picture.
[0156] In the example of FIG. 11B, the feature change of a different picture refers to the feature change of the different picture relative to another picture (e.g., the key picture at T0). The feature change of the original picture at T1 can indicate the change between the key picture and the original picture at T1. In one example, the feature change at T1 is the feature change of the original picture at T1 relative to the key picture. For example, the feature change at T1 can be determined based on the feature information of the original picture at T1 and the key picture without determining the feature information of the original picture at T1. The feature change at T1 can be determined based on the feature information of the key picture and the feature information of the original picture at T1. Similarly, the feature change of the original pictures of T2-T3 can be extracted based on, for example, the original pictures at T2-T3 and the key picture.
[0157] 11B, changes (or feature changes) to established features (e.g., as indicated by feature information of a key picture at T0) can be coded (e.g., encoded) into a bitstream. In one example, the encoded bitstream includes the key picture encoded at T0 and the feature changes encoded at T1-T3.
[0158] On the decoder side (bottom), the key picture data can be decoded in a manner similar to that described in Figure 11A. The encoded feature changes in T1-T3 (e.g., changes to the established features of the key picture in T0) can be decoded to recover corresponding feature information indicative of the features and / or key points of the pictures in T1-T3. In one example, the feature information of the key picture in T0 is decoded. The feature information indicative of the features and / or key points of the pictures in T1-T3, respectively, can be determined based on the corresponding decoded feature changes in T1-T3 and the feature information of the key picture.
[0159] When the feature information for a particular picture (e.g., a picture at T1) is decoded, the corresponding picture data at the same time instance (e.g., T1) can be restored, reconstructed, or rendered. The encoded picture can be decoded based on the decoded feature information of the picture at the same time instance and the already decoded key picture.
[0160] A feature-based video coding process such as (1100A) or (1100B) may include a feature-based video encoding (or compression) process and a feature-based video decoding process (including, for example, feature-based rendering and / or reconstruction).
[0161] In one example, the feature-based coding process 1100A or 1100B may be advantageous over related video coding techniques in selected applications if certain conditions are met. Two exemplary conditions are: (i) the bitrate cost for coding the features is less than that of coding the original video data; and (ii) the reconstructed visual quality of the feature-based video coding is subjectively acceptable. In some examples, the feature-rendered picture does not necessarily need to match the original picture or have high subjective quality, such as assessed by peak signal-to-noise ratio (PSNR) and structural similarity index (SSIM).
[0162] In a feature-based coding process, feature information about the content in a picture can be extracted from the picture. The feature information can be used to represent the picture. Instead of the samples (or pixels) in the picture, the feature information or feature changes in the picture can be coded.
[0163] The feature information does not need to include information about portions of a picture that do not change significantly. Thus, in some examples, if the content across different pictures of a view does not change significantly, the feature information may include only information about a relatively small portion of the picture. The feature changes may only include feature changes about a relatively small portion of the picture. Information about (or feature changes in) a relatively large portion of the picture, such as the background or other parts of the human body, may not be included in the encoded feature information. Coding efficiency can be improved without sacrificing visual quality.
[0164] The above description of Figures 11A-11B can be applied to feature-based coding of single-view pictures. According to one embodiment of the present disclosure, feature-based video coding can be used to code videos with multiple views. The present disclosure includes embodiments for determining (e.g., defining) features in a multi-view context. The term "feature" in the present disclosure can be used in video coding and methods that use keypoints (or keypoints) for reconstruction.
[0165] Figure 12 shows example images in a bitstream (1200) according to an embodiment of the present disclosure. The bitstream (1200) can include pictures of one or more views (e.g., views 0-(N-1)), where N is a positive integer indicating the number of views in the bitstream (1200). If N is 1, the bitstream (1200) is a single-view bitstream including pictures of a single view (e.g., view 0). If N is greater than 1, the bitstream (1200) is a multi-view bitstream including pictures of different views 0-(N-1). For each view, pictures at (M+1) time instances T0-TM are shown in Figure 12.
[0166] A picture in the bitstream (1200) can be referred to as a picture PIJ. I represents view I and ranges from 0 to (N-1). Any suitable number of views can be included in the bitstream (1200). J represents time instance J and ranges from 0 to M. Any suitable number of pictures can be included in a view in the bitstream (1200). For example, picture P32 refers to the picture at T2 in view 3. In one example, time instances T0-TM indicate the decoding order. For example, picture PI(J-1) (e.g., P31) is decoded before decoding picture PIJ (e.g., P32).
[0167] In one example, a picture of a view is captured by a camera. A picture of another view is captured by another camera. For example, N cameras can be used to capture pictures of views 0-(N-1). The multi-camera system shown in Figures 9A-9B can be used to capture pictures of views 0-(N-1).
[0168] Pictures of one view (e.g., view 0) can be coded independently of pictures of another view (e.g., view 1). Pictures of each view (e.g., P00-P0M) can be coded (e.g., encoded and / or decoded) based on the feature-based coding process (1100A) or (1100B).
[0169] As described above, inter-view dependencies across different views can be investigated for more efficient video / image coding. The inter-view dependencies can be used to determine feature information of key pictures in different views. The inter-view dependencies can be used to code non-key pictures based on feature information of key pictures in different views. The inter-view dependencies can be used to code a non-key picture in a first view (e.g., view 1) based on another picture in a second view (e.g., view 1), where the first view is different from the second view.
[0170] According to one embodiment of the present disclosure, three-dimensional (3D) feature information can be determined based on pictures of different views. Feature information indicating features / key points can be extracted based on key pictures of multiple views, for example, from different angles. In one example, a current feature model (e.g., a 3D feature model based on multiple views) is determined (e.g., established) based on the feature information. The same 3D feature model can be used to render pictures from different views.
[0171] 13 shows exemplary key pictures of different views in a bitstream (1200) that can be used to determine feature information according to an embodiment of the present disclosure. The bitstream (1200), pictures P00-P(N-1)M, views 0-(N-1), and time instances T0-TM of FIG. 13 are described in FIG.
[0172] In one embodiment, different pictures corresponding to different views at a time instance (e.g., T0) are used to determine 3D feature information or a current 3D feature model. The current 3D feature model can be used to encode and / or decode pictures from different views in the bitstream (1200). 3D feature information (or a 3D feature model) specific to the content of the key picture (e.g., a human face) can be determined based on a predefined 3D feature model (e.g., a standard 3D feature model or a generic 3D feature model) and the key picture. In one example, the predefined 3D feature model is adapted to the key picture to generate the 3D feature information (or a 3D feature model).
[0173] In one example, the entire set (1302) of pictures P00-P(N-1)0 in T0 is used to determine 3D feature information or a current 3D feature model. For example, key pictures corresponding to all of the decoded views (e.g., views 0-(N-1)) are used to generate a current 3D feature model. The 3D feature information or current 3D feature model generated based on the entire set (1302) can be referred to as unified 3D feature information or a current unified 3D feature model. The unified 3D feature information or current unified 3D feature model can be used to code (encode, decode, or generate) a picture (e.g., a non-key picture such as P32) at a specific view (one of views 0-(N-1), such as view 3) and a specific time instance (one of time instances T0-TM, such as T2).
[0174] 13 , a subset (1301) of pictures P00-P(N-1)0 at time T0 is used to determine 3D feature information or a current 3D feature model. In one example, the subset (1301) includes pictures P00, P10, and P20 of views 0-2 at time T0, respectively. The 3D feature information or current 3D feature model generated based on the subset (1301) can be referred to as unified 3D feature information or a current unified 3D feature model that can be used to code (e.g., encode, decode, or generate) a picture (e.g., a non-key picture such as P32) at a particular view (one of views 0-(N-1), such as view 3) and a particular time instance (one of time instances T0-TM, such as T2).
[0175] Figure 14 shows an example subset of key pictures of different views in a bitstream (1200) that can be used to determine pieces of 3D feature information, according to one embodiment of the present disclosure. Pictures (e.g., non-key pictures) in the bitstream (1200) can be determined based on the determined pieces of 3D feature information or corresponding different current 3D feature models. The bitstream (1200) of Figure 14, pictures P00-P(N-1)M, views 0-(N-1), and time instances T0-TM are described in Figure 12.
[0176] A first subset (e.g., subset (1401)) of pictures (e.g., P00-P(N-1)0 at T0) of a first view (e.g., view 0-2) at a time instance can be used to determine first 3D feature information or a first current 3D feature model. In one example, the first subset (1401) includes pictures P00, P10, and P20 of views 0-2 at T0, respectively. The first 3D feature information or the first current 3D feature model can be used to code (e.g., encode, decode, or generate) a picture (e.g., a non-key picture such as P02) of one of the first views (one of views 0-2, such as view 0) and at a particular time instance (one of time instances T0-TM, such as T2).
[0177] A second subset (2103) of pictures at a time instance (e.g., P00-P(N-1)0 at T0) can be used to determine second 3D feature information or a second current 3D feature model. In one example, the second subset (2103) includes pictures P20, P30, and P40 of views 2-4 at T0, respectively. The second 3D feature information or the second current 3D feature model can be used to code (e.g., encode, decode, or generate) a picture (e.g., a non-key picture such as P32) at one of the second views (one of views 2-4, such as view 3) and a particular time instance (one of time instances T0-TM, such as T2).
[0178] Returning to reference to Figures 13-14, feature changes of 3D feature information (e.g., obtained by 3D changes or 3D transformations between two adjacent feature information corresponding to two adjacent pictures) can be signaled. The feature changes can be transmitted to a decoder in a bitstream (1200). At the decoder side, each 3D feature information or each 3D feature model (e.g., the unified 3D feature information or the current unified 3D feature model in Figure 13, and the different 3D feature information or the different 3D feature model in Figure 14) can be applied to the signaled feature changes at different view angles to render a reconstructed picture for a particular view.
[0179] According to one embodiment of the present disclosure, individual feature information (or feature model) can be determined (e.g., constructed) for each view or a subset of views based on respective key pictures of the multiple views. Each view can be associated with respective feature information that indicates respective features and / or key points of the view. In one example, individual feature information (or feature model) for a particular view and a particular time instance is generated using key pictures of multiple views (e.g., multiple adjacent views) as input.
[0180] Figure 15 shows an example subset of key pictures of different views in a bitstream (1200) that can be used to determine pieces of feature information according to one embodiment of this disclosure. The bitstream (1200) of Figure 15, pictures P00-P(N-1)M, views 0-(N-1), and time instances T0-TM are described in Figure 12.
[0181] A first subset (e.g., subset (1501)) of pictures (e.g., P00-P(N-1)0 at T0) of a set of pictures of a first view (e.g., views 0-2) at a time instance can be used to determine first feature information or a first current feature model for a first view (e.g., view 0) in the set of first views. In one example, the first subset (1501) includes pictures P00, P10, and P20, which correspond to views 0-2, respectively, at T0. The first feature information or first current feature model can be used to code (encode, decode, or generate) a picture (e.g., a non-key picture such as P02) in the first view (e.g., view 0) and a particular time instance (one of time instances T0-TM, such as T2). In one example, the first feature information or first current feature model is first 3D feature information or a first current 3D feature model. In one example, the first feature information or the first current feature model is first 2D feature information or a first current 2D feature model.
[0182] A second subset (e.g., subset (1502)) of pictures (e.g., P00-P(N-1)0 at T0) of a set of second views (e.g., views 1-3) at the same time instance can be used to determine second feature information or a second current feature model for a second view (e.g., view 1) in the set of second views. In one example, the second subset (1502) includes pictures P10, P20, and P30 corresponding to views 1-3, respectively, at T0. The second feature information or the second current feature model can be used to code (encode, decode, or generate) a picture (e.g., a non-key picture such as P12) in the second view (e.g., view 1) and at a particular time instance (one of time instances T0-TM, such as T2).
[0183] In one example, a third subset (e.g., subset (1503)) of pictures (e.g., P00-P(N-1)0 at T0) of a third set of views (e.g., views 2-4) at the same time instance can be used to determine third feature information or a third current feature model for a third view (e.g., view 2) in the third set of views. In one example, the third subset (1503) includes pictures P20, P30, and P40 corresponding to views 2-4, respectively, at T0. The third feature information or the third current feature model can be used to code (encode, decode, or generate) a picture (e.g., a non-key picture such as P22) in the third view (e.g., view 2) and at a particular time instance (one of time instances T0-TM, such as T2).
[0184] Figure 16 illustrates an exemplary coding method (1600) for feature-based multiview coding according to one embodiment of this disclosure. Pictures P00-P(N-1)M, views 0-(N-1), and time instances T0-TM of the bitstream (1200) of Figure 16 are described in Figure 12.
[0185] Pictures across different views at a time instance, such as the first time instance (e.g., T0) of an entire sequence in the bitstream (1200), can be coded as key pictures as described above. At the decoder side, the reconstructed key pictures of each of the different views (e.g., views 0-(N-1)) at a time instance (e.g., the first time instance, such as T0) can be used as key pictures for later feature-based rendering and / or reconstruction of pictures (e.g., non-key pictures) of the same view but at different time instances.
[0186] For example, the entire set (1302) of pictures at T0, including P00-P(N-1)0, is a key picture. The key pictures P00-P(N-1)0 at T0 can be coded (e.g., encoded and / or decoded) using a method for monoscopic video, such as the aforementioned video / image coding techniques (e.g., HEVC and / or VVC image / video coding techniques) (e.g., intra-picture and / or temporal inter-picture prediction). The encoded key pictures P00-P(N-1)0 can be transmitted to a decoder side. At the decoder side, a reconstructed key picture (e.g., P20) of a first view (e.g., view 2) at T0 can later be used as a key picture to decode pictures (e.g., non-key pictures P20-P2M) at the first view (e.g., view 2) but at different time instances (e.g., T1-TM) using a feature-based rendering and / or reconstruction process.
[0187] One or more of the embodiments in Figures 13-15 can be combined with the embodiment in Figure 16. Referring to Figure 16, the key pictures can include all pictures at a first time instance (e.g., T0). Referring to Figures 13-15, the feature information or feature model can be determined based on a subset (e.g., 1301, 1401, 1501) or the entire set (e.g., 1302) of all pictures at the first time instance (e.g., T0). The feature information or feature model can be the unified 3D feature information or unified 3D feature model of Figure 13 applicable to all non-key pictures in the bitstream (1200), one of the multiple pieces of 3D feature information or one of the different current 3D feature models of Figure 14 applicable to a subset of non-key pictures of each view in the bitstream (1200), or individual feature information or individual feature models of Figure 15 applicable to a subset of non-key pictures of each view in the bitstream (1200).
[0188] Referring to Figure 16, a feature change of a picture (e.g., non-key picture P22) of a first view (e.g., view 2) may be generated based on the non-key picture P22 of the first view and a key picture (e.g., P20) at the first time instance. In one example, the feature change of the non-key picture P22 of the first view is generated based on the non-key picture P22 of the first view and a key picture (e.g., P20) of the first view at the first time instance, and the feature change indicates the feature change of the same view (e.g., the first view) in the time domain (e.g., T0 to T2). The feature changes and key pictures (including P20) of all views at the first time instance can be encoded. At the decoder side, the non-key picture P22 can be decoded based on the decoded feature change and the decoded key picture P20. In one example, feature information or feature models can be obtained at the decoder side from each decoded key picture (e.g., subset (1301), subset (1401), subset (1501), etc.) using the same method as at the encoder side. Non-key picture P22 can be decoded based on the feature changes, feature information or feature models, and decoded key picture P20.
[0189] Figure 17 illustrates an exemplary coding method (1700) for feature-based multiview coding according to one embodiment of this disclosure. Pictures P00-P(N-1)M, views 0-(N-1), and time instances T0-TM of the bitstream (1200) of Figure 17 are described in Figure 12.
[0190] Pictures of a first view (e.g., view 0) across different time instances (e.g., T0-TM) can be coded as key pictures as described above. In one example, the key pictures include all pictures of the first view (e.g., P00-P0M). At the decoder side, the reconstructed key pictures at each of the different time instances (e.g., T0-TM) of the first view can later be used as key pictures for feature-based rendering and / or reconstruction of pictures of the same time instance but different views (e.g., non-key pictures).
[0191] For example, the entire set (1701) of pictures of a first view (e.g., view 0) including P00-P0M is a key picture. The key pictures P00-P0M of view 0 can be coded (e.g., encoded and / or decoded) using a monoscopic video method such as the aforementioned video / image coding techniques (e.g., HEVC and / or VVC image / video coding techniques) (e.g., intra-picture and / or temporal inter-picture prediction). The encoded key pictures P00-P0M can be transmitted to a decoder side. At the decoder side, the reconstructed key picture (e.g., P01) of the time instance (e.g., T1) of view 0 can later be used as a key picture to decode pictures (e.g., non-key pictures P11-P(N-1)1) of different views (e.g., views 1-(N-1)), each at a time instance (e.g., T1), in a feature-based rendering and / or reconstruction process.
[0192] In the example of FIG. 17 , a feature change of a non-key picture (e.g., P21) of a second view (e.g., view 2) relative to a key picture (e.g., P01) of a first view (e.g., view 0) at the same time instance (e.g., T1) is determined based on the non-key picture (e.g., P21) of the second view (e.g., view 2) and the key picture (e.g., P01) of the first view (e.g., view 0) at the same time instance (e.g., T1). The feature change indicates a feature change at the same time instance for a view (e.g., from the first view to the second view). The feature change can be encoded and transmitted to the decoder side. At the decoder side, a non-key picture (e.g., P21) can be generated based on a key picture (e.g., P01) at the same time instance as the decoded feature change for a view (e.g., from the first view to the second view).
[0193] In one example, feature information of one or more key pictures (e.g., including P01) of a first view (e.g., view 0) is extracted from one or more key pictures (e.g., including P01) of the first view at the encoder side and / or decoder side. At the decoder side, a non-key picture (e.g., P21) can be generated based on the decoded feature changes for a view (e.g., from the first view to the second view), the key picture (e.g., P01) at the same time instance, and the feature information of one or more key pictures (e.g., including P01) of the first view (e.g., view 0).
[0194] The coding methods 1600 and 1700 can be referred to as a feature-based multiview coding architecture. In one example, the two feature-based multiview coding methods 1600 and 1700 can be combined. A key picture can include a combination of (i) pictures at different time instances of a view and (i) pictures of different views at a time instance. For example, a key picture can include a combination of (i) all pictures at different time instances of a view and (i) all pictures of different views at a time instance.
[0195] Figure 18 illustrates an exemplary coding method (1800) for feature-based multiview coding according to one embodiment of this disclosure. Pictures P00-P(N-1)M, views 0-(N-1), and time instances T0-TM of the bitstream (1200) of Figure 18 are described in Figure 12.
[0196] Pictures of a first view (e.g., view 0) across different time instances (e.g., T0-TM) can be coded as key pictures, as described above. Pictures across different views at a time instance, such as the first time instance (e.g., T0) of an entire sequence in the bitstream (1200), can be coded as key pictures. In one example, the key pictures include (i) a first set including all pictures of the first view (e.g., P00-P0M) and (ii) a second set including all pictures (e.g., P00-P(N-1)0) of all views (e.g., views 0-(N-1)) at the first time instance (e.g., T0). Because P00 is shared between the first and second sets, the key pictures include P00-P0M and P10-P(N-1)0. The key pictures P00-P0M and P10-P(N-1)0 may be coded (e.g., encoded and / or decoded) using a method for monoscopic video, such as the aforementioned video / image coding techniques (e.g., HEVC and / or VVC image / video coding techniques) (e.g., intra-(picture) and / or temporal inter-(picture) prediction). The coded key pictures P00-P0M and P10-P(N-1)0 may be transmitted to the decoder side.
[0197] At the decoder side, a picture (e.g., non-key picture P22) of a second time instance (e.g., T2) of a second view (e.g., view 2) can be reconstructed based on (i) a first reconstructed key picture (e.g., P02) of a first set (e.g., P00-P0M) at the second time instance and (ii) a second reconstructed key picture (e.g., P20) of a second set (e.g., P00-P(N-1)0) of the second view (e.g., view 2).
[0198] Different views may be assigned different priorities for transmission or distribution, and in some instances, for example, when bandwidth is limited, certain views (e.g., views with lower priority than other views) may be discarded.
[0199] Multiple pieces of feature information and / or associated feature changes for different time instances, when associated with their respective views, may have the same priority as the associated view. In one example, feature information for a view (e.g., view 0), such as feature information for picture(s) of the view, may be assigned the same transmission priority as the view (e.g., view 0). With reference to FIG. 12 , a first piece(s) of feature information and / or a first feature change associated with one or more pictures of a first view (e.g., view 0), such as one or more pictures of P00-P0M, may have a first priority as the first view (e.g., view 0). A second piece(s) of feature information and / or a second feature change(s) associated with one or more pictures of a second view (e.g., view 1), such as one or more pictures of P10-P1M, may have a second priority as the second view (e.g., view 1).
[0200] Common feature information can be shared by multiple views (e.g., a first view (e.g., view 0) and a second view (e.g., view 1)). For example, a first piece of feature information for a first view and a second piece of feature information for a second view both indicate eyes, nose, and mouth. The first piece of feature information indicates a left ear, and the second piece of feature information indicates a right ear. The common feature information shared by the first view and the second view indicates features and / or key points of the eyes, nose, and mouth. The non-common feature information indicates features and / or key points of the left and right ears. According to one embodiment of the present disclosure, common feature information (e.g., eyes, nose, and mouth) shared by multiple views (e.g., a first view and a second view) can have a higher priority than non-common feature information associated with the same view.
[0201] When the joint feature information or joint feature model is used to describe the features and / or keypoints of all the views, the joint feature information or joint feature model at different time instances may have the highest priority and will be transmitted to the decoder. In one example, the joint feature information or joint feature model at different time instances is not discarded.
[0202] The view priorities may be a different set of priorities, for example, the view priorities are different from the priorities set for the temporal layers of the video bitstream.
[0203] FIG. 19 illustrates example pictures corresponding to different views at different time instances according to an embodiment of the present disclosure. The time instances are denoted T0-T11. The views are denoted S0-S7. The pattern of pictures can be repeated along the time axis, for example, with a period of 8. The pattern of pictures from T8 to T11 repeats the pattern of pictures from T0 to T3. The picture denoted I0 can be coded independently without reference to another picture. The picture denoted P0 can be coded based on another picture, such as picture I0. The pictures denoted B1, B2, and B3 can be coded based on two other pictures. In one example, B1 is predicted based on I0(s) and / or P0(s). In one example, B2 is predicted based on I0(s), P0(s), and B1(s). In one example, B3 is predicted based on I0(s), P0(s), B1(s), and B2(s). In one example, B4 is predicted based on four other pictures including B1(s), B2(s), and B3(s).
[0204] The priorities of views at a particular time instance (e.g., T0) can be, in descending order, as follows: priority of view S0, priority of view S2, priority of view S4, priority of view S6, priority of view S7, and priority of views S1, S3, and S5. In one example, the priorities of views S1, S3, and S5 are the same. The priorities of views at another time instance (e.g., T1) can be the same as those at the aforementioned time instance T0.
[0205] The priorities of the temporal layers (e.g., T0-T7) for a particular view (e.g., S0) are, in descending order, as follows: priority of temporal layer T0, priority of temporal layer T4, priority of temporal layers T2 and T6, and priority of temporal layers T1-T3, T5, and T7. In one example, the priorities of temporal layers T2 and T6 are the same. In one example, the priorities of temporal layers T1-T3, T5, and T7 are the same. The priorities of the temporal layers of another view (e.g., S1) may be the same as those of the aforementioned view S0.
[0206] View priorities may reuse priorities set for temporal layers of the video bitstream.
[0207] 20 shows a flowchart outlining an encoding process (2000) according to an embodiment of the present disclosure. In various embodiments, the process (2000) is performed by processing circuitry, such as processing circuitry within terminal devices (310), (320), (330), and (340), processing circuitry performing the functions of a video encoder (e.g., (403), (603), (703)), etc. In some embodiments, the process (2000) is implemented with software instructions, and thus, the processing circuitry performs the process (2000) when it executes the software instructions. The process begins at (S2001) and proceeds to (S2010).
[0208] In (S2010), first feature information or a first current feature model of content in at least one first key picture of the pictures can be determined, as illustrated in Figures 13-15, where the pictures correspond to different views (e.g., views 0-(N-1)), and the at least one first key picture corresponds to at least one first view of the different views.
[0209] At (S2020), a first feature change can be determined for the first feature information. The first feature change can indicate a content change between the key picture and the first picture within at least one first key picture, as described above (e.g., FIGS. 11B, 16, and 17).
[0210] At (S2030), the first feature change and at least one first key picture can be encoded. In one example, the first feature change and at least one first key picture are included in a multiview bitstream, as described in Figures 11B, 16, and 17.
[0211] The process (2000) proceeds to (S1399) and ends.
[0212] Process 2000 can be adapted to various scenarios as appropriate, and steps within process 2000 can be adjusted accordingly. One or more of the steps within process 2000 can be adapted, omitted, repeated, and / or combined. Any suitable order can be used to perform process 2000. Additional step(s) can be added.
[0213] 21 shows a flowchart outlining a decoding process (2100) according to an embodiment of the present disclosure. In various embodiments, the process (2100) is performed by a processing circuit, such as processing circuitry within the terminal devices (310), (320), (330), and (340), a processing circuit performing the functions of the video encoder (403), a processing circuit performing the functions of the video decoder (410), a processing circuit performing the functions of the video decoder (510), a processing circuit performing the functions of the video encoder (603), etc. In some embodiments, the process (2100) is implemented with software instructions, and thus, the processing circuit performs the process (2100) when the processing circuit executes the software instructions. The process begins at (S2101) and proceeds to (S2110).
[0214] In (S2110), at least one first key picture of pictures from a multiview bitstream can be decoded, where the pictures can correspond to different views, and the at least one first key picture can correspond to at least one first view of the different views.
[0215] In (S2120), first feature information or a first current feature model of the content in at least one first key picture of the pictures can be determined, as illustrated in Figures 13-15.
[0216] In one example, the at least one first key picture corresponds to the first time instance, the at least one first key picture includes multiple first key pictures, the at least one first view of the different views includes multiple first views, and the first feature information includes first 3D feature information or a first 3D current feature model indicated by the multiple first views, as described in Figures 13-14.
[0217] In one example, the first 3D feature information at the first time instance is determined based on a first predetermined 3D feature model and a plurality of first key pictures.
[0218] The first 3D features can be used to decode the pictures of each of the different views.
[0219] The plurality of first key pictures includes each key picture at the first time instance. Referring to Figure 13, the at least one first key picture includes P00-P(N-1)0.
[0220] In one example, the first picture is of a different view at a second time instance.
[0221] In one example, the second 3D feature information of the content of multiple second key pictures of the picture at the first time instance is determined based on a second predetermined 3D feature model, as described in Figure 14. The multiple second key pictures correspond to the first time instances of multiple second views of different views.
[0222] At (S2130), a first feature change for the first feature information can be decoded based on the multi-view bitstream, where the first feature change can indicate a content change between a key picture in the at least one first key picture and the first picture.
[0223] In (S2140), the first picture can be reconstructed based on the decoded first feature change, the first feature information, and at least one key picture in the first key picture.
[0224] The process (2100) proceeds to (S2199) and ends.
[0225] The process 2100 can be adapted to various scenarios as appropriate, and the steps within the process 2100 can be adjusted accordingly. One or more of the steps within the process 2100 can be adapted, omitted, repeated, and / or combined. Any suitable order can be used to perform the process 2100. Additional steps can be added.
[0226] In one embodiment, the first feature information is associated with the first view of the at least one first view, as described in Figure 15. For each view of a different view other than the first view, the respective feature information can be determined based on a key picture of the view and another key picture of an adjacent view of the different view. Based on the multiview bitstream, feature changes for the respective feature information can be decoded, and the feature changes correspond to respective pictures of the view. Pictures of the view can be generated based on the respective feature changes, the respective feature information, and the key picture of the view.
[0227] A subset of first-view pictures of at least one first view corresponding to each time instance can be decoded, and the subset of first-view pictures includes at least one first key picture. The first pictures are of a second view of a different view. The first pictures and the at least one first key picture correspond to the first time instance. The first feature change indicates a feature change between the first picture of the second view at the first time instance and the key picture of the first view at the first time instance.
[0228] In one example, each picture of the at least one first view can be decoded as a key picture, and each picture of the first view corresponds to a respective time instance.
[0229] Embodiments of the present disclosure can be applied to video sequences with multiple views or still pictures with multiple views, including but not limited to VR 360, freeview systems, light field video, etc.
[0230] The embodiments in this disclosure may be used individually or combined in any order. Furthermore, each of the methods (or embodiments), encoders, and decoders 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.
[0231] The techniques described above can be implemented as computer software using computer-readable instructions and can be physically stored on one or more computer-readable media. For example, Figure 22 illustrates a computer system (2200) suitable for implementing certain embodiments of the disclosed subject matter.
[0232] Computer software can be coded using any suitable machine code or computer language and can be subjected to assembly, compilation, linking, or similar mechanisms to create code containing instructions that can be executed by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc., either directly or through interpretation, microcode execution, etc.
[0233] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, Internet of Things devices, etc.
[0234] 22 for computer system 2200 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. Neither the arrangement of components should be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 2200.
[0235] The computer system 2200 may include certain human interface input devices that may respond to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, claps), visual input (e.g., gestures), or olfactory input (not shown). Additionally, the human interface devices may be used to capture certain media that do not necessarily involve direct conscious human input, such as audio (e.g., speech, music, ambient sounds), images (e.g., scanned images, picture images obtained from a still image camera), and video (e.g., two-dimensional video, three-dimensional video, including stereoscopic video).
[0236] The input human interface devices may include one or more (only one of each is shown) of a keyboard (2201), a mouse (2202), a trackpad (2203), a touchscreen (2210), a data glove (not shown), a joystick (2205), a microphone (2206), a scanner (2207), and a camera (2208).
[0237] The computer system (2200) may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen (2210), data gloves (not shown), or joystick (2205); however, haptic feedback devices may also function as input devices), audio output devices (e.g., speakers (2209), headphones (not shown)), visual output devices (e.g., screens (2210), including CRT screens, LCD screens, plasma screens, and OLED screens; each may or may not have touchscreen input capabilities, each may or may not have haptic feedback capabilities, some of which may output two-dimensional visual output or output in greater than three dimensions through means such as stereoscopic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0238] The computer system (2200) may also include human-accessible storage devices and associated media, such as optical media including CD / DVD ROM / RW (2220) along with CD / DVD or similar media (2221), thumb drives (2222), removable hard drives or solid state drives (2223), legacy magnetic media (not shown) such as tape and floppy disks, specialized ROM / ASIC / PLD-based devices (not shown) such as security dongles, etc.
[0239] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.
[0240] The computer system 2200 may also include an interface 2254 to one or more communications networks 2255. Networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, in-vehicle, and industrial, real-time, delay-tolerant, and the like. Examples of networks include Ethernet, WLAN, cellular networks including GSM, 3G, 4G, 5G, LTE, and the like; TV wired or wireless wide-area digital networks including cable, satellite, and terrestrial broadcast television; and in-vehicle and industrial networks including CAN Bus. Certain networks typically require an external network interface adapter attached to a specific general-purpose data port or peripheral bus 2249 (e.g., a USB port on the computer system 2200). Others are typically integrated into the core of the computer system 2200 by attachment to a system bus, as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system 2200 can communicate with other entities. Such communication may be unidirectional, receive only (e.g., broadcast television), unidirectional transmit only (e.g., CANbus to a specific CANbus device), or bidirectional, for example, to other computer systems using local or wide-area digital networks. Specific protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.
[0241] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core (2240) of the computer system (2200).
[0242] The cores 2240 may include one or more central processing units (CPUs) 2241, graphics processing units (GPUs) 2242, specialized programmable processing units in the form of field programmable gate arrays (FPGAs) 2243, task-specific hardware accelerators 2244, graphics adapters 2250, etc. These devices may be connected through a system bus 2248, along with read-only memory (ROM) 2245, random access memory 2246, and internal mass storage devices 2247, such as internal non-user-accessible hard drives or solid-state drives (SSDs). In some computer systems, the system bus 2248 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 2248 or through a peripheral bus 2249. In one example, a screen 2210 may be connected to the graphics adapter 2250. Architectures for peripheral buses include PCI, USB, and the like.
[0243] The CPU (2241), GPU (2242), FPGA (2243), and accelerator (2244) can execute specific instructions that, in combination, can constitute the above-mentioned computer code. The computer code can be stored in ROM (2245) or RAM (2246). Temporary data can be stored in RAM (2246), while persistent data can be stored, for example, in an internal mass storage device (2247). Fast storage and retrieval from any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more of the CPU (2241), GPU (2242), mass storage device (2247), ROM (2245), RAM (2246), etc.
[0244] The computer-readable medium may have computer code thereon 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 having skill in the computer software arts.
[0245] By way of example and not limitation, the architecture (2200), and in particular a computer system having a core (2240), can provide functionality as a result of processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage, as introduced above, as well as media associated with specific storage of the core (2240) that is non-transitory in nature, such as a core-internal mass storage device (2247) or ROM (2245). Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core (2240). The computer-readable media can include one or more memory devices or chips, depending on particular needs. The software can cause the core (2240), and in particular the processors (including CPUs, GPUs, FPGAs, etc.) therein, to perform certain processes or certain specific portions thereof described herein, including defining data structures stored in RAM (2246) and modifying such data structures according to software-defined processes. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator (2244)), which may operate in place of or in conjunction with software to perform specific processes or portions of specific processes described herein. Reference to software includes logic, and vice versa, as appropriate. Reference to a computer-readable medium may encompass circuitry (e.g., an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, as appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0246] Appendix A: Acronyms JEM: joint exploration model VVC: versatile video coding BMS: benchmark set MV: Motion Vector HEVC: High Efficiency Video Coding SEI: Supplementary Enhancement Information VUI: Video Usability Information GOP: Group of Pictures TU: Transform Unit PU: Prediction Unit CTU: Coding Tree Unit CTB: Coding Tree Block PB: Prediction Block HRD: Hypothetical Reference Decoder SNR: Signal Noise Ratio CPU: Central Processing Unit GPU: Graphics Processing Unit CRT: Cathode Ray Tube LCD: Liquid-Crystal Display OLED: Organic Light-Emitting Diode CD: Compact Disc DVD: Digital Video Disc ROM: Read-Only Memory RAM: Random Access Memory ASIC: Application-Specific Integrated Circuit PLD: Programmable Logic Device LAN: Local Area Network GSM: Global System for Mobile communications LTE: Long-Term Evolution CANBus: Controller Area Network Bus USB: Universal Serial Bus PCI: Peripheral Component Interconnect FPGA: Field Programmable Gate Areas SSD: solid-state drive IC: Integrated Circuit CU: Coding Unit RD: Rate-Distortion
[0247] While this disclosure has described several exemplary embodiments, there are alterations, substitutions, and various substitute equivalents, which fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise many systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.
Claims
1. 1. A method for video decoding in a video decoder, comprising: decoding at least one first key picture of pictures from a multiview bitstream, the pictures corresponding to different views, and the at least one first key picture corresponding to at least one first view of the different views; determining first feature information of content in the at least one first key picture of the pictures; decoding a first feature change for the first feature information based on the multiview bitstream, the first feature change indicating a content change between a key picture and a first picture in the at least one first key picture; and reconstructing the first picture based on the decoded first feature change, the first feature information, and the key picture in the at least one first key picture; The method includes decoding a subset of the pictures corresponding to the different views, the subset of pictures being of one first view of the at least one first view corresponding to a respective time instance, the subset of pictures of the first view including the key picture in the at least one first key picture; the first picture is of a second one of the different views; the first picture and the key picture of the at least one first key picture correspond to a first time instance; the first feature change indicates a feature change between the first picture of the second view at the first time instance and the key picture of the first view at the first time instance; the at least one first key picture corresponds to a first time instance; the at least one first key picture includes a plurality of first key pictures; the at least one first view of the different views includes a plurality of first views; the first feature information includes first three-dimensional (3D) feature information represented by the plurality of first views; determining the first feature information includes determining the first 3D feature information at the first time instance based on a first predetermined 3D feature model and the plurality of first key pictures; method.
2. the first 3D feature information is used to decode a picture of each of the different views; The method of claim 1.
3. the plurality of first key pictures includes each key picture at the first time instance; The method of claim 1.
4. the method includes determining second 3D feature information of content in a plurality of second key pictures of the picture at the first time instance based on a second predetermined 3D feature model, the plurality of second key pictures corresponding to the first time instance of a plurality of second views of the different views; The method of claim 1.
5. 1. A method for video decoding in a video decoder, comprising: decoding at least one first key picture of pictures from a multiview bitstream, the pictures corresponding to different views, and the at least one first key picture corresponding to at least one first view of the different views; determining first feature information of content in the at least one first key picture of the pictures; decoding a first feature change for the first feature information based on the multiview bitstream, the first feature change indicating a content change between a key picture and a first picture in the at least one first key picture; and reconstructing the first picture based on the decoded first feature change, the first feature information, and the key picture in the at least one first key picture; the first feature information is associated with a first view of the at least one first view; For each of the different views that is not the first view, the method further comprises: determining feature information of each of the different views based on a key picture of the view and another key picture of an adjacent view of the different view; decoding feature changes for the respective feature information based on the multiview bitstream, the feature changes corresponding to the respective pictures of the views; and generating the picture of the view based on each of the feature changes, the respective feature information, and the key picture of the view; method.
6. the first picture of a view in the different view is at a second time instance; The method of claim 3.
7. decoding each picture of one of the at least one first views as a key picture, wherein each picture of the first view corresponds to a respective time instance; The method of claim 6.
8. Apparatus for video decoding, comprising a processing circuit for performing the method according to any one of claims 1 to 7.
9. A program causing at least one processor to carry out the method of any one of claims 1 to 7.
Citation Information
Patent Citations
System and method for off-line multi-view video compression
JP2006081161A
Video signal encoder, video signal processor, video signal distribution system and method of operating video signal distribution system
JP2007525920A
Feature point output device, feature point output program, feature point output method, search device, search program, and search method
JP2014137719A
Multi-view video predictive encoding method and device thereof, multi-view video predictive decoding method and device thereof
JP2014527753A
Method and system for obtaining 3D pose of object and 3D location of landmark point of object
JP2016161569A