Encoding / decoding video picture data
By introducing the interaction between ITMP and IBC modes in the video compression system, and using the block vector information of the ITMP mode to optimize the IBC mode, the problem of insufficient interaction between these two prediction modes in the prior art is solved, and the encoding and decoding efficiency of video images is improved.
Patent Information
- Application Number
- CN202380048160.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-07-05
- Filing Date
- 2023-04-24
- Publication Date
- 2025-03-11
AI Technical Summary
The existing video compression system lacks effective interaction when enabling IBC and ITMP prediction modes, resulting in low encoding and decoding efficiency.
By introducing the interaction between the intra-template matching prediction (ITMP) mode and the intra-block copy prediction (IBC) mode in the video screen, the block vector information obtained by the ITMP mode is used to optimize the block vector prediction of the IBC mode.
The overall encoding and decoding efficiency of the video picture is improved, and the accuracy and efficiency of prediction blocks are enhanced by reducing the bit rate cost of block vector information.
Smart Images

Figure CN119605178A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is based upon and claims the benefit of priority of European patent application No. “22306005.4” filed on July 5, 2022, the entire contents of which are incorporated herein by reference. Technical Field
[0003] The present application generally relates to video picture encoding and decoding. In particular, but not limited thereto, the technical field of the present application relates to prediction of video picture blocks based on intra-frame template matching. Background Art
[0004] This section is intended to introduce the reader to various aspects of the art, which may be related to various aspects of at least one exemplary embodiment of the present application described and / or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of various aspects of the present application. Therefore, it should be understood that these statements should be read in this light, and not as admissions of prior art.
[0005] In state-of-the-art video compression systems, such as HEVC (ISO / IEC 23008-2 High Efficiency Video Coding, ITU-T Recommendation H.265, https: / / www.itu.int / rec / T-REC-H.265-202108-P / en) or VVC (ISO / IEC 23090-3 Versatile Video Coding, ITU-T Recommendation H.266, https: / / www.itu.int / rec / T-REC-H.266-202008-I / en), low-level and high-level picture partitioning are provided to divide the video picture into picture blocks, so-called Codec Tree Units (CTUs), whose size may typically be between 16x16 and 64x64 pixels for HEVC and between 32x32, 64x64 or 128x128 pixels for VVC.
[0006] The CTU partitioning of a video picture forms a grid composed of CTUs of a fixed size, namely a CTU grid, whose upper and left boundaries spatially coincide with the top and left boundaries of the video picture. The CTU grid represents the spatial partitioning of the video picture.
[0007] In VVC and HEVC, the CTU sizes (CTU width and CTU height) of all CTUs of the CTU grid are equal to the same default CTU size (default CTU width CTU DW and default CTU height CTU DH). For example, the default CTU size (default CTU height, default CTU width) may be equal to 128 (CTU DW = CTU DH = 128). The default CTU size (height, width) is encoded into the bitstream, for example at the sequence level in a sequence parameter set (SPS).
[0008] The spatial position of a CTU in the CTU grid is determined by the CTU address ctuAddr, which defines the spatial position of the upper left corner of the CTU relative to the origin. Figure 1 As shown in , a CTU address may define a spatial position starting from the upper left corner of a higher level spatial structure S that contains the CTU.
[0009] Each CTU is associated with a codec tree to determine the tree partitioning of the CTU.
[0010] like Figure 1 As shown in , in HEVC, the codec tree is a quadtree partition of CTU, where each leaf is called a codec unit (CU). The spatial position of the CU in the video picture is defined by the CU index cuIdx, which indicates the spatial position starting from the upper left corner of the CTU. The CU is spatially partitioned into one or more prediction units (PUs). The spatial position of the PU in the video picture VP is defined by the PU index puIdx, which defines the spatial position starting from the upper left corner of the CTU, and the spatial position of the elements of the partitioned PU is defined by the PU partition index puPartIdx, which defines the spatial position starting from the upper left corner of the PU. Each PU is assigned some intra-frame or inter-frame prediction data.
[0011] The codec mode intra or inter is assigned at the CU level. This means that although the prediction parameters vary from PU to PU, the same intra / inter codec mode is assigned to each PU of a CU.
[0012] According to a quadtree called a transform tree, a CU can also be spatially partitioned into one or more transform units (TUs). A transform unit is a leaf of a transform tree. The spatial position of a TU in a video picture is defined by a TU index tuIdx, which defines the spatial position starting from the upper left corner of the CU. Each TU is assigned some transform parameters. The transform type is assigned at the TU level, and 2D individual transforms are performed at the TU level during encoding or decoding of a picture block.
[0013] Figure 2The existing PU partition types in HEVC are illustrated in Figure 1. They include square partitions (2N×2N and N×N), which are the only partitions used in both intra- and inter-predicted CUs, symmetric non-square partitions (2N×N, N×2N, used only in inter-predicted CUs), and asymmetric partitions (used only in inter-predicted CUs). For example, PU type 2NxnU represents an asymmetric horizontal partition of a PU, where the smaller partition is located at the top of the PU. According to another example, PU type 2NxnL represents an asymmetric horizontal partition of a PU, where the smaller partition is located at the top of the PU.
[0014] like Figure 3 As shown in , in VVC, the codec tree starts from the root node (i.e., CTU). Next, the quadtree (or quadtree) splits the root node into 4 nodes, corresponding to 4 equally sized sub-blocks (solid lines). Next, the quadtree (or quadtree) leaves can be further partitioned by the so-called multi-type tree, which involves Figure 4 The invention provides a binary or trifurcated splitting method using one of the four splitting modes shown in . These splitting types are vertical and horizontal binary splitting modes (denoted as SBTV and SBTH) and vertical and horizontal trifurcated splitting modes SPTTV and STTH.
[0015] In the case of a joint codec tree shared by luma and chroma components, the leaves of the codec tree of a CTU are CUs.
[0016] In contrast to HEVC, in VVC, in most cases, CU, PU and TU have equal sizes, which means that the codec unit is generally not partitioned into PUs or TUs except in some specific codec modes.
[0017] Figure 5 and Figure 6 An overview of video encoding / decoding methods, such as used in current video standard compression systems (such as HEVC or VVC) is provided.
[0018] Figure 5 A schematic block diagram showing the steps of a method 100 for encoding a video picture VP according to the prior art is shown.
[0019] In step 110, the video picture VP is partitioned into blocks of samples and partition information data is signaled into the bitstream. Each block comprises samples of one component of the video picture VP. Thus, the blocks comprise samples for each component defining the video picture VP.
[0020] For example, in HEVC, a picture is divided into codec tree units (CTUs). Each CTU can be further subdivided using a quadtree partition, where each leaf of the quadtree is represented as a codec unit (CU). The partition information data may then include data describing the CTU and the quadtree subdivision of each CTU.
[0021] Thus, each sample block (block for short) may be a CU (if the CU includes a single PU) or a PU of the CU.
[0022] Each block is encoded along the coding loop (also called "in-loop") using intra or inter prediction mode.
[0023] Intra prediction (step 120) uses intra prediction data. Intra prediction consists in predicting the current block with the help of a block of intra predictions based on coded, decoded and reconstructed samples, which are located around the current block, usually at the top and left of the current block. Intra prediction is performed in the spatial domain.
[0024] In inter prediction mode, motion estimation (step 130) and motion compensation (135) are performed. Motion estimation searches for candidate reference blocks that are good predictors of the current block in one or more reference video pictures used to predictively encode the current video picture. For example, a good predictor of the current block is a predictor that is similar to the current block. The output of the motion estimation step 130 is inter prediction data, which includes motion information associated with the current block (usually one or more motion vectors and one or more reference video picture indices) and other information for obtaining the same prediction block on the encoding / decoding side. Next, motion compensation (step 135) obtains the prediction block with the help of the (one or more) motion vectors and (one or more) reference video picture indices determined by the motion estimation step 130. Basically, the block belonging to the selected reference video picture and pointed to by the motion vector can be used as the prediction block of the current block. In addition, since the motion vectors are expressed as fractions of integer pixel positions (this is called sub-pixel MV precision representation), motion compensation generally involves spatial interpolation of some reconstructed samples of the reference video picture to calculate the prediction block.
[0025] The prediction information data is signaled into the bitstream. The prediction information may include prediction mode, intra / inter prediction data, and any other information used to obtain the same predicted CU at the decoding side.
[0026] The method 100 selects a prediction mode (intra-frame or inter-frame prediction mode) by optimizing the rate-distortion tradeoff, taking into account the encoding of the calculated prediction residual block (e.g., by subtracting the candidate prediction block from the current block) and the signaling of the prediction information data required to determine the candidate prediction block at the decoding side.
[0027] Typically, the best prediction mode is given as the prediction mode of the best codec mode p* for the current block given by:
[0028]
[0029] Where P is the set of all candidate codec modes for the current block, p represents the candidate codec mode in the set, and RD cost (p) is the rate-distortion cost of candidate codec mode p, usually expressed as:
[0030] RD cost(p) =D(p)+λ.R(p)
[0031] D(p) is the distortion between the current block and the reconstructed block obtained after encoding / decoding the current block with the candidate codec mode p, R(p) is the rate cost associated with encoding and decoding the current block with the codec mode p, and λ is a Lagrangian parameter representing the rate constraint for encoding and decoding the current block and is usually calculated based on the quantization parameter used to encode the current block.
[0032] The current block is usually coded from a prediction residual block PR. More precisely, the prediction residual block PR is calculated, for example, by subtracting the best prediction block from the current block. The prediction residual block PR is then transformed (step 140) using, for example, a DCT (discrete cosine transform) or DST (discrete sine transform) type transform or any other suitable transform, and the obtained transformed coefficient block is quantized (step 150).
[0033] In a variant, the method 100 may also skip the transform step 140 and directly apply quantization (step 150) to the prediction residual block PR according to the so-called transform-skip coding mode.
[0034] The block of quantized transform coefficients (or the block of quantized prediction residuals) is entropy encoded into a bitstream (step 160).
[0035] Next, as part of the encoding loop, the quantized transform coefficient block (or quantized residual block) is dequantized (step 170) and inverse transformed (180) (or not) to obtain a decoded prediction residual block. The decoded prediction residual block and the prediction block are then combined (usually summed) to provide a reconstructed block.
[0036] Other information data may also be entropy encoded in step 160 to encode the current block of the video picture VP.
[0037] A loop filter (step 190) may be applied to the reconstructed picture (including the reconstructed blocks) to reduce compression artifacts. The loop filter may be applied after all picture blocks have been reconstructed. For example, they include a deblocking filter, a sample adaptive offset (SAO), or an adaptive loop filter.
[0038] The reconstructed block or the filtered reconstructed block forms a reference picture, which can be stored in a decoded picture buffer (DPB) so that it can be used as a reference picture for encoding the next current block of the video picture VP or as a reference picture for encoding the next video picture to be encoded.
[0039] Figure 6 A schematic block diagram showing the steps of a method 200 for decoding a video picture VP according to the prior art is shown.
[0040] In step 210 , partition information data, prediction information data and quantized transform coefficient blocks (or quantized residual blocks) are obtained by entropy decoding a bit stream of encoded video picture data. For example, this bit stream has been generated according to method 100 .
[0041] Other information data may also be entropy decoded to decode the current block of the video picture VP from the bitstream.
[0042] In step 220, the reconstructed picture is divided into current blocks based on the partition information. Each current block is entropy decoded from the bitstream along a decoding loop (also referred to as "in-loop"). Each decoded current block is a quantized transform coefficient block, or a quantized prediction residual block.
[0043] In step 230, the current block is dequantized and possibly inversely transformed (step 240) to obtain a decoded prediction residual block.
[0044] On the other hand, the current block is predicted using the prediction information data. The predicted block is obtained by its intra-frame prediction (step 250) or its motion compensated temporal prediction (step 260). The prediction process performed on the decoding side is exactly the same as the prediction process on the encoding side.
[0045] Next, the decoded prediction residual block and the prediction block are combined (usually summed), which provides the reconstructed block.
[0046] In step 270, the filter in the loop may be applied to the reconstructed picture (including the reconstructed block), and the reconstructed block or the filtered reconstructed block forms a reference picture, which may be stored in a decoded picture buffer (DPB), as discussed above ( Figure 5 ).
[0047] exist Figure 5Step 130 / 135 or Figure 6 In step 260, the inter-frame prediction block is obtained from the inter-frame prediction data associated with the current block (CU or PU of CP) of the video picture. The inter-frame prediction data includes motion information that can be represented (encoded) according to the so-called AMVP mode (Adaptive Motion Vector Prediction) or the so-called merge mode.
[0048] In HEVC, in AMVP mode, the motion information used to define the inter-frame prediction block is represented by up to 2 reference video picture indexes associated with up to 2 reference video picture lists (usually denoted as L0 and L1), respectively. The reference video picture reference list L0 includes at least one reference video picture, and the reference video picture reference list L1 includes at least one reference video picture. Each reference video picture index is related to the temporal prediction of the current block. The motion information further includes up to 2 motion vectors, each motion vector is associated with a reference video picture index of one of the two reference video picture lists. Each motion vector is predictively encoded and signaled to the bitstream, that is, a motion vector difference MVd is obtained from the motion vector and an AMVP (Adaptive Motion Vector Predictor) candidate (selected from the AMVP candidate list (established on the encoding side and the decoding side), and MVd is signaled to the bitstream. The AMVP candidate index of the selected AMVP candidate in the AMVP candidate list is also signaled to the bitstream.
[0049] Figure 7 An illustrative example of establishing an AMVP candidate list for defining an inter-frame prediction block of a current block of a current video picture is shown.
[0050] The AMVP candidate list may include two spatial MVP (motion vector predictor) candidates, which are obtained from the current video picture. The first spatial MVP candidate is obtained by the motion information associated with the inter-frame prediction block (if any) located at the left adjacent position A0, A1 of the current block, and the second MVP candidate is obtained by the motion information associated with the inter-frame prediction block (if any) located at the top adjacent position B0, B1 and B2 of the current block. Then a redundancy check is performed between the obtained spatial MVP candidates, that is, the repeated MVP candidates are discarded. The AMVP candidate list may further include a temporal MVP candidate, which is obtained by the motion information associated with the block (if any) co-located at the spatial position H or at the spatial position C in the reference video picture. The temporal MVP candidate is scaled according to the temporal distance between the current video picture and the reference video picture. Finally, if the AMVP candidate list includes less than 2 MVP candidates, the AMVP candidate list is filled with zero motion vectors.
[0051] In HEVC, in merge mode, the motion information used to define the inter-frame prediction block is represented by a merge index that merges the MVP candidate list. Each merge index refers to the motion predictor information, which indicates which MVP is used to obtain the motion information. The motion information is represented by a unidirectional or bidirectional temporal prediction type, up to 2 reference video picture indices, and up to 2 motion vectors (each of which is associated with a reference video picture index of one of the two reference video picture lists (L0 or L1)).
[0052] Except for the merge index, no other information is signaled. This means that the motion vector of the current block is set equal to the motion vector of the MVP candidate indicated by the merge index. Therefore, in contrast to the merge mode, the MVd and the reference picture index are not signaled into the bitstream. Only the index of the selected merge candidate in the merge candidate list is also signaled into the bitstream.
[0053] Therefore, in contrast to AMVP mode, no MVd and reference pictures are signaled in merge mode. Only the merge index is signaled into the bitstream.
[0054] like Figure 7As shown, the merged MVP candidate list may include five spatial MVP candidates obtained from the current video picture. The first spatial MVP candidate is obtained by the motion information associated with the inter-frame prediction block located at the left adjacent position A1 (if any); the second spatial MVP candidate is obtained by the motion information associated with the inter-frame prediction block located at the upper adjacent position B1 (if any); the third spatial MVP candidate is obtained by the motion information associated with the inter-frame prediction block located at the upper right adjacent position B0 (if any); the fourth spatial MVP candidate is obtained by the motion information associated with the inter-frame prediction block located at the left bottom adjacent position A0 (if any); and the fifth spatial MVP candidate is obtained by the above motion information associated with the inter-frame prediction block located at the left adjacent position B2 (if any). Then a redundancy check is performed between the obtained spatial MVPs, that is, the repeated MVP candidates are discarded. The merged candidate list may further include a temporal MVP candidate (named TMVP candidate), which is obtained by the motion information associated with the block (if any) co-located at the position H or the central spatial position "C" in the reference video picture. Then a redundancy check is performed between the obtained spatial MVPs, that is, the repeated MVP candidates are discarded. Finally, when using the bidirectional temporal prediction type, if the merge candidate list includes less than 5 MVP candidates, the combined candidate is added to the merge candidate list. The combined candidate is obtained by: the motion information associated with one reference video picture list and related to an MVP candidate already in the merge candidate list, and the motion information associated with another reference video picture list and related to another MVP candidate already in the merge candidate list. Finally, if the merge candidate list is still not full (5 merge candidates), the merge candidate list is filled with zero motion vectors.
[0055] In ECM ("Algorithm description of Enhanced Compression Model 4 (ECM 4)", M.Coban, F.Le Léannec, K.Naser,J. The Joint Video Experts Group (JVET) of ITU-T SG 16WP 3 and ISO / IEC JTC 1 / SC 29, 23rd Meeting, by teleconference, July 7-16, 2021, JVET-Y202-v2 document, https: / / jvet-experts.org / doc_end_user / documents / 25_Teleconference / wg11 / JVET-Y2025-v2.zip) states that the template matching (TM) method can be used to determine some MVP candidates in AMVP mode and merge mode. The TM method is a decoder-side motion vector refinement method. As Figure 8As shown in FIG. 1 , it refines the motion vector of a block by matching a so-called L-shaped template located above and to the left of the current block with a template in a search block of a reference picture. A better MV is searched around the initial MV of the current block (e.g., within a [-8, +8]-pixel search range). The refined MV is obtained by minimizing the so-called template matching cost (TM cost) between the template around the current block and the candidate templates in the reference video picture. The MVP candidate with the minimum template matching cost is selected and further refined.
[0056] Encoding and decoding motion information according to VVC provides a richer representation of motion information than in HEVC.
[0057] In VVC, motion representation can be provided according to AMVP mode or merge mode.
[0058] In VVC, in AMVP mode, motion information used to define inter-frame prediction blocks is represented as in HEVC AMVP mode. As in HEVC, the AMVP candidate list may include spatial MVP candidates and temporal MVP candidates (if present). The AMVP candidate list may further include four additional HMVP (history-based motion vector prediction) candidates (if present). Finally, if the AMVP candidate list includes less than 2 MVP candidates, the AMVP candidate list is filled with zero motion vectors.
[0059] The HMVP candidate is obtained by the previously encoded and decoded MVP associated with the adjacent or non-adjacent blocks relative to the current block. To this end, the table of HMVP candidates is maintained and dynamically updated at both the encoder and decoder sides as a first-in, first-out (FIFO) buffer for MVP. There are up to five HMVP candidates in the table. After encoding and decoding a block, the table is updated by appending the associated motion information to the end of the table as a new HMVP candidate. FIFO rules are applied to manage the table, in which, in addition to the basic FIFO mechanism, redundant candidates in the HMVP table are removed first instead of the first candidate. The table is reset at each CTU row to enable parallel processing.
[0060] AMVP mode uses AMVR (Adaptive Motion Vector Resolution). The AMVR tool allows MVd to be signaled with quarter-pixel, half-pixel, integer-pixel, or 4-pixel luminance sampling resolution. This also allows bit savings in the encoding and decoding of the MVd information. In AMVR, the motion vector resolution is selected at the block level.
[0061] Finally, the internal motion vector representation is implemented with 1 / 16 luma sample accuracy instead of 1 / 4 luma sample accuracy in HEVC.
[0062] In VVC, in merge mode, motion information for defining an inter-prediction block is represented as in HEVC merge mode.
[0063] The merge candidate list is different from the merge candidate list used in HEVC.
[0064] In VVC, a merge candidate list may be established for MMVD (Merge Mode with MV Difference) mode or CIIP (Combined Intra / Inter Prediction) mode.
[0065] The MMVD mode allows encoding and decoding of the restricted motion vector difference (MVd) at the top of the selected merge candidate to represent the motion information associated with the inter-predicted block. Fig. 9 As shown, the MMVD codec is limited to 4 vector directions and 8 amplitude values, from 1 / 4 luma samples to 32 luma samples. The MMVD mode provides an intermediate level of precision, thus providing an intermediate trade-off between rate cost and MV (motion vector) precision to signal motion information. The MMVD offset can also be signaled into the bitstream. The motion vector is then obtained by adding the MMVD offset to the MV predictor.
[0066] CIIP includes combining an inter prediction signal with an intra prediction signal to predict the current block of the video picture. The inter prediction signal in CIIP mode is obtained using the same inter prediction process as applied to the merge mode; and the intra prediction signal is obtained following the conventional intra prediction process with the planar mode. The planar prediction mode includes predicting the block by a spatial interpolation process between the reconstructed adjacent samples of the prediction blocks located at the top and left of the block. Then, the intra and inter prediction signals are mixed (combined) using weighted averaging, where the weight values are calculated according to the coding mode of the top neighboring block and the left neighboring block:
[0067] PCIIP=(Wmerge×Pmerge+Wintra×Pintra+2)>>2
[0068] Weight W merge and W intra The sum of is equal to 4, and these weights are constant throughout the current block.
[0069] In summary, in VVC, the merge candidate list can include spatial MVP candidates similar to HEVC, except that the two first candidates are swapped: candidate B1 is considered before candidate A1 during the construction of the merge candidate list. As in the VVC AMVP mode, the merge candidate list can further include TMVPs similar to HEVC and HMVP candidates. Several HMVP candidates are inserted into the merge candidate list so that the merge candidate list reaches the maximum allowed number of MVP candidates (minus 1). The merge candidate list can also include up to 1 paired average candidate, calculated as follows: consider the two first candidates present in the merge candidate list and average their motion vectors. This averaging is calculated separately for each reference video picture list L0 and L1. Therefore, if both MVPs are bidirectional, the motion vectors associated with the two lists L0 and L1 are averaged. If there is only one motion vector in the reference video picture list, the paired candidate is formed as is. Finally, if the merge candidate list does not reach the maximum allowed number of MVP candidates, the merge candidate list is filled with zero motion vectors.
[0070] Intra-block copy (IBC) prediction mode is used in HEVC and VVC for screen content encoding and decoding. It is well known that the IBC prediction mode significantly improves the encoding and decoding efficiency of screen content materials. Since the IBC prediction mode is implemented as a block-level encoding and decoding mode, block matching (BM) is performed at the encoder to find the best block vector (or motion vector) for each block to be predicted. The block vector indicates the displacement from the block to be predicted of the video picture to the reference block (i.e., the prediction block of the reconstructed block of the video picture, which has been reconstructed (decoded) inside the video picture). The block vector of the IBC prediction block of the luminance sampling has integer precision. The block vector of the IBC prediction block of the chrominance sampling is also rounded to integer precision. When combined with AMVR, the IBC prediction mode can be cut between 1 pixel and 4 pixel motion vector precision. The IBC prediction mode is regarded as a third prediction mode outside the intra or inter prediction mode.
[0071] At the CU level, the IBC prediction mode is signaled as prediction information with a flag indicating the use of IBC-AMVP mode or IBC skip / merge mode.
[0072] In IBC-skip / merge mode, the block vector used to define the IBC prediction block is represented by a merge index, which indicates an element in a list of block vector prediction candidates (merge candidate list). The merge candidate list can include spatial candidates, HMVP candidates, and paired block vector candidates.
[0073] The HMVP (history-based motion vector prediction) candidates are obtained similarly to the case of the classic inter-frame merge codec. The HMVP involves a buffer of block vector (motion vector) candidates, which is fed as long as a block of a video picture is being predicted by using the IBC prediction mode. The HMVP buffer then includes a buffer of block vector candidates and is used to provide block vector candidates to predict the current block of the video picture by using the IBC prediction mode.
[0074] Paired block vector candidates can be generated by averaging two IBC block vector candidates (i.e., block vectors obtained by the IBC prediction mode). This means averaging the two first block vector candidates in the merge candidate list being constructed to form a so-called paired block vector candidate. This paired block vector candidate is added to the merge candidate list after HMVP.
[0075] For HMVP, the block vector is inserted into a history buffer for future reference.
[0076] In IBC-AMVP mode, two block vectors are determined, one from the left neighbor of the block to be predicted and one from the upper neighbor of the block to be predicted. When either neighbor is not available, a default block vector is considered. A flag is signaled as prediction information to indicate which block vector is used to predict the block vector of the current block. In fact, since a maximum of 2 block vector candidates are considered in IBC-AMVP mode, the flag is sufficient to identify the block vector candidate for encoding and decoding the block vector information. The block vector difference is encoded and decoded in the same way as the motion vector difference of the inter-frame predicted block.
[0077] The IBC prediction mode cannot be used in conjunction with VVC's inter-frame prediction tools such as CIIP and MMVD.
[0078] In VVC, the IBC prediction mode shares the same process with the regular MV merging including paired merge candidates and history-based motion predictor, but TMVP and zero vectors are not allowed since they are invalid for the IBC prediction mode.
[0079] The intra template matching prediction (IMTP) mode is a special intra prediction mode of the current block of a video picture, which copies the best prediction block from a reconstructed block of the video picture, whose L-shaped template matches the L-shaped template of the current block of the video picture to be predicted. Basically, for a predefined search range, the encoder searches for the L-shaped template of the reconstructed block of the video picture that is most similar to the L-shaped template of the current block and uses the corresponding block as the best prediction block. The encoder then signals the use of the ITTP mode as prediction information and performs the same prediction operation on the decoding side.
[0080] like Fig.10As shown, in the ECM, the search range includes four spatial blocks R1, R2, R3 and R4. Block R1 is the current CTU including the current block B to be predicted of the video picture; block R2 is the top CTU on the left; R3 is the upper CTU, and R4 is the left CTU. A cost function is used to evaluate the match between the L-shaped template of the current block B and the L-shaped template of the prediction block candidate. The best prediction block corresponds to the minimum value of the cost function. For example, the cost function calculated between two L-shaped templates is the sum of absolute differences (SAD) between the samples of the L (shaped) template.
[0081] The width SearchRange_w and height SearchRange_h of the blocks R1-R3 are set to be proportional to the width BlkW and height BlkH of the current block to have a fixed number of SAD comparisons (per pixel). That is:
[0082] SearchRange_w=a*BlkW
[0083] SearchRange_h=a*BlkH
[0084] Where 'a' is a constant integer value that controls the gain / complexity tradeoff. In practice, 'a' is equal to 5.
[0085] ITMP mode is enabled for blocks whose size is less than or equal to a maximum size of 64 in width and height. This maximum size is configurable.
[0086] The ITMP mode is signaled as prediction information at CU level through a dedicated flag for the current block.
[0087] The technical problem solved by the present invention is to improve the compression performance of ECM and VVC, especially when both IBC and ITMP prediction modes are enabled in the same video picture.
[0088] In the existing prior art, the ITMP or IBC prediction mode can be used to predict the prediction block of a slice of a video picture. However, they are used separately and there is no interaction between the two prediction modes.
[0089] At least one exemplary embodiment of the present application is designed in consideration of the above circumstances. Summary of the invention
[0090] The following section briefly summarizes at least one exemplary embodiment to provide a basic understanding of some aspects of the present application. This overview is not an exhaustive overview of the exemplary embodiments. Its purpose is not to identify the key or core elements of the exemplary embodiments. The following overview only presents some aspects of at least one exemplary embodiment in a simplified form as a preface to the more detailed description provided elsewhere in this document.
[0091] According to a first aspect of the present application, a method for predicting a block of a video picture is provided, wherein a first prediction block is obtained by an intra-frame template matching prediction mode, and the intra-frame template matching prediction mode determines the first prediction block by minimizing a cost function calculated between sampling values of an L-shaped template of the block of the video picture and sampling values of an L-shaped template of a reconstructed block of the video picture, wherein the method further includes determining a first block vector as a displacement between the first prediction block and the block of the video picture, and the first block vector identifies the first prediction block as a prediction block candidate for the block of the video picture.
[0092] In an exemplary embodiment, the first block vector is stored in a block based motion information buffer.
[0093] In one exemplary embodiment, the first block vectors are stored on a sub-block basis.
[0094] In an exemplary embodiment, the method further comprises adding the first block vector to a list of block vector prediction candidates associated with the video picture.
[0095] In an exemplary embodiment, a block of a video picture is predicted by a second prediction block, the second prediction block being obtained by an intra block copy prediction mode, the intra block copy prediction mode determining the second block vector as a displacement between the block of the video picture and a prediction block of a reconstructed block of the video picture by block matching, wherein the method further comprises predicting the second block vector by a block vector of a list of block vector prediction candidates.
[0096] In an exemplary embodiment, the method further includes storing the first block vector in a history-based motion vector prediction table.
[0097] In an exemplary embodiment, the history-based motion vector prediction table further stores at least one third block vector associated with at least one prediction block of at least one reconstructed block of the video picture, each of the at least one third block vector being obtained by an intra-block copy prediction mode, which determines the third block vector as a displacement between the prediction block of the reconstructed block of the video picture and a reference block of the video picture by block matching.
[0098] In an exemplary embodiment, a block of a video picture is predicted by a second prediction block, wherein the second prediction block is obtained by an intra block copy prediction mode, wherein the intra block copy prediction mode determines a second block vector as a displacement between the block of the video picture and a prediction block of a reconstructed block of the video picture by block matching, wherein the method further comprises predicting the second block vector by a block vector based on a history motion vector prediction table.
[0099] According to a second aspect of the present application, there is provided a method for encoding a block of a picture based on a prediction block obtained by the method according to the first aspect.
[0100] According to a third aspect of the present application, there is provided a method for decoding a block of a video picture based on a prediction block obtained by the method according to the first aspect.
[0101] According to a fourth aspect of the present application, there is provided a bit stream formatted to include encoded video picture data obtained by the method according to the first aspect.
[0102] According to a fifth aspect of the present application, there is provided an apparatus comprising means for executing one of the methods according to the first, second and / or third aspects.
[0103] According to a sixth aspect of the present application, there is provided a computer program product comprising instructions, which, when executed by one or more processors, causes the one or more processors to execute the method according to the first, second and / or third aspect.
[0104] According to a seventh aspect of the present application, there is provided a non-transitory storage medium carrying instructions of a program code for executing a method according to the first, second and / or third aspect.
[0105] The specific nature of at least one exemplary embodiment and other objects, advantages, features and uses of the at least one exemplary embodiment will become apparent from the following description of the examples taken in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0106] Reference will now be made, by way of example, to the accompanying drawings which show exemplary embodiments of the present application, in which:
[0107] Figure 1 An example of a codec tree unit according to HEVC is shown;
[0108] Figure 2 An example of partitioning a codec unit into prediction units according to HEVC is shown;
[0109] Figure 3 An example of CTU partitioning according to VVC is shown;
[0110] Figure 4 An example of splitting modes supported in multi-type tree partitioning according to VVC is shown;
[0111] Figure 5 A schematic block diagram showing the steps of a method 100 for encoding a video picture VP according to the prior art;
[0112] Figure 6A schematic block diagram showing the steps of a method 200 for decoding a video picture VP according to the prior art;
[0113] Figure 7 An illustrative example of establishing an AMVP candidate list for defining an inter-frame prediction block of a current block of a current video picture is shown;
[0114] Figure 8 An example of a template matching method according to the prior art is shown;
[0115] Fig. 9 An example of limiting motion vector differences according to the prior art is shown;
[0116] Fig.10 Schematically illustrates an example of spatial blocks used in ITMP prediction mode according to the prior art;
[0117] Fig.11 Schematically shows a block diagram of a method 300 for predicting a block of a video picture according to an exemplary embodiment;
[0118] Fig.12 Schematically illustrates an example of a first block vector connecting two blocks according to an exemplary embodiment;
[0119] Fig.13 schematically illustrates an example of a sub-block of a neighboring block according to an exemplary embodiment;
[0120] Fig.14 Schematically shows a block diagram of a method 400 for constructing a list of block vector prediction candidates for predicting a second block vector BV2 according to an exemplary embodiment;
[0121] Fig.15 A schematic block diagram of an example of a system in which various aspects and exemplary embodiments are implemented is illustrated.
[0122] Similar or identical elements are referenced with the same reference numerals. DETAILED DESCRIPTION
[0123] At least one of the exemplary embodiments will be described more fully below with reference to the accompanying drawings, wherein an example of at least one of the exemplary embodiments is depicted. However, the exemplary embodiments may be implemented in a variety of alternative forms and should not be construed as being limited to the examples set forth herein. Thus, it should be understood that the present invention is not intended to limit the exemplary embodiments to the specific forms disclosed. On the contrary, the present application is intended to cover all modifications, equivalents, and alternatives that fall within the spirit and scope of the present application.
[0124] At least one of the aspects generally relates to video picture encoding and decoding, another aspect generally relates to transmitting provided or encoded bitstreams, and another aspect relates to receiving / accessing decoded bitstreams.
[0125] At least one of the exemplary embodiments is described with respect to encoding / decoding one video picture, but extends to encoding / decoding multiple video pictures (sequences of pictures) in that each video picture is encoded / decoded sequentially as described below.
[0126] In addition, at least one exemplary embodiment is not limited to the current version of VVC. At least one exemplary embodiment can be applied to VVC and recommended existing or future developments and extensions. Unless otherwise specified or technically excluded, the various aspects described in this application can be used alone or in combination.
[0127] A pixel corresponds to the smallest display unit on the screen, which can be composed of one or more light sources (1 for a monochrome screen and 3 or more for a color screen).
[0128] A video picture, also called a frame or picture frame, comprises at least one component (also called a picture component or channel) determined by a specific picture / video format, which specifies all information related to pixel values and all information that can be used by a display unit and / or any other device to display and / or decode video picture data related to the video picture.
[0129] A video picture comprises at least one component which is usually represented in the form of an array of samples.
[0130] A monochrome video picture includes a single component, while a color video picture may include three components.
[0131] For example, a color video picture may include one luminance (or brightness) component and two chrominance components when the picture / video format is the well-known (Y,Cb,Cr) format, or may include three color components (one for red, one for green, and one for blue) when the picture / video format is the well-known (R,G,B) format.
[0132] Each component of a video picture may include a number of samples relative to the number of pixels of the screen on which the video picture is to be displayed. In a variant, the number of samples included in a component may be a multiple (or fraction) of the number of samples included in another component of the same video picture.
[0133] For example, in case the video format includes one luma component and two chroma components (such as (Y, Cb, Cr) format), the chroma components may contain half the number of samples in width and / or height relative to the luma components, depending on the color format considered.
[0134] A sample is the smallest visual information unit of a component that makes up a video picture. The sample value can be, for example, a brightness or chrominance value, or a color value in (R, G, B) format.
[0135] A pixel value is the value of a pixel of the screen. For a monochrome video screen, a pixel value may be represented by one sample, while for a color video screen, a pixel value may be represented by multiple co-located samples. The co-located samples associated with a pixel refer to samples corresponding to the position of the pixel in the screen.
[0136] A video picture is usually viewed as a set of pixel values, where each pixel is represented by at least one sample.
[0137] A block of a video picture is a group of samples of a component of a video picture. When the picture / video format is the well-known (Y, Cb, Cr) format, at least one block of luma samples or at least one block of chroma samples may be considered, or when the picture / video format is the well-known (R, G, B) format, at least one block of color samples may be considered.
[0138] At least one exemplary embodiment is not limited to a specific picture / video format.
[0139] In general, as discussed above with respect to the prior art, when the ITMP mode is used to predict a current block (codec unit or prediction unit) of a video picture, an L-shaped template-based search is performed to search for the best prediction block for the current block among the coded, decoded and reconstructed blocks of the video picture.
[0140] The present invention also determines a first block vector between the current block and the best predicted block.
[0141] Compared with the prior art, the present invention converts the difference in spatial position between the best prediction block and the current block into a block vector connecting the two blocks, that is, the block vector represents the displacement between the current block and the best prediction block.
[0142] The present invention provides interaction between ITMP and IBC prediction modes (IBC skip / merge mode or IBC-AMVP mode), because block vectors of neighboring blocks to be predicted of the current block that have been predicted by using IBC prediction or ITMP mode can be used to predict the block vector determined for the current block by using the IBC prediction mode.
[0143] Then, the block vectors of the neighboring blocks can be reused and spatially propagated to the subsequent blocks to be predicted in the video picture. In this way, the IBC prediction mode may then benefit from the block vector information emitted by the ITMP mode.
[0144] This results in a more efficient signaling of the block vector information in case of the IBC prediction mode, ie it reduces the bit rate cost for signaling the block vector information in the IBC predicted blocks.
[0145] As a result, the overall encoding and decoding efficiency of the video picture is improved.
[0146] Fig.11 A block diagram of a method 300 of predicting a block of a video picture according to an exemplary embodiment is schematically shown.
[0147] Method 300 provides a prediction block for a block of a video picture. The prediction block can be used to select a prediction mode of method 100 or used as a prediction mode for the prediction process of method 200.
[0148] Prediction information associated with method 300 is signaled, ie, written to a bitstream when method 300 is used in method 100 , and parsed from a bitstream when method 300 is used in method 200 .
[0149] In step 301, as described in the introduction, a first prediction block PB1 is obtained by the ITMP mode. Basically, the ITMP mode determines the first prediction block PB1 by minimizing a cost function calculated between the sample values of an L-shaped template of a block of a video picture (to be predicted) and the sample values of an L-shaped template of a reconstructed block of the video picture.
[0150] In step 302, if Fig.12 As illustrated, a first block vector BV1 is determined as a displacement between a first prediction block PB1 and a block B of a video picture, said first block vector BV1 identifying the first prediction block as a prediction block candidate for the block of the video picture.
[0151] As mentioned in the introduction, the best prediction block PB1 obtained by the ITMP mode is used to predict Fig.12 Basically, the first prediction block PB1 is searched by minimizing the cost function calculated between the sample values of the L-shaped template of the block B and the sample values of the L-shaped template of the reconstructed block of the video picture. The block vector BV1 is obtained as the displacement between the block B and the best prediction block PB1 in the video picture:
[0152] BV1=(px-x,py-y)
[0153] Where (px,py) is the spatial position of the first prediction block PB1, and (x,y) is the spatial position of block B.
[0154] In an exemplary embodiment, the first block vector BV1 may be stored in a block-based motion information buffer.
[0155] In a variant, the first block vector BV1 is stored based on N×M sub-blocks.
[0156] For example, N=M=4.
[0157] For example, Fig.13 The first block BV1 is shown to be stored on a sub-block associated with a neighboring block PBC of block PB2. In this example, a neighboring block having sub-blocks A0, A1, B0, B1 and B2 can be predicted by a prediction block determined by an ITMP or IBC prediction mode, and block vectors associated with these IBC or ITMP-based prediction blocks are stored in association with these sub-blocks.
[0158] In an exemplary embodiment, in step 303, the first block vector BV1 is added to a list L of block vector prediction candidates associated with the video picture.
[0159] Therefore, the list L of block vector prediction candidates may include block vectors associated with prediction block candidates resulting from the IBC skip / merge mode or the IBC-AMBP mode or the ITMP mode.
[0160] In a variant of the exemplary embodiment, in step 304, a block of the video picture is predicted by a second prediction block PB2. As described in the introduction, the second prediction block PB2 is obtained by the IBC prediction mode. Basically, the IBC prediction mode determines the second block vector BV2 as a displacement between the block of the video picture and a reference block of a reconstructed block of the video picture by block matching. In step 305, the second block vector BV2 is predicted by a block vector BV3 of a list L of block vector prediction candidates.
[0161] The difference between the second block vector BV2 and the block vector BV3 is signaled as prediction information.
[0162] According to this exemplary embodiment and variants, the second block vector BV2 may be predicted by the block vector BV3 associated with the IBC or ITMP prediction block.
[0163] Fig.14 A block diagram of a method 400 of constructing a list L of block vector prediction candidates for predicting a second block vector BV2 according to an exemplary embodiment is schematically shown.
[0164] In short, the method 400 comprises a loop over several spatial positions around the second prediction block PB2, wherein at each iteration it is evaluated whether a certain block vector candidate BV3 is available as a potential candidate for predicting the second block vector BV2.
[0165] In step 401 , the spatial position of the prediction block candidate PB3 around the second prediction block PB2 is considered.
[0166] In step 402 , the method 400 checks whether the prediction block candidate PB3 is associated with a block vector determined by the IBC or ITMP prediction mode.
[0167] If not, the spatial position of the new prediction block candidate PB3 around the second prediction block PB2 is considered.
[0168] If yes, step 402 is followed by steps 403-405.
[0169] In step 403, a block vector candidate BV3 associated with the considered prediction block PB3 is obtained from the block based motion information buffer.
[0170] In step 404 , the method 400 checks whether the block vector candidate BV3 is valid as an IBC block vector of the second block vector BV2 , ie, whether spatial propagation of the block vector BV3 is allowed to predict the second block vector BV2 .
[0171] When the block pointed to by the block vector BV3 is inside the reconstructed block of the video picture and conforms to a certain predefined range of allowed values of the block vector components, the block vector BV3 is considered to be a valid IBC block vector of the second block vector BV2.
[0172] If not, step 404 is followed by step 406 .
[0173] If yes, in step 405, the block vector BV3 is added to the list L of block vector prediction candidates.
[0174] In step 406 , the method 400 checks whether all prediction block candidates PB3 around the second prediction block PB2 have been considered.
[0175] If yes, method 400 ends.
[0176] If not, step 406 is followed by step 407 , in which the spatial position of the new prediction block candidate PB3 around the second prediction block PB2 is considered. Step 406 is followed by step 402 .
[0177] In an exemplary embodiment, in step 306 , the first block vector BV1 is stored in a history-based motion vector prediction table HMVP.
[0178] In a variant, the table HMVP also stores at least one third block vector BV3 associated with at least one prediction block of at least one reconstructed block of the video picture, each of said at least one third block vector BV3 resulting from an IBC prediction mode.
[0179] The HMVP table is enriched compared to the prior art, and better block vector predictor candidates are obtained to predict subsequent IBC prediction blocks using the HMVP block vector propagation mechanism of ECM.
[0180] In a variant, when predicting a block of a video picture by means of a second prediction block PB2, in step 307 the second block vector PB2 is predicted by means of a block vector BV4 of the table HMVP.
[0181] exist Fig.14 In a variation of method 400 , a block vector prediction candidate stored in the HMVP table may be added to the list L of block vector prediction candidates constructed by method 400 .
[0182] Fig.15 A schematic block diagram illustrating an example of a system 600 in which various aspects and exemplary embodiments are implemented is shown.
[0183] The system 600 may be embedded as one or more devices, including various components described below. In various exemplary embodiments, the system 600 may be configured to implement one or more aspects described in this application.
[0184] Examples of equipment that may constitute all or part of system 600 include personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected household appliances, connected vehicles and their associated processing systems, head-mounted display devices (HMD, perspective glasses), projectors (projectors), "caves" (systems including multiple displays), servers, video encoders, video decoders, post-processors for processing outputs from video decoders, pre-processors for providing inputs to video encoders, web servers, video servers (e.g., broadcast servers, video-on-demand servers or web servers), static or video cameras, encoding or decoding chips or any other communication devices. The elements of system 600 may be implemented individually or in combination in a single integrated circuit (IC), multiple ICs and / or discrete components. For example, in at least one exemplary embodiment, the processing and encoder / decoder elements of system 600 may be distributed across multiple ICs and / or discrete components. In various exemplary embodiments, system 600 may be connected to other similar systems or other electronic devices in a communication manner via, for example, a communication bus or by dedicated input and / or output ports.
[0185] The system 600 may include at least one processor 610 configured to execute instructions loaded therein for implementing, for example, various aspects described in the present application. The processor 610 may include embedded memory, input-output interfaces, and various other circuits known in the art. The system 600 may include at least one memory 620 (e.g., a volatile memory device and / or a non-volatile memory device). The system 600 may include a storage device 640, which may include a non-volatile memory and / or a volatile memory, including but not limited to an electrically erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a programmable read-only memory (PROM), a random access memory (RAM), a dynamic random access memory (DRAM), a static random access memory (SRAM), a flash memory, a disk drive, and / or an optical drive. As a non-limiting example, the storage device 640 may include an internal storage device, an attached storage device, and / or a network accessible storage device.
[0186] The system 600 may include an encoder / decoder module 630, which is configured to, for example, process data to provide encoded / decoded video picture data, and the encoder / decoder module 630 may include its own processor and memory. The encoder / decoder module 630 may represent a module (one or more) that may be included in a device to perform encoding and / or decoding functions. As known, a device may include one or both of the encoding and decoding modules. In addition, the encoder / decoder module 630 may be implemented as a separate element of the system 600, or may be incorporated into the processor 610 as a combination of hardware and software known to those skilled in the art.
[0187] Program code to be loaded into the processor 610 or the encoder / decoder 630 to perform various aspects described in the present application may be stored in the storage device 640 and subsequently loaded into the memory 620 to be executed by the processor 610. According to various exemplary embodiments, during the execution of the processes described in the present application, one or more of the processor 610, the memory 620, the storage device 640, and the encoder / decoder module 630 may store one or more of various items. Such stored items may include, but are not limited to, video picture data, information data for encoding / decoding video picture data, bit streams, matrices, variables, and intermediate or final results of equations, formulas, operations, and operation logic processing.
[0188] In several exemplary embodiments, memory internal to the processor 610 and / or encoder / decoder module 630 may be used to store instructions and provide working memory for processes that may be performed during encoding or decoding.
[0189] However, in other exemplary embodiments, memory external to the processing device (e.g., the processing device may be the processor 610 or the encoder / decoder module 630) is used for one or more of these functions. The external memory may be a memory 620 and / or a storage device 640, such as a dynamic volatile memory and / or a non-volatile flash memory. In several exemplary embodiments, the external non-volatile flash memory is used to store the operating system of the television. In at least one exemplary embodiment, a fast external dynamic volatile memory such as RAM may be used as working memory for video encoding and decoding operations, such as for MPEG-2 Part 2 (also known as ITU-T Recommendation H.262 and ISO / IEC 13818-2, also known as MPEG-2 Video), AVC, HEVC, EVC, VVC, AV1, etc.
[0190] As indicated in block 690, input to the elements of system 600 may be provided through various input devices. Such input devices include, but are not limited to, (i) an RF section that may receive an RF signal transmitted over the air, for example, by a broadcast device, (ii) a composite input terminal, (iii) a USB input terminal, (iv) an HDMI input terminal, (v) a bus such as a CAN (Controller Area Network), CAN FD (Controller Area Network Flexible Data Rate), FlexRay (ISO 17458), or Ethernet (ISO / IEC 802-3) bus when the present invention is implemented in the automotive field.
[0191] In various exemplary embodiments, the input device of block 690 has associated corresponding input processing elements, as known in the art. For example, the RF portion may be associated with elements necessary for: (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a frequency band), (ii) down-converting the selected signal, (iii) band-limiting the frequency band again to a narrower frequency band to select a signal band that may be referred to as a channel in some exemplary embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired packet stream. The RF portion of various exemplary embodiments may include one or more elements that perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF portion may include a tuner that performs various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a near-baseband frequency) or a baseband.
[0192] In one set-top box embodiment, the RF section and its associated input processing elements can receive RF signals transmitted over a wired (e.g., cable) medium. The RF section can then perform frequency selection by filtering, down-converting, and filtering again to a desired frequency band.
[0193] Various exemplary embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions.
[0194] Adding components may include inserting components between existing components, such as, for example, inserting an amplifier and an analog-to-digital converter.In various exemplary embodiments, the RF portion may include an antenna.
[0195] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 600 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented, for example, in a separate input processing IC or in the processor 610 when necessary. Similarly, various aspects of USB or HDMI interface processing may be implemented in a separate interface IC or in the processor 610 when necessary. The demodulated, error-corrected, and demultiplexed streams may be provided to various processing elements, including, for example, the processor 610 and the encoder / decoder 630, which operate in conjunction with the memory and storage elements to process the data streams for presentation on the output device when necessary.
[0196] The various elements of system 600 may be provided within an integrated housing. Within the integrated housing, the various elements may be interconnected and data transferred between them using a suitable connection arrangement 690, such as an internal bus (including an I2C bus), wiring, and printed circuit boards known in the art.
[0197] The system 600 may include a communication interface 650 that enables communication with other devices via a communication channel 651. The communication interface 650 may include, but is not limited to, a transceiver configured to send and receive data over the communication channel 651. The communication interface 650 may include, but is not limited to, a modem or a network card, and the communication channel 651 may be implemented, for example, within a wired and / or wireless medium.
[0198] In various exemplary embodiments, a Wi-Fi network such as IEEE 802.11 may be used to stream data to the system 600. The Wi-Fi signals of these exemplary embodiments may be received via a communication channel 651 suitable for Wi-Fi communications and a communication interface 650. The communication channel 651 of these exemplary embodiments may typically connect to an access point or router that provides access to external networks including the Internet to allow streaming applications and other over-the-top communications.
[0199] Other exemplary embodiments may provide streamed data to system 600 using a set top box that delivers the data through an HDMI connection to input block 690 .
[0200] Still other exemplary embodiments may provide streaming data to the system 600 using an RF connection to input block 690 .
[0201] Streamed data may be used as a means of signaling information used by the system 600. The signaled information may include the bitstream B and / or information such as the number of pixels of a video picture and / or any encoding / decoding setting parameters.
[0202] It should be appreciated that signaling can be implemented in a variety of ways. For example, in various exemplary embodiments, one or more syntax elements, flags, etc. may be used to signal information to a corresponding decoder.
[0203] The system 600 may provide output signals to various output devices, including a display 661, speakers 671, and other peripherals 681. In various examples of the exemplary embodiments, the other peripherals 681 may include one or more of a stand-alone DVR, a disk player, a stereo system, a lighting system, and other devices that provide functionality based on the output of the system 600.
[0204] In various exemplary embodiments, control signals may be communicated between the system 600 and the display 661, speakers 671, or other peripheral devices 681 using signaling such as AV.Link (Audio / Video Link), CEC (Consumer Electronics Control), or other communication protocols that enable device-to-device control with or without user intervention.
[0205] Output devices may be communicatively coupled to system 600 through respective interfaces 660 , 670 , and 680 via dedicated connections.
[0206] Alternatively, the output device may be connected to the system 600 via the communication interface 650 using the communication channel 651. The display 661 and the speaker 671 may be integrated with the other components of the system 600 in a single unit in an electronic device such as, for example, a television.
[0207] In various exemplary embodiments, the display interface 660 may include a display driver, such as, for example, a timing controller (T Con) chip.
[0208] For example, if the RF portion of input 690 is part of a separate set-top box, then display 661 and speaker 671 may optionally be separate from one or more of the other components. In various exemplary embodiments where display 661 and speaker 671 may be external components, output signals may be provided via dedicated output connections including, for example, an HDMI port, a USB port, or a COMP output.
[0209] exist Figure 1-15 In the present invention, various methods are described herein, and each method includes one or more steps or actions to implement the described method. Unless a specific order of steps or actions is required for the correct operation of the method, the order and / or use of specific steps and / or actions can be modified or combined.
[0210] Some examples are described about block diagrams and / or operational flow charts. Each square block represents a portion of a circuit element, module or code, which includes one or more executable instructions for implementing (one or more) specified logical functions. It should also be noted that, in other embodiments, the (one or more) functions marked in the square block may not occur in the order indicated. For example, depending on the functions involved, two square blocks shown in succession can actually be executed substantially concurrently, or sometimes these square blocks can be executed in reverse order.
[0211] The embodiments and aspects described herein may be implemented in, for example, a method or process, an apparatus, a computer program, a data stream, a bit stream, or a signal. Even if only discussed in the context of a single form of embodiment (e.g., discussed only as a method), the embodiments of the features discussed may also be implemented in other forms (e.g., an apparatus or a computer program).
[0212] The method may be implemented in, for example, a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. The processor also includes a communication device.
[0213] In addition, the method can be implemented by instructions executed by a processor, and such instructions (and / or data values generated by the implementation) can be stored on a computer-readable storage medium. The computer-readable storage medium can take the form of a computer-readable program product implemented in one or more computer-readable media and having a computer-readable program code implemented thereon that can be executed by a computer. Considering the inherent ability to store information therein and the inherent ability to provide information retrieval therefrom, the computer-readable storage medium used herein can be considered as a non-transitory storage medium. The computer-readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, device or equipment, or any suitable combination of the foregoing. It should be appreciated that although more specific examples of computer-readable storage media to which the exemplary embodiment can be applied are provided below, as those of ordinary skill in the art will readily appreciate, it is merely illustrative and not exhaustive: portable computer floppy disk; hard disk; read-only memory (ROM); erasable programmable read-only memory (EPROM or flash memory); portable compact disk read-only memory (CD-ROM); optical storage device; magnetic storage device; or any suitable combination of the foregoing.
[0214] The instructions may form an application program tangibly embodied on a processor-readable medium.
[0215] For example, instructions may be in hardware, firmware, software, or a combination. For example, instructions may be found in an operating system, a separate application, or a combination of both. Thus, a processor may be characterized as, for example, a device configured to perform a process and a device including a processor-readable medium (such as a storage device) having instructions for performing the process. Additionally, in addition to or in lieu of instructions, a processor-readable medium may store data values generated by an embodiment.
[0216] Device can be realized in suitable hardware, software and firmware for example.The example of this device comprises personal computer, laptop computer, smart phone, tablet computer, digital multimedia set-top box, digital television receiver, personal video recording system, connected household appliances, head-mounted display device (HMD, perspective glasses), projector (projector), "cave" (system including multiple displays), server, video encoder, video decoder, post-processor for processing the output from video decoder, pre-processor for providing input to video encoder, web server, set-top box, and any other equipment for processing video picture, or other communication equipment.It should be clear that equipment can be mobile and even installed in a mobile vehicle.
[0217] Computer software may be implemented by processor 610 or by hardware, or by a combination of hardware and software. As a non-limiting example, exemplary embodiments may also be implemented by one or more integrated circuits. Memory 620 may be of any type suitable for the technical environment and may be implemented using any appropriate data storage technology (such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples). Processor 610 may be of any type suitable for the technical environment and may encompass one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture, as non-limiting examples.
[0218] As will be apparent to one of ordinary skill in the art, embodiments may generate various signals formatted to carry information that may be stored or transmitted, for example. The information may include, for example, instructions for executing a method or data generated by one of the described embodiments. For example, a signal may be formatted to carry a bit stream of the described exemplary embodiments. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, the signal may be transmitted over a variety of different wired or wireless links. The signal may be stored on a processor readable medium.
[0219] The terms used herein are only used to describe the purpose of specific exemplary embodiments and are not intended to be limited. As used herein, the singular forms "one", "a kind of" and "the" may also be intended to include plural forms unless the context clearly indicates otherwise. It will be further understood that when used in this specification, the terms "include / comprise" and / or "including / comprising" may specify the existence of stated, for example, features, integers, steps, operations, elements and / or components, but do not exclude the existence or addition of one or more other features, integers, steps, operations, elements, components and / or their groups. Moreover, when an element is referred to as "responsive to" or "connected to" another element or "associated with another element", it may directly respond or be connected to or associated with another element, or there may be an intermediate element. In contrast, when an element is referred to as "directly responsive to" or "directly connected to" another element or "directly associated with another element", there is no intermediate element.
[0220] It should be appreciated that use of any of the symbols / terms " / ", "and / or", and "at least one of" may be intended to encompass selection of only the first listed option (A), or only the second listed option (B), or both options (A and B), such as in the case of "A / B", "A and / or B", and "at least one of A and B". As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C", such wording is intended to encompass selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A and B and C). This may be extended to as many items as listed, as will be apparent to one of ordinary skill in this and related arts.
[0221] Various numerical values may be used in the present application. Specific values may be used for example purposes and the described aspects are not limited to these specific values.
[0222] It will be understood that although the terms first, second, etc. can be used to describe various elements in this article, these elements are not limited by these terms. These terms are only used to distinguish one element from another element. For example, without departing from the teaching of this application, the first element can be referred to as the second element, and similarly, the second element can be referred to as the first element. There is no suggestion of sorting between the first element and the second element.
[0223] References to "an exemplary embodiment" or "exemplary embodiments" or "one implementation" or "implementation" and other variations thereof are frequently used to convey that a particular feature, structure, characteristic, etc. (described in conjunction with an exemplary embodiment / implementation) is included in at least one exemplary embodiment / implementation. Thus, the appearances of the phrases "in an exemplary embodiment" or "in an exemplary embodiment" or "in one implementation" or "in an implementation" and any other variations appearing in various places in this application are not necessarily all referring to the same exemplary embodiment.
[0224] Similarly, references herein to "according to an exemplary embodiment / example / implementation" or "in an exemplary embodiment / example / implementation" and other variations thereof are frequently used to convey that a particular feature, structure, or characteristic (described in conjunction with an exemplary embodiment / example / implementation) may be included in at least one exemplary embodiment / example / implementation. Therefore, the expressions "according to an exemplary embodiment / example / implementation" or "in an exemplary embodiment / example / implementation" appearing in various places in this application do not necessarily all refer to the same exemplary embodiment / example / implementation, nor are separate or alternative exemplary embodiments / examples / implementations necessarily mutually exclusive of other exemplary embodiments / examples / implementations.
[0225] Reference numerals appearing in the claims are for illustration purposes only and have no limiting effect on the scope of the claims.The present exemplary embodiments / examples and variations may be employed in any combination or sub-combination although not explicitly described.
[0226] When a figure is presented as a flow chart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow chart of the corresponding method / process.
[0227] While some diagrams include arrows on communication paths to illustrate a primary direction of communication, it should be understood that communication can occur in the opposite direction to the depicted arrows.
[0228] Various embodiments relate to decoding. As used in the present application, "decoding" may encompass, for example, all or part of a process performed on a received video picture (which may include a received bitstream encoding one or more video pictures) to produce a final output suitable for display or further processing in a reconstructed video domain. In various exemplary embodiments, such a process includes one or more of the processes typically performed by a decoder. In various exemplary embodiments, for example, such a process also includes or optionally includes a process performed by a decoder of the various embodiments described in the present application.
[0229] As a further example, in one exemplary embodiment, "decoding" may refer only to dequantization, in one exemplary embodiment, "decoding" may refer to entropy decoding, in another exemplary embodiment, "decoding" may refer only to differential decoding, and in another exemplary embodiment, "decoding" may refer to a combination of dequantization, entropy decoding, and differential decoding. Whether the phrase "decoding process" may be intended to specifically refer to a subset of operations, or to generally refer to a broader decoding process will be clear, and is believed to be well understood by those skilled in the art, based on the context of the particular description.
[0230] Various embodiments all relate to encoding. In a manner similar to the above discussion about "decoding", "encoding" as used in this application may encompass, for example, all or part of a process performed on an input video picture to produce an output bitstream. In various exemplary embodiments, such a process includes one or more of the processes typically performed by an encoder. In various exemplary embodiments, such a process also includes or optionally includes a process performed by an encoder of the various embodiments described in this application.
[0231] As a further example, in one exemplary embodiment, "encoding" may refer only to quantization, in one exemplary embodiment, "encoding" may refer only to entropy coding, in another exemplary embodiment, "encoding" may refer only to differential coding, and in another exemplary embodiment, "encoding" may refer to a combination of quantization, differential coding, and entropy coding. Based on the context of the particular description, whether the phrase "encoding process" may be intended to specifically refer to a subset of operations, or to generally refer to a broader encoding process will be clear and is believed to be well understood by those skilled in the art.
[0232] Additionally, the present application may refer to "obtaining" various information. Obtaining information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from a memory, processing information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.
[0233] Furthermore, this application may refer to "receiving" various pieces of information. Receiving information may include, for example, one or more of: accessing the information or receiving the information from a communication network.
[0234] Moreover, as used herein, the word "signaling" is particularly directed to a corresponding decoder to indicate something, etc. For example, in some exemplary embodiments, the encoder signals specific information, such as codec parameters or encoded video picture data. In this way, in exemplary embodiments, the same parameter can be used on the encoder side and the decoder side. Therefore, for example, the encoder can transmit (explicitly signaling) specific parameters to the decoder so that the decoder can use the same specific parameters. On the contrary, if the decoder already has specific parameters and other parameters, signaling can be used without transmission (implicit signaling) to simply allow the decoder to know and select specific parameters. By avoiding the transmission of any actual function, bit savings are achieved in various exemplary embodiments. It should be appreciated that signaling can be accomplished in a variety of ways. For example, in various exemplary embodiments, one or more syntax elements, flags, etc. are used to signal information to the corresponding decoder. Although the verb form of the word "signaling" is mentioned above, the word "signaling" can also be used as a noun in this article.
[0235] A number of embodiments have been described. However, it should be understood that various modifications may be made. For example, elements of different embodiments may be combined, supplemented, modified, or removed to produce other embodiments. In addition, it will be understood by those of ordinary skill that other structures and processes may replace the disclosed structures and processes, and that the resulting embodiments will perform at least substantially the same (one or more) functions in at least substantially the same (one or more) manners to achieve at least substantially the same (one or more) results as the disclosed embodiments. Thus, the present application contemplates these and other embodiments.
Claims
1. A method for predicting a block of a video picture, wherein a first prediction block (PB1) is obtained by an intra-frame template matching prediction mode (301), and the intra-frame template matching prediction mode determines the first prediction block (PB1) by minimizing a cost function calculated between sample values of an L-shaped template of the block of the video picture and sample values of an L-shaped template of a reconstructed block of the video picture, wherein the method further comprises determining (302) a first block vector (BV1) as a displacement between the first prediction block (PB1) and the block of the video picture, the first block vector (BV1) identifying the first prediction block as a prediction block candidate for the block of the video picture.
2. The method according to claim 1, wherein the first block vector (BV1) is stored in a block-based motion information buffer.
3. The method according to claim 2, wherein the first block vector (BV1) is stored on a sub-block basis.
4. The method according to any one of claims 1 to 3, wherein the method further comprises adding (303) the first block vector (BV1) to a list of block vector prediction candidates associated with the video picture.
5. The method according to claim 4, wherein the block of the video picture is predicted by a second prediction block (PB2), the second prediction block (PB2) being obtained (304) by an intra-block copy prediction mode, the intra-block copy prediction mode determining the second block vector (BV2) by block matching as a displacement between the block of the video picture and a prediction block of a reconstructed block of the video picture, wherein the method further comprises predicting (305) the second block vector (BV2) by a block vector (BV3) of a list of block vector prediction candidates.
6. The method according to any one of claims 1 to 3, wherein the method further comprises storing (306) the first block vector (BV1) in a history-based motion vector prediction table.
7. The method of claim 6, wherein the history-based motion vector prediction table further stores at least one third block vector (BV3) associated with at least one prediction block of at least one reconstructed block of the video picture, each of the at least one third block vector (BV3) being obtained by an intra-block copy prediction mode, the intra-block copy prediction mode determining the third block vector (BV3) as a displacement between a prediction block of the reconstructed block of the video picture and a reference block of the video picture by block matching.
8. The method according to claim 7, wherein the block of the video picture is predicted by the second prediction block (PB2), the second prediction block (PB2) being obtained by an intra-block copy prediction mode, the intra-block copy prediction mode determining a second block vector (BV2) as a displacement between the block of the video picture and a prediction block of a reconstructed block of the video picture by block matching, wherein the method further comprises predicting (307) the second block vector (PB2) by means of a block vector (BV4) of the history-based motion vector prediction table.
9. A method for encoding a block of a video picture based on a prediction block obtained by the method of any one of claims 1 to 8.
10. A method for decoding a block of a video picture based on a prediction block obtained by the method of any one of claims 1 to 8.
11. A bit stream formatted to include encoded video picture data obtained by the method of any one of claims 1 to 10.
12. An apparatus comprising means for carrying out one of the methods as claimed in any one of claims 1 to 10.
13. A computer program product comprising instructions which, when executed by one or more processors, cause the one or more processors to perform the method according to any one of claims 1 to 10.
14. A non-transitory storage medium carrying instructions of a program code for executing the method of any one of claims 1 to 10.
Citation Information
Patent Citations
Method and apparatus for block vector signaling and derivation in intra picture block compensation
US10448026B1
Template-matching-based method and apparatus for encoding and decoding intra picture
US20170134726A1
Method and apparatus for video coding
US20200236384A1
Method and Apparatus of Enhanced Intra Block Copying Mode for Video Coding
US20210250580A1