Intra block copy coding and decoding
Patent Information
- Application Number
- JP2024206541
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-09-09
- Filing Date
- 2024-11-27
- Publication Date
- 2025-03-18
- Estimated Expiration
- 2040-09-09
Smart Images

Figure 2025037967000001_ABST
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS Pursuant to the applicable patent laws and / or regulations under the Paris Convention, this application Priority and interest of international patent application PCT / CN2019 / 104869, filed September 9, The purpose of the application is to timely assert the benefits of the same. The entire disclosure of which is incorporated by reference as part of the present disclosure.
[0002] This patent document relates to video and image coding and decoding. [Background technology]
[0003] Despite advances in video compression, digital video is still used widely across the Internet and It is the largest bandwidth user of any other digital communications network. As the number of connected user devices capable of displaying and viewing digital content increases, Bandwidth demands for video usage are predicted to continue to increase. Summary of the Invention
[0004] Regarding digital video coding, in particular, coding intra block copy tools Devices relating to the coding and decoding of images and pictures for use in the coding or decoding of images , systems and methods.
[0005] In one exemplary embodiment, a method of image processing is disclosed. The method includes: For conversion between the current block in the domain and the coding representation of the image, Allows splitting a block into multiple transform units based on the characteristics of the current block. In the coding representation, the signaling of the split is omitted. The method also includes performing a transformation based on the determination.
[0006] In another exemplary aspect, a method of image processing is disclosed. The method includes: for converting between a current block in the image domain and a coding representation of the image, Intra-block copy (IBC) model based on filtered reconstructed reference samples The method further includes determining a predicted sample for the current block using the prediction code. This also includes performing a conversion based on the
[0007] In another exemplary aspect, a method of video processing is disclosed. The method comprises: For the conversion between blocks and the coding representation of this image, the intrablock is This syntax element indicates the use of the Interleaved Block Copy (IBC) coding model's skip mode. This rule includes determining whether the syntax element signaling using the current block dimensions and / or the IBC coding model The method specifies that the method is based on the maximum allowable size for a block to be coded using the It also includes performing a conversion based on the determination.
[0008] In another exemplary aspect, a method of video processing is disclosed. The method comprises: Low Frequency Non-separable Transform (LFNST) for conversion between block and image coding representations At least one coding model for coding the index associated with the coding model. This LFNST coding model involves determining one context. applying a forward quadratic transform between the forward linear transform and the quantization step during the quantization; During decoding, an inverse secondary transform is applied between the inverse quantization step and the inverse primary transform. The size of the forward and inverse secondary transforms is less than the size of the current block. The at least one context is a forward linear transform or an inverse linear transform. The method is based on the partition type of the current block, without considering the partition conversion. It also includes performing a conversion in accordance with the determination.
[0009] In another exemplary aspect, a method of image processing is disclosed. The method includes: A coding representation of the image is converted to a coding representation of the image of the current block of the image. Based on the maximum transform unit size, the Intra Block Copy (IBC) coding model The method further includes determining whether the controller is enabled. The method performs the conversion according to the determination. This also includes the following.
[0010] In another exemplary aspect, a method of image processing is disclosed. The method includes: For conversion between the block and the image and the coding representation of this image, the motion vector for the current block is The motion vector is calculated by dividing the absolute values of the components of the vector into two parts. The filter is expressed as (Vx, Vy), and this component is expressed as Vi, where Vi is either Vx or Vy. The first of the two parts is |Vi|-((|Vi|>>N)< <N)に and the second of the two parts is equal to |Vi|>>N,N, where N is a positive integer. The two parts are coded separately in the coding representation. This also includes performing conversion by
[0011] In another exemplary aspect, a method of image processing is disclosed. The method includes: For image to image conversion, the maximum allowable size of the conversion block is used to convert the current block. Determine information about the maximum size of the current block that allows sub-block transformation in The method also includes performing a transformation according to the determination.
[0012] In another exemplary aspect, a method of video processing is disclosed. The method includes: A coding representation of video blocks in the video domain based on a block copy tool and a video block Allows splitting a video block into multiple transformation units for transformation to and from the image. and determining whether or not the video block is encoded, the determination being made based on a coding condition of the video block. ,The coding representation omits signaling of the partition, and ,determines and transforms based on the partition. The present invention also includes:
[0013] In another exemplary aspect, a method of image processing is disclosed. The method comprises: For conversion between the coding representation of image blocks and image blocks, the maximum conversion size in the image domain is Intra Block Copy (IBC) tool for converting video blocks based on size determining whether the ?le is enabled; and performing the conversion based on the determination. nothing. In another exemplary aspect, a method of image processing is disclosed. The method comprises: For the conversion between the coding representation of the image block and the image block, an interface for this conversion is provided. Whether the IBC tool signal is included in the coding expression. determining whether the image is a The width and / or height of the block, and the maximum allowable IBC block size for the image area. and performing a conversion based on the
[0014] In another exemplary aspect, a method of video processing is disclosed. The method includes: The Interleaved Block Copy (IBC) tool is used to create a coding representation of a video block in the video domain and Divide a video block into multiple transform units (TUs) for transformation to and from the video block. determining whether to allow the conversion to the plurality of TUs based on the determination; and performing a transformation including using separate motion information for the first and second images.
[0015] In another exemplary aspect, a method of image processing is disclosed. The method comprises: Intra block copying is used to convert between the coding representation of image blocks and image blocks. determining that the conversion tool is enabled for intra block copy; and performing a transformation using a filter tool, the filtered reconstruction of the image region. The samples are used to make a prediction for the video block.
[0016] In another exemplary aspect, a method of video processing is disclosed. The method comprises: The present invention includes at least one image including a lock and coding representation and conversion of the image. Some video blocks are coded using motion vector information, and the motion vector The information is a first portion based on a first least significant bit of the absolute value of the motion vector information, Also, a second portion based on the remaining more significant bits that are more significant than the first least significant bit is and is expressed in a coding representation.
[0017] In another exemplary aspect, a method of image processing is disclosed. The method comprises: A sub-block transformation tool is used to transform between the coding representation of image blocks and image blocks. Determine whether the rule is enabled for conversion and perform the conversion based on the determination. and determining based on a maximum allowable transform block size for the video domain. and conditionally signal this coding representation based on the maximum allowed transform block size. Include knowledge.
[0018] In another exemplary aspect, a method of image processing is disclosed. The method comprises: For the conversion between the coding representation of the image block and the image block, a low-frequency non-separable transform (L FNST) is used during the conversion and the conversion is performed based on this determination. and determining whether the video block is a video block based on a coding condition applied to the video block. The matrix indices for LFNST and LFNST are The data is coded using the coding representation.
[0019] In yet another exemplary embodiment, the method is provided in the form of processor executable code. The method may be embodied in and stored on a computer readable program medium.
[0020] In yet another exemplary embodiment, a device configured or operable to perform the method described above. A possible device is disclosed, which is programmed to implement the method. A processing unit may be included.
[0021] In yet another exemplary aspect, a video decoder device as described herein The method may be implemented.
[0022] These and other aspects and features of the disclosed technology are set forth in the drawings, description and claims. This is explained in more detail in. [Brief description of the drawings]
[0023] [Figure 1] 13 illustrates an example of a derivation process for building a merge candidate list. [Diagram 2] 1 shows examples of spatial merge candidate locations. [Diagram 3] 1 shows examples of candidate pairs considered for redundancy check of spatial merge candidates. [Figure 4] 13 shows example locations for the second PU of N×2N and 2N×N divisions. [Diagram 5] FIG. 13 is an illustration of motion vector scaling for temporal merge candidates. [Figure 6] 1 shows examples of candidate positions for temporal merge candidates, C0 and C1. [Figure 7] 1 illustrates an example of a joint bi-predictive merge candidate. [Figure 8] 13 shows an example of a process for deriving motion vector prediction candidates. [Figure 9] 1 illustrates a description of motion vector scaling for spatial motion vector candidates. [Figure 10] 13 shows examples of candidate positions for the affine merge mode. [Figure 11] 1 shows a modified merge list construction process. [Figure 12] 1 illustrates an example of inter prediction based on triangulation. [Figure 13] 1 illustrates an example of a central processing unit applying a first group of weighting factors. [Figure 14] 2 shows an example of a motion vector storage device. [Figure 15] An example of UMVE search processing is shown below. [Figure 16] An example of UMVE search points is shown. [Figure 17] FIG. 13 illustrates the operation of an intra block copy tool. [Figure 18]Here is an example of a secondary transformation in JEM. [Figure 19] An example of the Reduced Quadratic Transform (RST) is shown below. [Figure 20] FIG. 1 is a block diagram illustrating an example video processing system in which the disclosed techniques can be implemented. [Figure 21] FIG. 1 is a block diagram illustrating an example of a video processing device. [Figure 22] 1 is a flowchart illustrating an example of a video processing method. [Figure 23] 1 is a flowchart illustrating a video processing method according to the present technology. [Figure 24] 10 is a flowchart illustrating another video processing method according to the present technology. [Diagram 25] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 26] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 27] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 28] 10 is a flowchart illustrating another video processing method according to the present technology. [Figure 29] 11 is a flowchart illustrating yet another video processing method according to the present technology. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0024] Embodiments of the disclosed technology improve compression performance by using existing video coding This specification may be applied to standards (e.g., HEVC, H.265) and future standards. In order to improve the readability of the description, chapter headings are used. This does not limit the scope of this specification (and / or implementation) to only the respective chapters.
[0025] 1. Summary of the Invention
[0026] This specification relates to a video coding technology. IBC (also known as Current Picture Reference, CPR) coding. It may be applied to existing video coding standards or may be applied to the standard (Versatile Video The present invention may be applied to determine future video coding. It is also applicable to any video standard or video codec.
[0027] 2. Background technology
[0028] Video coding standards are primarily driven by well-known ITU-T and ISO / IEC standard developments. ITU-T created H.261 and H.263, and ISO / IEC created MP EG-1 and MPEG-4 Visual were created, and the two organizations are working on H.262 / MPEG-2 V ideo and H.264 / MPEG-4 AVC (Advanced Video Cod) The H.265 / HEVC standard was jointly created by Sony and Sony Video. The standard uses a hybrid video coding structure in which temporal prediction and transform coding are used. In 2015, to explore future video coding technologies beyond HEVC, VCEG and MPEG have jointly established the Joint Video Exploration and Technology Exploration (JVET) Since then, many new methods have been adopted by JVET. The reference software called JEM (Joint Exploration Mode) In April 2018, VCEG (Q6 / 16) and ISO / IE C JTC1 SC29 / WG11(MPEG) Joint Video Exp The JVET (Joint Video Engineering Test Team) was launched, and achieved a 50% bitrate reduction compared to HEVC. We are working to develop VVC standards with this goal in mind.
[0029] 2.1 Inter Prediction in HEVC / H.265
[0030] For inter-coding coding units (CUs), the partition mode Depending on the code, the image may be coded with one prediction unit (PU) or two PUs. Each inter-predicted PU has motion parameters for one or two reference picture lists. The motion parameters include a motion vector and a reference picture index. The use of one of the two reference picture lists is inter_ The motion vector may be signaled using pred_idc. Alternatively, the metric may be explicitly coded as a delta.
[0031] When a CU is coded in skip mode, one PU is assigned to this CU. The motion vector differentials are also coded based on the reference picture. There is no merge mode, which specifies the motion parity for the current PU. The parameters are obtained from the neighboring PUs including the spatial and temporal candidates. Can be applied to any inter predicted PU, not just for skip mode An alternative to the merge mode is the explicit transmission of motion parameters, More precisely, the motion vector difference (MVD) compared to the motion vector predictor for each reference pixel The corresponding reference picture index in the reference picture list, and the usage status of the reference picture list. Such a mode is referred to as advanced motion vector mode in this disclosure. This is called AMVP.
[0032] If the signal indicates to use one of two reference picture lists, one Generate PUs from blocks of samples. This is called "uni-prediction". P slices and Uniprediction is available for both the I / O and B slices.
[0033] If the signal indicates that both reference picture lists are to be used, the block of two samples is Generate PU from the block. This is called "bidirectional prediction". Bidirectional prediction is only performed on B slices. is available.
[0034] The inter prediction modes defined in HEVC will be described in detail below. The following describes the mode.
[0035] 2.1.1 Reference Picture List
[0036] In HEVC, the term inter prediction refers to prediction of a reference picture other than the current decoded picture. A prediction derived from data elements (e.g., sample values or motion vectors) of the reference picture. Similar to H.264 / AVC, it is used to indicate a single frame from multiple reference pictures. The reference pictures used for inter prediction can predict one or more reference pictures. The reference index is the index of any reference picture in the list. The prediction signal is generated using a texture.
[0037] One reference picture list, List0, is used for P slices, and two reference picture lists, List1, List0 and List1 are used for B slices. The reference pictures used can come from past and future pictures in terms of capture / display order. It's fine.
[0038] 2.2.1 Merge Mode
[0039] 2.1.2.1. Deriving Merge Mode Candidates
[0040] When predicting PU using merge mode, the merge candidate list is generated from the bitstream. parse the index pointing to an entry in and use it to look up the motion information The construction of this list is specified in the HEVC standard and follows this sequence of steps: It can be summarised based on this. ● Step 1: Derive initial candidates o Step 1.1: Spatial candidate derivation o Step 1.2: Redundancy check of spatial candidates o Step 1.3: Temporal candidate derivation Step 2: Insert additional candidates o Step 2.1: Creating bidirectional prediction candidates o Step 2.2: Insertion of zero motion candidates
[0041] These steps are also shown diagrammatically in Figure 1, which shows the steps for constructing the merge candidate list. An exemplary derivation process is shown. For spatial merge candidate derivation, We select up to four merge candidates from the candidates. At most one merge candidate is selected from the four candidates. Since we are expecting candidates, the number of candidates obtained in step 1 is signaled in the slice header. If the maximum number of merge candidates (MaxNumMergeCand) is not reached, additional candidates are generated. Since the number of candidates is fixed, we use truncated unary thresholding (TU) to find the best merge. Encode the index of the candidate. If the size of the CU is equal to 8, encode all of the current CU. The PU of the 2N×2N prediction unit has one merge candidate list, which is the same as the merge candidate list of the 2N×2N prediction unit. share.
[0042] The operations associated with the above steps are described in detail below.
[0043] 2.1.2.2 Spatial candidate derivation
[0044] In deriving spatial merge candidates, up to four merge candidates are selected from the candidates located in the positions shown in Fig. 2. Select a page candidate. The order of derivation is A1, B1, B0, A0, B2. If any of PUs 1, B0, or A0 is not available (e.g., another slice or Position B2 is considered only if the After adding the candidate in position A1, the remaining candidates are added and then subjected to a redundancy check. This allows candidates with the same motion information to be reliably removed from the list, improving coding efficiency. In order to reduce the computational complexity, the above-mentioned redundancy check In this study, we do not consider all possible candidate pairs. Instead, we use the arrows in Fig. 3. We consider only pairs linked by the same motion information, and the corresponding candidates used for redundancy check If a candidate does not have the same motion information as the other source, the candidate is added to the list. A PU is a "second PU" associated with a division different from 2N x 2N. FIG. 4 shows the second PU for the cases of N×2N and 2N×N, respectively. In the case of splitting into 2N, the candidate at position A1 is not considered for list construction. By comparing the two prediction units, two prediction units with the same motion information are derived. It is redundant to have only one PU in the current coding unit. When dividing a PU into 2N×N, position B1 is not taken into consideration.
[0045] 2.1.2.3 Temporal candidate derivation
[0046] In this step, only one candidate is added to the list. In the derivation of the merge candidates, the co-located pictures in the co-located pictures Based on the PU, the scaled motion vector is derived. FIG. 5 is an explanatory diagram of the scaling of motion vectors for image candidates. As shown by the dotted line in FIG. The scaled motion vectors of the temporal merge candidates are obtained, which are the POC distances t Using b and td, it is scaled from the motion vector of the PU at the same position. tb is defined as the POC difference between the reference picture of the current picture and the current picture. , td is defined as the POC difference between the reference picture of the co-located PU and the co-located picture. Set the reference picture index of the temporal merge candidate equal to zero. A practical implementation of ring processing is described in the HEVC specification [1]. In the case of the reference picture list, two motion vectors are generated: one for reference picture list 0 and the other for reference picture list 1. One for reference picture list 1 and combining them , forming bi-predictive merge candidates.
[0047] 2.1.2.4 Co-located Pictures and Co-located PUs
[0048] TMVP is enabled (e.g. slice_temporal_mvp_en If abled_flag is 1, a variable C representing the col-located picture olPic is derived as follows:
[0049] - The current slice is a B slice and the signal collocated_from_l0 If _flag is 0, ColPic is RefPicList1[collocat ed_ref_idx].
[0050] - Otherwise (slice_type is B and collocated_fr om_l0_flag is 1 or slice_type is P), ColP Set ic to RefPicList0[collocated_ref_idx].
[0051] where collocated_ref_idx and collocated_fro m_l0_flag are two syntax elements that can be signaled in the slice header .
[0052] In the same position PU(Y) belonging to the reference frame, as shown in FIG. 6, the candidate C0 and Select a temporal candidate position between candidates C1 and C2. If the PU at position C0 is not available, If it is intra-coded or if it is the current coding tree unit (CT U, aka LCU Maximum Coding Unit) outside the line, position C1 is used Otherwise, position C0 is used to derive temporal merging candidates.
[0053] The relevant syntax elements are described below.
[0054] [Table 1]
[0055] 2.1.2.5 Deriving MVs for TMVP Candidates
[0056] In some embodiments, to derive TMVP candidates, the following operations are performed.
[0057] 1) In list X, set reference picture list X=0 and set the target reference picture Let the image be a reference picture with index 0 (for example, curr_ref). Call the derivation process of the motion vector placed in the list X, and use the MV of the list X that points to curr_ref. obtain.
[0058] 2) If the current slice is a B slice, set the reference picture list X=1; The target reference picture is the reference picture with index 0 in list X ( For example, curr_ref). Call the derivation process of the motion vector arranged at the same position. and get the MV of list X that points to curr_ref.
[0059] The process of deriving the co-located motion vectors is described in the next subsection 2.1. .2.5.1 will explain.
[0060] 2.1.2.5.1 Derivation of motion vectors located at the same position
[0061] For co-located blocks, it is either uni-predictive or bi-predictive intra-prediction. It may be coded or inter-coded. If the TMVP candidate is disabled, it is set to be equal to unavailable.
[0062] In the case of single prediction from list A, the motion vector of list A is used as the reference picture list. Scale it to x.
[0063] If bi-prediction is used and the target reference picture list is X, then the motion vector of list A is We scale the vector to the target reference picture list X, A according to the following rules: It is decided.
[0064] - None of the reference pictures has a larger POC value compared to the current picture. If not, then A is set equal to X.
[0065] - otherwise, A is equal to collocated_from_l0_flag It is set.
[0066] 2.1.2.6 Additional Candidate Inserts
[0067] Besides spatial-temporal merge candidates, there are two additional types of merge candidates: There are bi-predictive merge candidates and zero merge candidates. The joint bidirectional prediction merge candidate is generated by using the B slice. The first reference picture list motion parameters of the first candidate and the second reference picture list of another candidate are used only for the first candidate. By combining the two reference picture lists and the motion parameters, we obtain joint bidirectional prediction candidates. If these two tuples provide different motion hypotheses, they are generated as new FIG. 7 shows an example of a combined bidirectional prediction merge candidate. Figure 7 shows the mvL0 and refIdxL0 in the original list (left), Or, using two candidates with mvL1 and refIdxL1, the final list (right ) to generate joint bidirectional predictive merge candidates. There are various rules for the combinations that are considered to generate candidates.
[0068] By inserting zero motion candidates and filling the remaining entries in the merge candidate list. , MaxNumMergeCand capacity. These candidates have a spatial displacement of zero. The number of reference pictures starts from zero and increases each time a new zero motion candidate is added to the list. Finally, no redundancy check is performed on these candidates. stomach.
[0069] 2.1.3 Advanced Motion Vector Prediction (AMVP)
[0070] AMVP exploits the spatial-temporal correlation between motion vectors and nearby PUs, It is used to transmit motion parameters explicitly. For each reference picture list, first, the left, top Check the availability of PU positions in the time neighborhood of , remove redundant candidates, and select the zero vector By adding, the length of the candidate list is kept constant, and the motion vector candidate list is constructed. The encoder then selects the best predictor from the candidate list and writes the selected candidate as The corresponding index indicating the merge index can be transmitted. Similarly, the index of the best motion vector candidate is encoded using a shortened unary In this case, the maximum number of coding objects is 2 (see Figure 8). The process of deriving vector prediction candidates will now be described in detail.
[0071] 2.1.3.1 Derivation of AMVP Candidates
[0072] FIG. 8 summarizes the process of deriving motion vector predictor candidates.
[0073] In motion vector prediction, there are spatial motion vector candidates and temporal motion vector candidates. Two types of motion vector candidates are considered: Then, based on the motion vectors of each PU at five different positions, the best Finally, two motion vector candidates are derived.
[0074] To derive temporal motion vector candidates, A motion vector candidate is selected from two candidates derived based on the spatial-temporal After creating the initial list of candidates, remove duplicate motion vector candidates in the list. If the number of candidates is greater than two, the reference pictures in the associated reference picture list are used. Remove from the list any motion vector candidates with a pixel index greater than 1. If the number of target motion vector candidates is less than two, add additional zero motion vector candidates to the list. Add.
[0075] 2.1.3.2 Spatial Motion Vector Candidates
[0076] In deriving spatial motion vector candidates, the PUs are located as shown in Fig. 2. Of the five possible candidates, up to two candidates that are in the same position as the motion merge are selected. The order of derivation for the left side of the current PU is A0, A1, scaled The derivation order for the upper side of the current PU is defined as A0 scaled and A1 scaled. The order is B0, B1, B2, scaled B0, scaled B1, scaled Therefore, for each side, the vectors that can be used as motion vector candidates are There are four cases where spatial scaling can be used: two where spatial scaling is not required and There are two cases where dynamic scaling is used. The four different cases are summarized as follows: It becomes like this.
[0077] ● No spatial scaling -(1) The same reference picture list and the same reference picture index (same POC ) - (2) Different reference picture lists, but the same reference picture (same POC) ● Spatial scaling - (3) Same reference picture list, but different reference pictures (different POC) (4) Different reference picture lists and different reference pictures (different POCs)
[0078] First check the non-spatial scaling case, then do the spatial scaling. Regardless of the reference picture list, the POC selects the reference pictures of the neighboring PUs and the reference picture of the current PU. If the picture is different, spatial scaling is taken into account. All PUs of the left candidate are used. If not available or if intra-coded, the upper motion vectors are rescheduled. The ring helps in parallel derivation of left and upper MV candidates. Otherwise, the upper motion No spatial scaling is allowed for the vectors.
[0079] In the spatial scaling process, as shown in Figure 9, the same process is carried out as in the temporal scaling process. The main difference is that the reference picture of the current PU is scaled by the motion vector of the neighboring PU. The actual scaling process is done by taking the time scale and the index as input. The point is that it is the same as a ring.
[0080] 2.1.3.3 Temporal Motion Vector Candidates
[0081] Processing for deriving temporal merge candidates other than deriving reference picture indexes are all the same as the processes for deriving spatial motion vector candidates (see FIG. 6). The reference picture index is signaled to the decoder.
[0082] 2.2 Inter Prediction Method in VVC
[0083] New coding tools to improve inter prediction include signaling MVD Adaptive Motion Vector Difference Resolution (AMVR), Merge with Motion Vector Difference (MMVD), Triangular prediction mode (TPM), combined intra-inter prediction (CIIP), advanced TM VP (ATMVP, also known as SbTMVP), Affine Prediction Mode, Generalized Bidirectional Prediction (GB I), Decoder-side Motion Vector Refinement (DMVR), Bidirectional Optical Flow (BIO , also known as BDOF).
[0084] There are two different merge list building processes supported by VVC.
[0085] (1) Sub-block merge candidate list: Contains ATMVP and affine merge candidates. A single merge list construction process is used for both affine and ATMVP modes. The ATMVP and affine merge candidates may be added in order. The size of the lock merge list is signaled in the slice header and has a maximum value of 5.
[0086] (2) Normal merge list: For inter-coding blocks, one merge list is used. Here, the spatial / temporal merge candidates,HMVP,pairs are combined. Merge candidates that have been merged and zero motion candidates may be inserted in order. is signaled in the slice header and has a maximum value of 6. MMVD, TPM, CIIP depends on the normal merge list.
[0087] Similarly, there are three AMVP lists supported by VVC: (1) Affine AMVP Candidate List (2) Regular AMVP candidate list
[0088] 2.2.1 Coding Block Structure in VVC
[0089] In VVC, a quad tree / half tree / third tree (QT / BT / TT) structure is adopted, and the picture Divide the image into square or rectangular blocks.
[0090] Besides QT / BT / TT, a separate tree (aka dual codec) is used for I-frames. A separate tree is used for coding. The block structure is signaled separately for the luma and chroma components.
[0091] Also, CU is an intra-subpart (e.g., PU is equal to TU but is smaller than CU). Prediction of the inter-coder where PU is equal to CU but TU is smaller than PU. Two specific coding methods (such as subblock conversion of coding blocks) Blocks other than the one that is assigned are set to PU and TU.
[0092] 2.2.2 Merging Whole Blocks
[0093] 2.2.2.1 Merge list construction in translational normal merge mode
[0094] 2.2.2.1.1 History-Based Motion Vector Prediction (HMVP)
[0095] Unlike the merge list design, VVC uses history-based motion vector prediction (HMV P) method is adopted.
[0096] HMVP stores previously coded motion information. The motion information of the block is defined as an HMVP candidate. The new table is maintained on-the-fly during the encoding / decoding process. When starting to encode / decode a new tile / LCU row / slice, the HMVP table is emptied. If there are inter-coding blocks and non-sub-blocks in non-TPM mode, At any time, add the relevant motion information as a new HMVP candidate to the last entry in the table. The overall coding flow is shown in Figure 10.
[0097] 2.2.2.1.2 Normal merge list construction process
[0098] A typical merge list construction (for translation) follows this sequence of steps: We can summarize it as follows.
[0099] Step 1: Derive spatial candidates Step 2: Inserting HMVP candidates Step 3: Inserting pairwise average candidates Step 4: Default movement candidates
[0100] HMVP candidates can be used for both AMVP and merge candidate list construction processes. Figure 11 shows the modified merge candidate list construction process (highlighted in blue). If the merge candidate list is not full after inserting VP candidates can be used to fill in the merge candidate list. A block is usually From the viewpoint of motion information, it is considered that the block has a high correlation with the nearest neighboring block. Considering the above, we insert the HMVP candidates in the table in descending order of index. First add to the list, then add the first entry to the end. Similarly, for HMVP candidates, The total number of available merge candidates is used to signal which merge candidates are available for merging. Once the maximum possible number is reached, the merge candidate list construction process ends.
[0101] Note that all spatial / temporal / HMVP candidates are coded in non-IBC mode. If not, it will not be allowed to be added to the normal merge candidate list.
[0102] The HMVP table contains up to five canonical move candidates, each unique.
[0103] 2.2.2.1.2.1 Pruning Process
[0104] Only if the corresponding candidates used for redundancy check do not have the same motion information The candidate is added to the list. This comparison process is called pruning.
[0105] The pruning process among spatial candidates depends on the use of the TPM of the current block.
[0106] The current block is not coded in TPM mode (e.g. normal merge, In the case of MMVD, CIIP, HEVC pruning process for spatial merge candidates (e.g. For example, 5 prunings are used.
[0107] 2.2.3 Triangle Prediction Mode (TPM)
[0108] In VVC, the triangle partition mode (triangle partition mode) for inter prediction is Triangulation modes are supported, up to 8x8. and applies only to CUs coded in merge mode, MMVD or CII Not applicable in P mode. For CUs that meet these conditions, the CU level flag is signaled. Notifies whether the triangulation mode applies.
[0109] When using this mode, either diagonal or anti-diagonal splitting is used, as shown in Figure 11. Divide a CU into two equal triangular partitions using The rectangular partitions are inter-predicted using their own motion, and each partition Only uni-prediction is allowed for each partition, i.e., each partition can only represent one motion vector. As with conventional bi-prediction, there are two motion vectors per CU and one reference index. To ensure that only compensated prediction is required, a unipredictive motion constraint is applied.
[0110] FIG. 12 shows an example of inter prediction based on triangulation.
[0111] The CU-level flag indicates that the current CU is coded in triangle partition mode. A flag indicating the orientation of the triangular partition (diagonal or anti-diagonal), and two more merge indexes (one for each partition). After predicting each of the rectangular partitions, we use an adaptive weighted blending process to blend the diagonals This is the predicted signal for the entire CU, and the other samples are adjusted along the edge of the diagonal. As with the prediction mode of , the transform and quantization process is performed on the entire CU. The motion fields of the predicted CUs using partition mode are stored in 4x4 units.
[0112] A regular merge candidate list can prune a triangle without extra pruning of motion vectors. For each merge candidate in the regular merge candidate list, , only one of the L0 or L1 motion vectors is used for triangular prediction. The order of L1-to-L2 motion vector selection is based on their merge index parity. According to the scheme, a normal merge list can be used directly.
[0113] 2.2.3.1 TPM Merge List Construction Process
[0114] Basically, you can make some modifications to the normal merge list construction process. The following applies:
[0115] (1) How the pruning process is performed depends on the TPM usage of the current block. It depends on the law.
[0116] - If the current block is not TPM coded, it is considered a spatial merge candidate. This is called HEVC5 pruning.
[0117] - Otherwise (if the current block is TPM coded), the new When adding new spatial merge candidates, full pruning is applied. Compare A1, compare B0 with A1, B1, compare A0 with A1, B1, compare B0, B2 Compare with A1, B1, A0, and B0.
[0118] (2) The condition for checking the motion information from B2 is Depends on the use of the TPM.
[0119] - If the current block is not TPM coded, B2 is accessed and B Check B2 only if there are less than 4 spatial merge candidates before checking B2 do.
[0120] - Otherwise (if the current block is TPM coded), B2 Regardless of the number of spatial merge candidates available, B2 is always accessed before adding , check.
[0121] 2.2.3.2 Adaptive Weighting
[0122] After predicting each triangle prediction unit, adapt to the diagonal edge between two triangle prediction units. The weighting process is applied to derive the final prediction for the entire CU. The two weighting coefficient groups are as follows: It is defined as follows.
[0123] The luminance and chrominance samples are,respectively,{7 / 8,6 / 8,4 / 8,2 / 8 ,1 / 8} and the first weighting factor groups of {7 / 8,4 / 8,1 / 8} are used.
[0124] The luminance and chrominance samples are,respectively,{7 / 8,6 / 8,5 / 8,4 / 8 ,3 / 8,2 / 8,1 / 8} and the second weighting factor group of {6 / 8,4 / 8,2 / 8} Use.
[0125] Selecting a weighting factor group based on a comparison of the motion vectors of the two triangular prediction units The second group of weighting factors is used if any one of the following conditions is true: .
[0126] - The reference pictures of the two triangular prediction units are different from each other. - The absolute value of the difference between the horizontal values of the two motion vectors is greater than 16 pixels. - The absolute value of the difference between the vertical values of the two motion vectors is greater than 16 pixels.
[0127] If not, the first weighting factor group is used. An example is shown in FIG.
[0128] 2.2.3.3 Motion Vector Storage
[0129] The motion vectors of the triangular prediction unit (Mv1, Mv2 in Fig. 14) are For each 4x4 grid, the CU stores the 4x4 grid position. Based on the above, the uni-predictive or bi-predictive motion vector is stored. For a 4 × 4 grid that is in the finding region (i.e., not on the diagonal edge), M Either v1 or Mv2 is stored as a single predicted motion vector. For the 4x4 grid in which the pixel is located, the bidirectional predicted motion vectors are stored according to the following rules: Therefore, a bidirectional predictive motion vector is derived from Mv1 and Mv2.
[0130] (1) Mv1 and Mv2 have motion vectors in different directions (L0 or L1) In this case, Mv1 and Mv2 are simply combined to form a bidirectional predicted motion vector. do.
[0131] (2) If both Mv1 and Mv2 are coming from the same L0 (or L1) direction, then: It is. - The reference picture of Mv2 is a picture in the L1 (or L0) reference picture list If Mv1 and Mv2 are the same, Mv2 is scaled to that picture. The bidirectional motion vector predictor is formed by combining the obtained Mv1 with the obtained Mv2. - A reference picture of Mv1 is a picture in the L1 (or L0) reference picture list If Mv1 is equal to the picture, Mv1 is scaled to that picture. v1 and Mv2 are combined to form a bi-directional predictive motion vector. - Otherwise, only Mv1 is stored for the weighting region.
[0132] 2.2.4 Merging with Motion Vector Difference (MMVD)
[0133] In some embodiments, the proposed motion vector representation method is Ultimate Motion Vector Representation (UMVE, MMV) for either mode or merge mode D) is used.
[0134] UMVE is a merge candidate list that is similar to what is included in the normal merge candidate list in VVC. Reuse candidates: among the merge candidates, you can select a base candidate and use the proposed behavior. This is further extended by the vector representation method.
[0135] UMVE provides a new motion vector difference (MVD) representation method, where the starting point, The magnitude and direction of motion are used to represent a single MVD.
[0136] FIG. 15 shows an example of a UMVE search process.
[0137] FIG. 16 shows an example of UMVE search points.
[0138] This technique uses the merge candidate list as is. However, to extend UMVE, Only candidates with default merge type (MRG_TYPE_DEFAULT_N) are considered do.
[0139] The base candidate index defines the starting point. Among the candidates, the best candidates are shown below.
[0140] [Table 2]
[0141] If the number of base candidates is 1, the base candidate IDX is not signaled.
[0142] The distance index is the magnitude of the movement. The predefined distances are as follows:
[0143] [Table 3]
[0144] The direction index represents the direction of the MVD relative to the starting point. The direction index is As shown in the figure, four directions can be represented.
[0145] [Table 4]
[0146] The UMVE flag is signaled immediately after sending the skip or merge flag. If the skip or merge flag is true, parse the UMVE flag. If lag is 1, the UMVE syntax is parsed. If it is not 1, the AFFI syntax is parsed. Parse the NE flag. If the AFFINE flag is 1, i.e., AFFINE If the VTM skip / merge mode is set to 0, but not 1, the VTM skip / merge mode is set to 1. Parse the page index.
[0147] No additional line buffers are required due to the UMVE candidate. The reason is that the split / merge candidates are directly used as base candidates. to determine the MV completion just before motion compensation. A long line buffer is used for this. There is no need to retain it.
[0148] The first or second merge candidate in the merge candidate list under the current common test conditions may be selected as a base candidate.
[0149] UMVE is also known as Merge with MV Difference (MMVD).
[0150] 2.2.5 Merging for Sub-Block-Based Techniques
[0151] In some embodiments, all sub-block related motion candidates are In addition to the regular merge list of merge candidates, they are put into a separate merge list.
[0152] Put the subblock-related motion candidates into a separate merge list and call it the “subblock merge candidate list.” The name shall be "Strike".
[0153] In one example, the subblock merging candidate list includes ATMVP candidates and affine merging candidates. This includes candidates.
[0154] The subblock merging candidate list is filled with candidates in the following order: a. ATMVP candidates (possibly available or unavailable). b. An affine merge list (containing inheritance affine candidates and construction affine candidates). c.0Padding as a MV4 parameter affine model
[0155] 2.2.5.1 Advanced Temporal Motion Vector Prediction Module (ATMVP) (also known as Subblock Temporal Motion Vector Predictor (SbTMVP)
[0156] The basic idea of ATMVP is to use multiple temporal motion vector predictions for one block. Each subblock is assigned a set of motion information. When generating ATMVP merge candidates, we use 8x8 level instead of whole block level. Motion compensation is performed in the
[0157] In its current design, ATMVP is defined in two subsections: 2.2.5.1.1 and 2.2.5.1.2, respectively. Predict the motion vectors.
[0158] 2.2.5.1.1 Deriving the Initial Motion Vector
[0159] Here, the initialized motion vector is tempMv. Block A1 is available. and not intra-coded (e.g. Inter or IBC mode) To derive the initialized motion vectors, Applies. - tempMv is represented by mvL1A1 if all of the following conditions are true: , is set equal to the motion vector of block A1 from list 1. - The reference picture index in list 1 is available (is not -1) and is the same have the same POC value as the picture placed in one position (e.g., DiffPicOrder rCnt(ColPic,RefPicList[1][refIdxL1A1)] is 0 ), - All reference pictures have no greater POC than the current picture (e.g. DiffPicOrderCnt(aPic,currPic) is the order of all the pixels in the current slice. (it is less than or equal to 0 for all pictures aPic in all reference picture lists). - The current slice is the B slice. - collocated_from_l0_flag is equal to 0. - Otherwise, if all of the following conditions are true, tempMv is added to mvL0A1: and is set equal to the motion vector of block A1 from list 0. - The reference picture index in list 0 is available (it is not -1). - It has the same POC value as the co-located picture (e.g. Diff PicOrderCnt(ColPic,RefPicList[0][refIdxL 0A1]) is equal to 0). - Otherwise, the zero motion vector is used as the initialized MV.
[0160] The initialized motion vectors are assigned to the co-located slices signaled in the slice header. In the corresponding block (current block, add the rounded MV to the center position) , optionally clipping to a range).
[0161] If the block is inter-coded, go to the second step. Otherwise In this case, the ATMVP candidate is set to unavailable.
[0162] 2.2.5.1.2 Sub-CU motion derivation
[0163] The second step is to split the current CU into sub-CUs and assign them to co-located pictures. The motion information of each sub-CU is obtained from a block corresponding to each sub-CU in the sub-CU frame.
[0164] If the corresponding block for one sub-CU is coded in inter mode Using this motion information, we can generate co-located images, which is not different from the conventional TMVP processing. The final motion information of the current sub-CU is obtained by invoking the derivation process for the selected MV. Basically, the corresponding block is a candidate list for uni-prediction or bi-prediction. If the motion vector is predicted from the input X, then it is used, otherwise it is either single or bidirectional. For prediction, predict from list Y (Y=1-X) and NoBackwardPred If Flag is 1, the MV for list Y is used. Otherwise, I can't find the complement.
[0165] Co-located blocks in the picture identified by the initialized MV and and the current sub CU position is intra-coded or IBC-coded If the motion candidate is not found as described above, the following is further This applies to:
[0166] Co-located Picture R col is used to extract the motion region in Motion vector MVcol In order to minimize the effect of MV scaling, Therefore, MV col The MVs in the spatial candidate list for deriving are the reference peaks of the candidate MVs. If the object is a co-located picture, select this MV and do not scale it. MV without col otherwise, the most closely related co-located picture is used. Select the MV with the closest reference picture and scale it to the MV col Derive.
[0167] Decoding process related to motion vector derivation process arranged at the same position in the embodiment of the present invention The following is an explanation of this.
[0168] 8.5.2.12 Co-located motion vector derivation process
[0169] The inputs to this process are: - the variable currCb that defines the current coding block, - A code located at the same position in a picture located at the same position specified by ColPic The variable colCb that specifies the coding block, -The top-left luminance sample of the co-located picture specified by ColPic For each of the co-located luminance coding blocks specified by colCb, The luminance position (xColCb, yColCb) that specifies the top-left sample of the - a reference index refIdxLX, where X is 0 or 1; - Flag indicating sub-block temporal merging candidate sbFlag.
[0170] The output of this process is: - Motion vector prediction mvLXCol with 1 / 16 fractional sample accuracy. -Availability flag availableFlagLXCol.
[0171] The variable currPic specifies the current picture. Arrays predFlagL0Col[x][y], mlvL0Col[x][y], and and refIdxL1Col[x][y] are the same as the ColPic specified by PredFlagL0[x][y], MvDmvrL0[x [y], RefIdxL0[x][y] are set equal to the array predFlagL 1Col[x][y], mvL1Col[x][y], and refIdxL1Col[ [x] and [y] are the Pr of the picture placed at the same position specified by ColPic. edFlagL1[x][y], MvDmvrL1[x][y] and RefIdxL1 It is set equal to [x][y].
[0172] The variables mvLXCol and availableFlagLXCol are derived as follows: It is served. -mvLXC if colCb is coded in intra or IBC prediction mode Both modules of ol are set equal to 0, availableFlagLXCol is set equal to 0. - Otherwise, the motion vector mvCol, the reference index refIdxCol, and and the reference list identifier listCol is derived as follows: - if sbFlag is 0, availableFlagLXCol is equal to 1 is set and the following applies: -If predFlagL0Col[xColCb][yColCb] is 0, mvCol, refIdxCol and listCol are mvL1Col[ xColCb][yColCb], refIdxL1Col[xColCb][yCol Cb] and L1. - else predFlagL0Col[xColCb][yColCb] is equal to 1 and predFlagL1Col[xColCb][yColCb] is 0. mvCol, refxIdCol and listCol are the same as mvL0, mvL1, mvL2, mvL3, mvL4, mvL5, mvL6, mvL7, mvL8, mvL9, mvL10, mvL11, mvL12, mvL13, mvL14, mvL15, mvL16, mvL17, mvL18, mvL19, Col[xColCb][yColCb], refIdxL0Col[xColCb][ yColCb] and L0. - else (predFlagL0Col[xColCb][yColCb] is equal to 1 and predFlagL1Col[xColCb][yColCb] is 1. ), and make the following allocations: -If NoBackwardPredFlag is 1, mvCol, refI dxCol and listCol are mvLXCol[xColCb][yCol olCb], refIdxLXCol[xColCb][yColCb], and LX are set equal. - Otherwise, set mvCol, refIdxCol, and listCol respectively. mvLNCol[xColCb][yColCb], refIdxLNCol[xCol Cb][yColCb] and LN, and set N equal to collocated_fro Let this be the value of m_l0_flag. - Otherwise (sbFlag is 1), the following applies: -If PredFlagLXCol[xColCb][yColCb] is 1, mv Col, refxIdCol, and listCol are mvLXCol[xC olCb][yColCb], refIdxLXCol[xColCb][yColCb ] and LX are set equal to 1, and availableFlagLXCol is set equal to 1. It is determined. -otherwise(PredFlagLXCol[xColCb][yColCb] is 0), is applied as follows: -DiffPicOrderCnt(aPic,currPic) is the current slide In all reference picture lists aPic of the device, PredFl is less than or equal to 0. If agLYCol[xColCb][yColCb] is 1, then mvCol, ref xIdCol and listCol are mvLYCol[xColCb][ yColCb], refIdxLYCol[xColCb][yColCb], and L is set equal to Y, where Y is !X, where X is the value of X for which this operation is called, and a The enableFlagLXCol is set equal to 1. Both modules of -mvLXCol are set equal to 0, and availableFl agLXCol is set equal to 0. If -availableFlagLXCol is TRUE, mvLXCol and and availableFlagLXCol are derived as follows: -LongTermRefPic(currPic,currCb,refIdxL X,LX) is LongTermRefPic(ColPic,colCb,refIdx Col, listCol), the modules of mvLXCol are both set to 0, and a The enableFlagLXCol is set equal to 0. - If not, set the variable availableFlagLXCol to 1 and re fPicList[listCol][refIdxCol] by ColPic Contains the coding block colb in the specified colocated picture. Reference index refIdxC of the slice in the reference picture list listCol ol and apply the following: colPocDiff=DiffPicOrderCnt(ColPic,ref PicList[listCol][refIdxCol]) (8-402) currPocDiff=DiffPicOrderCnt(currPic,R efPicList[X][refIdxLX]) (8-403) - 8.5.2.15 with mvCol as input and modified mvCol as output Temporal motion buffer compression of co-located motion vectors as defined in paragraph is called. -If RefPicList[X][refIdxLX] is a long-term reference picture If colPocDiff is currPocDiff, or if colPocDiff is currPocDiff, mvLXCol is derived as follows: mvLXCol=mvCol (8-404) - Otherwise, mvLXCol is the scaled version of the motion vector mvCol. The modified version is derived as follows: tx=(16384+(Abs(td)>>1)) / td (8-405) distScaleFactor=Clip3(-4096,4095,(tb* tx+32)>>6) (8-406) mvLXCol=Clip3(-131072,131071,(distSca leFactor*mvCol+128-(distScaleFactor*mvCo l>=0))>>8)) (8-407) Here, td and tb are derived as follows: td=Clip3(-128,127,colPocDiff) (8-408) tb=Clip3(-128,127,currPocDiff) (8-409 )
[0173] 2.3 Intra-block copy
[0174] Intra Block Copy (IBC), aka current picture reference, is a HEVC script HEVC-SCC and current VVC test model IBC is an interframe coding scheme that uses the concept of motion compensation. The present invention extends the coding scheme from intraframe coding to intraframe coding, as shown in FIG. indicates an intra block copy operation, the current block is It is predicted by one reference block in the same picture. Before decoding, the samples in the reference block must already be reconstructed. IBC is not as efficient for most camera-captured sequences. Although it is not a standard coding technique, it does show significant coding gains for screen content. The reason is that in screen content pictures, repeating patterns of icons, characters, etc. IBC can effectively remove the redundancy between these repeating patterns. In HEVC-SCC, the inter-coding unit (CU) is currently If the picture is selected as its reference picture, IBC can be applied. In this case, we rename MV to block vector (BV), and BV always has integer pixel precision. To conform to the Main Profile HEVC, the current picture is stored in the decoded picture buffer. The picture is marked as a "long-term" reference picture in the DPB. In the current view / 3D video coding standard, inter-view reference pictures are also “long-term” references. It is marked as a picture.
[0175] After the BV finds the reference block, it generates a prediction by copying this reference block. The residual can be obtained by subtracting the reference pixels from the original signal. And, just like any other coding mode, transforms and quantization can be applied. can.
[0176] However, if the reference block is outside the picture or overlaps with the current block, If the area is outside the reconstructed region, or if it is limited by some constraint, If it is outside the defined valid area, some or all of the pixel value is undefined. There are two solutions to deal with such problems. The second is to not allow for data stream conformance with these undefined pixel values. The solution is to apply filtering. The following subsections explain the solution in detail.
[0177] 2.3.1 Single BV List
[0178] In some embodiments, for merge mode and AMVP mode in IBC, The BV predictors for each share a common predictor list that contains the following elements:
[0179] (1) Two spatially adjacent locations (A1 and B1 as in Figure 2) (2) Five HMVP entries (3) Default zero vector
[0180] The number of candidates in the list is controlled by a variable derived from the slice header. In merge mode, up to the first six entries in this list are used, and in AMVP mode For the shared merge mode, the first two entries in this list are used. Compliant with list area requirements (share the same list within the SMR).
[0181] In addition to the BV predictor candidate list mentioned above, we also consider the HMVP candidates and existing merge candidates (A1, B1). The pruning operation can be simplified. In this case, the first HMVP candidate Since we only compare the spatial merge candidates with the stomach.
[0182] In IBC AMVP mode, the mv difference between the selected MVP and the list is In IBC merge mode, the selected MVP is sent to the current block as is. It will be used as a music video.
[0183] 2.3.2 Size Restrictions for IBCs
[0184] In recent VVC and VTM5, in previous VTM and VVC versions ,In addition to the current bitstream constraints, to disable IBC mode at 128x128 It has been proposed to explicitly use the syntax constraint of size < 128x128.
[0185] 2.3.3 Shared merge list for IBC
[0186] To reduce decoder complexity and support parallel coding, in some embodiments Enables parallel processing of small skip / merge coded CUs To do this, we first create a coding unit for all the leaves of an ancestor node in the CU partition tree. The same merge candidate list is shared for each CU. A merge-share node is a leaf CU, and a merge-share node is a leaf CU. Generate a shared merge candidate list in
[0187] Specifically, the following may apply:
[0188] - The block has 32 or fewer luminance samples (e.g., 4x8 or 8x4) and If a pixel is divided into 4x4 child blocks, a very small block (e.g., two adjacent Use merge lists between blocks (4x4 blocks).
[0189] - However, if the luma samples in this block are greater than 32, then one division After this, all the divided blocks are deleted because at least one child block is smaller than the threshold (32). All child blocks share the same merge list (e.g., 16x4 or 4x3 divided by 3). ×16, or 8×8 divided into 4).
[0190] Such restrictions apply only to the IBC merge mode.
[0191] 2.3.4 Syntax Tables
[0192] [Table 5] [Table 6]
[0193] [Table 7]
[0194] 2.4 Maximum Transform Block Size
[0195] Only the maximum luminance transform size, which is either 64 or 32, is supported by the flags at the SPS level. The chroma sampling ratio for the maximum luma transform size gives the maximum Derive the Roma conversion size.
[0196] If the CU / CB size is larger than the maximum luminance transform size, the size is calculated by using smaller TUs. It is possible to call a tiling of CUs.
[0197] Let MaxTbSizeY represent the size of the maximum luminance transform.
[0198] [Table 8]
[0199] sps_max_luma_transform_size_64_fla equal to 1 g specifies the maximum transform size of luma samples equal to 64. sps equal to 0 _max_luma_transformation_size_64_flag is the This specifies that the maximum transform size of the 32 degree samples is equal to 32. If CtbSizeY is less than 64, sps_max_luma_transform The value of rm_size_64_flag is equal to 0. Variables MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSi zeY and MaxTbSizeY are derived as follows: MinTbLog2SizeY=2 (7-27) MaxTbLog2SizeY=sps_max_luma_transform _size_64_flag?6:5 (7-28) MinTbSizeY=1< <MinTbLog2SizeY (7-29) MaxTbSizeY=1< <MaxTbLog2SizeY (7-30) sps_sbt_max_size_64_flag=0 enables sub-block conversion Specifies that the maximum CU width and maximum CU height to sps_sbt_max_size_64_flag=1 allows sub-block conversion. Specifies that the maximum CU width and height to allow is 64 luma samples. MaxSbtSize=Min(MaxTbSizeY,sps_sbt_max _size_64_flag ? 64:32) (7-32)
[0200] 2.4.1 Tools that depend on maximum conversion block size
[0201] The splitting of binary and ternary trees depends on MaxTbSizeY.
[0202] [Table 9] [Table 10] [Table 11] [Table 12]
[0203] 2.4.2 Recovery of intra- and inter-coded blocks Encryption process
[0204] If the size of the current intra-coding CU is larger than the maximum transform block size , a CU is resized until both its width and height are no larger than the maximum transform block size. Then, the image is recursively divided into smaller blocks (PUs). All PUs share the same intra prediction The TUs share the same prediction mode but have different reference samples for intra prediction. Note that the current block is an intra-subpartition (ISP) It must not be coded in mode.
[0205] If the size of the current inter-coding CU is larger than the maximum transform block size , a CU is resized until both its width and height are no larger than the maximum transform block size. Then, the image is recursively divided into smaller blocks (TUs). All TUs share the same motion information. However, the reference samples for intra prediction are different.
[0206] 8.4.5 Intrablock Decoding Process
[0207] 8.4.5.1 General Decoding Process for Intra Blocks
[0208] The inputs to this process are: - defines the top-left sample of the current transform block relative to the top-left sample of the current picture. The sample position (xTb0, yTb0) to be determined, - the variable nTbW, which specifies the width of the current transformation block; - the variable nTbH, which specifies the height of the current transformation block; - a variable predModeIntra that specifies the intra prediction mode; - A variable cIdx that defines the color components of the current block.
[0209] The output of this processing is the corrected reconstructed image before in-loop filtering. The maximum transform block width maxTbWidth and height maxTbHeight are as follows: It is derived as follows. maxTbWidth=(cIdx==0)?MaxTbSizeY:MaxTb SizeY / SubWidthC (8-41) maxTbHeight=(cIdx==0)?MaxTbSizeY:MaxT bSizeY / SubHeightC (8-42) The luma sample positions are derived as follows: (xTbY,yTbY)=(cIdx==0)?(xTb0,yTb0):(xT b0*SubWidthC,yTb0*SubHeightC) (8-43) Based on maxTbSize the following applies: - IntraSubPartionsSplitType is ISP_NO_SPLIT and nTbW is greater than maxTbWidth or nTbH is greater than max If it is greater than TbHeight, the following ordered steps are applied:
[0210] 1. The variables newTbW and newTbH are derived as follows: newTbW=(nTbW>maxTbWidth)?(nTbW / 2):nTb W (8-44) newTbH=(nTbH>maxTbHeight)?(nTbH / 2):nT bH (8-45)
[0211] 2. The general decoding process for intra blocks specified in this section is 0,yTb0), the transform block width nTbW set equal to newTbW, and new The height nTbH set equal to TbH, the intra prediction mode predModeIntr It is called with a and the variable cIdx as inputs, and the output is This is the modified reconstructed picture.
[0212] 3. If nTbW is greater than maxTbWidth, the intrablock defined in this section The general decoding process for a block is set equal to (xTb0+newTbW,yTb0). The position (xTb0, yTb0) specified, the transformation block width set equal to newTbW The height nTbH set equal to nTbW and newTbH, the intra prediction mode pr It is called with edModeIntra and the variable cIdx as input, and the output is 1 is the modified reconstructed picture before intra-filtering.
[0213] 4. If nTbH is greater than maxTbHeight, the inter-threading The general decryption process for a lock is equal to (xTb0, yTb0 + newTbH). Set position (xTb0, yTb0), set transformation block equal to newTbW The width nTbW and height nTbH set equal to newTbH, the intra prediction mode p It is called with redModeIntra and the variable cIdx as input, and the output is 4 is the modified reconstructed picture before intra-frame filtering.
[0214] 5. nTbW is greater than maxTbWidth and nTbH is greater than maxTbHeight If the quantization rate is larger than 1, the general decoding process for intra blocks specified in this section is as follows: The position (xTb0) is set equal to xTb0+newTbW, yTb0+newTbH. ,yTb0), the transform block width nTbW set equal to newTbW, and The height nTbH set equal to bH, the intra prediction mode predModeIntra , and the variable cIdx as input, and the output is the correction This is the corrected reconstructed picture. - Otherwise, the following ordered steps are applied (normal intra prediction process): . - …
[0215] 8.5.8 Residual signal for coding blocks coded in inter prediction mode Decoding process for
[0216] The inputs to this process are: - defines the top-left sample of the current transform block relative to the top-left sample of the current picture. The sample position (xTb0, yTb0) to be determined, - the variable nTbW, which specifies the width of the current transformation block; - the variable nTbH, which specifies the height of the current transformation block; - A variable cIdx that defines the color components of the current block.
[0217] The output of this process is the (nTbW) × (nTbH) array resSamples. . The maximum transform block width maxTbWidth and height maxTbHeight are as follows: It is derived as follows. maxTbWidth=(cIdx==0)?MaxTbSizeY:MaxTb SizeY / SubWidthC (8-883) maxTbHeight=(cIdx==0)?MaxTbSizeY:MaxT bSizeY / SubHeightC (8-884) The luma sample positions are derived as follows: (xTbY,yTbY)=(cIdx==0)?(xTb0,yTb0):(xT b0*SubWidthC,yTb0*SubHeightC) (8-885) Depending on maxTbSize the following applies:
[0218] - nTbW is greater than maxTbWidth or nTbH is greater than maxTbHei If the size of the image is greater than ght, then the following ordered steps are applied:
[0219] 1. The variables newTbW and newTbH are derived as follows: newTbW=(nTbW>maxTbWidth)?(nTbW / 2):nTb W (8-886) newTbH=(nTbH>maxTbHeight)?(nTbH / 2):nT bH(8-887)
[0220] 2. At position (xTb0, yTb0), set the transform block width nT equal to newTbW Take bW, the height nTbH set equal to newTbH, and the variable cIdx as inputs. A coding unit coded in an inter prediction mode as defined in this section. The output is the modified The reconstructed picture is the result of the reconstruction.
[0221] 3. If nTbW is greater than maxTbWidth, (xTb0+newTbW,y The position (xTb0, yTb0) is set equal to newTbW. The width of the transformed block nTbW is set equal to newTbH, the height nTbH is set equal to newTbH, and the variable cI dx is taken as input, and coded in inter prediction mode as specified in this section It calls the decoding process of the residual signal of the coding unit, and the output is the modified reconstruction. Here is a picture.
[0222] 4. If nTbH is greater than maxTbHeight, then (xTb0, yTb0+ne Set position (xTb0, yTb0) equal to newTbW. The width of the transformed block nTbW is set, the height nTbH is set equal to newTbH, and the variable c Taking Idx as input, we use the inter prediction mode coded The output is the in-loop frame. 1 is a modified reconstructed picture before filtering.
[0223] 5. nWTbW is greater than maxTbWidth and nTbH is greater than maxTbHei If it is greater than ght, it is equal to (xTb0+newTbW, yTb0+newTbH). Set position (xTb0, yTb0), set transformation block equal to newTbW With width nTbW, height nTbH set equal to newTbH, and variable cIdx as input , as defined in this section, a coding unit coded in inter prediction mode. The output is the modified signal before in-loop filtering. This is the corrected reconstructed picture.
[0224] - Otherwise, if cu_sbt_flag is equal to 1, the following applies: - The variables sbtMinNumFourth, wPartIdx, and hPartId x is derived as follows: sbtMinNumFourths=cu_sbt_quad_flag?1:2 (8-888) wPartIdx=cu_sbt_horizontal_flag?4:sbt MinNumFourths (8-889) hPartIdx=!cu_sbt_horizontal_flag?4:sb tMinNumFourths (8-890) The variables xPartIdx and yPartIdx are derived as follows: - If cu_sbt_pos_flag is equal to 0, then xPartIdx and y PartIdx is set equal to 0. - Otherwise (cu_sbt_pos_flag is equal to 1), the variable xPa rtIdx and yPartIdx are derived as follows: xPartIdx=cu_sbt_horizontal_flag?0:( 4-sbtMinNumFourths) (8-891) yPartIdx=!cu_sbt_horizontal_flag?0: (4-sbtMinNumFourths) (8-892) - Variables xTbYSub, yTbYSub, xTb0Sub, yTb0Sub, nTb WSubandnTbHSub are derived as follows: xTbYSub=xTbY+((nTbW*((cIdx==0)?1:SubW idthC)*xPartIdx / 4) (8-893) yTbYSub=yTbY+((nTbH*((cIdx==0)?1:SubH eightC)*yPartIdx / 4) (8-894) xTb0Sub=xTb0+(nTbW*xPartIdx / 4) (8-895 ) yTb0Sub=yTb0+(nTbH*yPartIdx / 4) (8-896 ) nTbWSub=nTbW*wPartIdx / 4 (8-897) nTbHSub=nTbH*hPartIdx / 4 (8-898) - Luminance position (xTbYSub, yTbYSub), variables cIdx, nTbWSub, Take nTbHSub as input and perform the scaling and transformation as specified in 8.7.2. Invoke the process and output the (nTbWSub) x (nTbHSub) array resSam plesTb. - Residual samples resSamples[x][y](x=0..nTbW-1,y= Set nTbH(0..nTbH-1) equal to 0. - Residual samples resSamples[x][y](x=xTb0Sub..xTb 0Sub+nTbWSub-1,y=yTb0Sub..yTb0Sub+nTbHSu b-1) is derived as follows: resSamples[x][y]=resSamplesTb[x-xTb0S ub][y-yTb0Sub] (8-899) - Or, the luminance position (xTbY, yTbY), the variable cIdx, the transformation width nTbW, and and the transformation height nTbH as inputs, and the scaling and A transform process is invoked and the output is a (nTbW) x (nTbH) array of resamples.
[0225] 2.5 Low Frequency Nonseparable Transform (LFNST) (also known as Reduced Quadratic Transform (RST) / Nonseparable Quadratic Next transformation (NSST)
[0226] In JEM, the secondary transform is between the forward primary transform and the quantization (at the encoder). and is applied between the inverse quantization and the inverse linear transform (at the decoder side). As shown, 4x4 (or 8x8) secondary transformations are performed depending on the block size. For example, A 4x4 quadratic transform is applied to small blocks (e.g., min(width,height)<8), The 8x8 quadratic transform is done by splitting larger blocks (e.g. min(width, Height)>4).
[0227] Since a non-separable transformation is applied to the quadratic transformation, this is called a non-separable quadratic transformation. It is also called the configurable secondary transform (NSST). There are 35 transformation sets in total, with three non-separable transformation matrices (Camera, Two kernels, each with a 16x16 matrix, are used.
[0228] According to the intra prediction direction, the reduced 2D transform, also known as low-frequency non-separable transform (LFNST), is used. We introduce the second transformation (RST) and perform matching of four transformation sets (instead of 35 transformation sets). In this contribution, we introduce the , 16×48 and 16×16 matrices are used, respectively. For convenience of notation, we use the 16×48 We express the 16x16 transformation as RST8x8 and the 16x16 transformation as RST4x4. , which has been adopted by VVC in recent years.
[0229] FIG. 19 shows an example of a Reduced Quadratic Transform (RST).
[0230] The secondary forward and inverse transforms are separate processing steps from that of the primary transform. be.
[0231] For the encoder, we first perform a primary forward transform, then a secondary forward transform and quantization, then a parallel Decoder, CABAC bit decoding, and inverse quantization For intra-coding, the secondary inverse transform is performed first, followed by the primary inverse transform. This applies only to Feeding TUs.
[0232] 3. Exemplary technical problems solved by the technical solutions disclosed herein
[0233] The current VVC design has the following problems from the perspective of IBC mode and conversion design:
[0234] (1) The signaling of the IBC mode flag depends on the block size limit. However, However, the IBC skip mode flag is not an insurmountable problem (e.g. For example, large blocks such as Nx128 or 128xN still require IBC mode. can be done).
[0235] (2) In the current VVC, the size of a transformation block is always equal to 64 × 64. The size of the conversion block is always set to the size of the coding block. It is unclear how to handle the case where the lock size is larger than the conversion block size.
[0236] (3) IBC is a method for filtering filtered images within the same video unit (e.g., slice). However, it is possible to use a filtered sample (e.g. , via deblocking filter / SAO / ALF) is the unfiltered sample. may have less distortion than a filtered sample. may result in further coding gain.
[0237] (4) Context modeling of the LFNST matrix is a linear transformation and partition It depends on the type (single or dual tree). However, from our analysis, There is no clear dependency that the RST matrix is correlated with the linear transformation.
[0238] 4. Examples of Techniques and Embodiments
[0239] In this specification, intra block copy (IBC) is not limited to current IBC technology. It is not supported by the current slice / tile / bridge, except for the traditional intra prediction method. Reference samples within a picture / subpicture / picture / other video unit (e.g., CTU row) In one example, the reference sample is an in-loop filter. Reconstruction where filtering processes (e.g. deblocking filter, SAO, ALF) are not invoked This is a construction sample.
[0240] The size of the VPDU can be expressed as vSizeX*vSizeY. Then, vSizeX = vSizeY = min(ctbSizeY,64), and ctbS Let izeY be the width / height of the CTB. The VPDU is such that the top left position is the left edge of the picture. vSize*vSize blocks, where m*vSize, n*vSize are the blocks above. where m, n are integers. Alternatively, vSizeX / vSizeY may be a fixed number such as 64. It is a constant.
[0241] The following detailed invention should be considered as examples to illustrate the general concept. These inventions should not be construed narrowly. Moreover, these inventions do not include any can be combined in a manner
[0242] IBC Signaling and Usage
[0243] Let the size of the current block be W curr ×H curr The maximum allowable IBC block size is expressed as Size W IBCMax ×H IBCMax Let us express it as:
[0244] 1. IBC coding blocks can be split into multiple TB / T The current IBC code block size may be divided into W curr ×H curr in represent. In one example, W curr is greater than the first threshold, and / or H curr If,,is larger than a second threshold, splitting can be invoked.,So,,TB size, is smaller than the current block size. In one example, the first and / or second thresholds are MaxTbSizeY. This is the maximum transform size that can be represented. b. In one example, recursion continues until either the width or height of TU / TB is less than or equal to a threshold. This may be called objective division. i. In one example, recursive partitioning is used for inter-coded residual blocks. For example, every time the width is greater than MaxTbSizeY, If the height is greater than MaxTbSizeY, the width is halved. can. ii. Alternatively, retry until the division width and height of TU / TB are below the thresholds, respectively. This may be called recursive partitioning. c. Alternatively, all or some of the multiple TBs / TUs may contain the same motion information (e.g., BV ) may be shared.
[0245] 2. Enabling or disabling IBC depends on the maximum conversion size (e.g., MaxTbSizeY in the document. In one example, the dimensions (width and / or height) of the current luminance block or the corresponding The dimensions (width and / or height) of the luma block to be If the maximum transform size in luma samples (if any) is greater than the maximum transform size in luma samples, IBC is disabled. obtain. In one example, both the width and height of a block are the maximum transformation in luma samples. If it is larger than the size, the IBC may be invalidated. ii. In one example, either the width or height of a block is the maximum in luma samples. For larger than large transform sizes, IBC may be disabled. b. In one example, whether and / or how the IBC is to be used The notification is based on the block's dimensions (width and / or height) and / or maximum It may depend on the exchange size. i. In one example, the indication of IBC usage is set by an IBC skip flag (e.g., cu_ skip_flag) may be included in the tile / slice / brick / subpicture. 1) In one example, cu_skip_flag is curr MaxTbSi zeY greater than and / or H curr If is greater than MaxTbSizeY , may not be signaled. 2) Alternatively, cu_skip_flag can be set to W curr MaxTbSize Y or less and / or H curr If is less than or equal to MaxTbSizeY, the signal You may be notified. 3) In one example, cu_skip_flag is curr MaxTbSi zeY greater than and / or H curr If is greater than MaxTbSizeY , may be signaled, but must be 0 in the conformance bitstream. . 4) Furthermore, if the current tile / slice / brick / subpicture is When the image is a row / slice / brick / subpicture, the above method may be called. ii. In one example, the indication of the use of IBC is set by an IBC mode flag (e.g., pre d_mode_ibc_flag) may be included. 1) In one example, pred_mode_ibc_flag is set to W curr M greater than axTbSizeY and / or H curr is less than MaxTbSizeY If ,is also larger, it may not be signaled. 2) Alternatively, pred_mode_ibc_flag can be set to W curr Max is less than or equal to TbSizeY and / or H curr is less than or equal to MaxTbSizeY If so, it may be signalled. In one example, pred_mode_ibc_flag is curr M greater than axTbSizeY and / or H curr is less than MaxTbSizeY If it is larger, it may be signaled, but in the conformance bitstream it must be 0. It is necessary to do so. iii. In one example, if certain zero-forcing conditions are met, the IBC Code The residual blocks of the coding block may be forced to all zeros. 1) In one example, W curris greater than MaxTbSizeY and / or H curr If is greater than MaxTbSizeY, the remainder of the IBC coding block is The difference block may be all zeroed. 2) In one example, W curr is greater than the first threshold (e.g., 64 / vS izeX) and / or H curr is greater than the second threshold (e.g., 64 / vSi zeY), the residual block of the IBC coding block is forced to be all zeros. This is also fine. 3) Alternatively, in the above case, the coding block flags (e.g., cu_cb f,tu_cbf_cb,tu_cbf_cr,tu_cbf_luma) signal notification You can skip this step. 4) Alternatively, coding block flags (e.g., cu_cbf, tu_c bf_cb, tu_cbf_cr, tu_cbf_luma) signaling remains unchanged. However, a conforming bitstream shall satisfy this flag as 0. It shall be so. iv. In one example, coding block flags (e.g., cu_cbf, tu_ cbf_cb,tu_cbf_cr,tu_cbf_luma) whether to signal may depend on the usage of the IBC and / or the threshold of acceptable IBC size. 1) In one example, the current block is in IBC mode and W curr Max Larger than TbSizeY and / or H curr is greater than MaxTbSizeY If not, the coding block flags (e.g., cu_cbf, tu_cbf_cb, t u_cbf_cr,tu_cbf_luma) may be skipped. 2) In one example, the current block is in IBC mode and W curr is the first A threshold (e.g., 64 / vSizeX) and / or H greater than curr is a second threshold. If the value is greater than 64 / vSizeY (for example, 64 / vSizeY), the signal of the coding block flags Number notification (e.g., cu_cbf, tu_cbf_cb, tu_cbf_cr, tu_cb f_luma) may be skipped.
[0246] 3. Whether to signal the use of IBC skip mode depends on the size of the current block. The dimension (width and / or height) and the maximum allowed IBC block size (e.g., vSize vSizeX / vSizeY). In one example, cu_skip_flag is curr W IBCMax Greater than If it is too large, and / or H curr H IBCMax If it is greater than It's not necessary. i. Alternatively, W curr W IBCMax is less than or equal to and / or H curr but H IBCMax cu_skip_flag may not be signaled if: . b. Alternatively, the current tile / slice / brick / subpicture is When the object is a / brick / subpicture, the above method may be called. c. In one example, W IBCMax and H IBCMax are both equal to 64. d. In one example, W IBCMax Set to vSizeX and H IBCMax vSi Set it equal to zeY. e. In one example, W IBCMaxis set to the width of the largest transform block, and H IBCM ax is set equal to the height of the largest transform block size.
[0247] Recursive division of IBC / Inter-coding blocks
[0248] 4. IBC / Inter-coding block (CU) does not signal partition information. (e.g., block size is larger than the maximum conversion block size) and multiple TB / T When a CU is divided into U, instead of signaling motion information once for the entire CU, multiple It is proposed to signal or derive motion information. In one example, all TB / TUs are in the same AMVP / Me The rge flag may be shared. b. In one example, the motion candidate list may be constructed once for the entire CU, but Different TBs / TUs may be assigned different candidates in the list. In one example, the index of the assigned candidate is The address may be coded as follows: c. In one example, the motion candidate list includes motion information of neighboring TBs / TUs in the current CU. It may be constructed without it. i. In one example, the motion candidate list is a list of spatially neighboring blocks for the current CU. It is constructed by accessing motion information (adjacent or non-adjacent) This is also fine.
[0249] 5. IBC / Inter-coding block (CU) does not signal partition information. is split into multiple TB / TUs (e.g., the block size is less than the maximum transform block size If the second TU / TB has at least one reconstructed or predicted The first TU / TB may be predicted based on the measured samples. a.BV validation may be performed separately for each TU / TB.
[0250] 6. IBC / Inter-coding block (CU) does not signal partition information. is split into multiple TB / TUs (e.g., the block size is less than the maximum transform block size If the second TU / TB is greater than 1, then any reconstructed or predicted samples in the second TU / TB are The pull makes the first TU / TB unpredictable. a.BV validation may be performed on the entire coding block.
[0251] On generating predicted blocks for IBC coding blocks
[0252] 7. Using filtered reconstructed reference samples for IBC predicted block generation It is proposed to do so. In one example, the filtered reconstructed reference samples are The image may be generated by applying a bilateral filter / SAO / ALF. b. In one example, for an IBC coding block, at least one reference sample The sample is filtered and at least one reference sample is unfiltered. .
[0253] 8. Filtered and unfiltered reconstructed reference samples Both samples may be used to generate an IBC prediction block. In one example, the filtered reconstructed reference samples are The image may be generated by applying a bilateral filter / SAO / ALF. b. In one example, for predictions for an IBC block, a portion of the prediction is The rest are the unfiltered samples. It may also be from.
[0254] 9. For IBC prediction block generation, the filtered values of the reconstructed reference samples are Whether to use the filtered or unfiltered values depends on the position of the reconstruction sample. This may depend on the location. In one example, this determination is based on the CT data covering the current CTU and / or the reference sample. It may depend on the relative position of the reconstructed sample with respect to U. b. In one example, the reference sample is outside or in a different location than the current CTU / CTB. It is located within the CTU / CTB and has a large distance (e.g., 4 pixels) to the CTU boundary. If so, the corresponding filtered samples may be used. c. In one example, if the reference sample is within the current CTU / CTB, filtering The unmapped reconstructed samples may be used to generate the prediction block. d. In one example, if the reference sample is outside the current VPDU, the corresponding filter A filtered sample may be used. e. In one example, if the reference sample is within the current VPDU, it is filtered. The unsampled reconstructed samples may be used to generate the prediction block.
[0255] About MVD coding
[0256] Motion vector (or block vector), or motion vector difference or block vector The vector difference is expressed as (Vx, Vy).
[0257] The absolute value of the component of the motion vector represented by AbsV (e.g., Vx or Vy) is The first part is AbsV - ((AbsV >> N) << N) (e.g., AbsV & (1 << N ), the least significant N bits), and the other part is (AbsV >> N) (e.g., the remaining most significant bits) and is proposed to be divided into two parts. Each part may be coded individually be. a. In one example, each component of one motion vector or the difference of motion vectors may be coded separately be. i. In one example, the first part is coded with a fixed - length coding, e.g., N bits be coded. 1) Alternatively, a first flag may be coded to indicate whether the first part is 0 be. a. Further, alternatively, if not, the value obtained by subtracting 1 from the value of the first part is coded. ii. In one example, the second part having the sign information of the MV / MVD may be coded by the current MV D coding method. b. In one example, the first part of each component of one motion vector or the difference of motion vectors may be coded together, and the second part may be coded separately . i. In one example, the first parts of Vx and Vy may be formed to be a new positive value in 2N bits ( e.g., (Vx << N)+Vy)). 1) In one example, the first flag may be coded to indicate whether the new positive value is equal to 0 be. a. Further, alternatively, if not, the value obtained by subtracting 1 from the new positive value is coded be. 2) Alternatively, this new positive value can be coded using fixed length coding or exponential Golomb coding. The bit stream may be coded by a coding scheme (eg, EG-0th). ii. In one example, each component of one motion vector having MV / MVD sign information The second part of the minute may be coded using the current MVD coding method. . c. In one example, coding a first portion of each component of a motion vector together. The first part may be coded together with the second part. d. In one example, N is a positive value, such as 1 or 2. e. In one example, N may depend on the precision of the MV used to store the motion vectors. In one example, the MV precision used to store the motion vectors is 1 / 2M pixels. If so, set N to M. 1) In one example, the MV precision used to store the motion vectors is 1 / 16 pixels. In some cases, N is equal to 4. 2) In one example, the MV resolution used to store the motion vectors is 1 / 8 pixel. In this case, N is equal to 3. 3) In one example, the MV resolution used to store the motion vectors is 1 / 4 pixel. In this case, N is equal to 2. f. In one example, N is the current motion vector (e.g., block vector in IBC). The MV accuracy of the MV (torque) may be dependent on the i. In one example, if BV is accurate to one pixel, then N may be set to 1.
[0258] About SBT
[0259] 11. Signal maximum CU width and / or height indication to allow sub-block transformations Whether or not to notify may depend on the maximum allowed transform block size. In one example, a maximum CU width and a maximum CU height to allow for sub-block transformations However, you can use 64 or 32 luma samples (e.g., sps_sbt_max_size_64_ flag) depends on the value of the maximum allowed conversion block size (e.g., sps_ma x_luma_transform_size_64_flag). In one example, sps_sbt_max_size_64_flag is _sbt_enabled_flag and sps_max_luma_transform _size_64_flag is signaled only if both _size_64_flag and _size_64_flag are true.
[0260] About LFNST matrix indexing
[0261] 12. Using LFNST / LFNST matrix indexing (e.g. lfnst_idx) It is proposed to use two contexts to code the The selection is based purely on the use of the partition tree. g. In one example, for a single tree partition, one context is used. In the case of dual trees, a different context is used regardless of the dependency on the primary transformation. do.
[0262] 13. Based on the use of dual trees and / or slice types and / or color components Use of LFNST / LFNST matrix index (e.g., lfnst_idx) It is suggested to code the following:
[0263] 5. Additional Exemplary Embodiments
[0264] [ka]
[0265] 5.1 Embodiment #1
[0266] [Table 13]
[0267] 5.2 Example #2
[0268] [Table 14]
[0269] FIG. 20 is an exemplary video processing system in which various techniques disclosed herein may be implemented. 2000. Various implementations of the modules of system 2000. The system 2000 may include an input for receiving video content. The video content may include a video output unit 2002. The video content may be in a raw or uncompressed format. For example, the image may be received as 8 or 10 bit multi-module pixel values, or may be compressed or The input unit 2002 may receive the signal in a coding format. It can also refer to a network interface, a peripheral bus interface, or a memory interface. Examples of network interfaces are Ethernet, passive optical network, Wired interfaces such as Passive Optical Network (PON) and Wi-Fi or This includes wireless interfaces such as cellular interfaces.
[0270] The system 2000 may implement the various coding or encoding methods described herein. The coding module 2004 may include a coding module 2004 that can The controller 2004 controls the signal flow from the input unit 2002 to the output of the coding module 2004. The average bit rate of the video may be reduced to generate a coded representation of the video. This coding technique is sometimes called video compression or video transcoding. The output of the coding module 2004 is represented by module 2006. , may be stored or transmitted via a connected communication. 2. Received, stored or transmitted video bitstream (or codec) The representation is used by the module 2008 to display the The bitstream may generate pixel values or displayable images that are sent to the computer 2010. The process of generating a user-viewable image from a representation is called image expansion. Furthermore, certain video processing operations are sometimes referred to as "coding" operations or tools. However, the coding tools or operations are used in the encoder and the corresponding decoding tools or operations are It is understood that the operation that reverses the result of coding is performed by the decoder. Let it be.
[0271] An example of a peripheral bus interface unit or a display interface unit is a Universal Serial Bus (USB) or High-Definition Multimedia Interface (HDM I (registered trademark) or display port. Examples of interfaces are Serial Advanced Technology Attachment (SATA), PCI, The technology described in this specification is applicable to mobile phones, laptops, etc. computers, smartphones, or other devices capable of digital data processing and / or image display The present invention may be implemented in a variety of electronic devices, such as electronic devices.
[0272] FIG. 21 is a block diagram of a video processing device 2100. The device 2100 is The device 2100 may be used to implement one or more of the methods described herein. , tablets, computers, Internet of Things (IoT) receivers, etc. The device 2100 may include one or more processing units 2102, one or more memories 2104, and and video processing hardware 2106. 2 may be configured to implement one or more of the methods described herein. 2104 may be used to implement the methods and techniques described herein. The video processing hardware 2106 may be used to store data and code. may be used to implement the techniques described herein in hardware circuitry.
[0273] In the embodiments of the present invention, the following solutions can be implemented as preferred solutions.
[0274] The following solutions combine the additional techniques described in the previous chapter (e.g., item 1) Both may be implemented.
[0275] 1. A video processing method (e.g., method 2200 shown in FIG. 22), comprising: Coding representation of video blocks in the video domain based on copy tools and video block Allows splitting of video blocks into multiple transform units for conversion to and from and determining whether the video block is a video block having a coding condition. , determining (2202) that this coding representation omits signaling of this split; and performing a transformation based on the division (2204).
[0276] 2. The method according to solution 1, wherein the coding conditions correspond to the dimensions of the video block. method.
[0277] 3. The split is permitted because the width of the video block is greater than a first threshold. or the height of the image block is greater than a second threshold. Therefore, it is determined that the division is permitted.
[0278] 4. The first threshold and / or the second threshold are a maximum transformation for the image domain. The method according to solution 3, which is the size.
[0279] 5. The method according to any one of solutions 1 to 4, wherein the division is applied recursively to the image blocks. Method of posting.
[0280] The following solutions combine the additional techniques described in the previous chapter (e.g., item 2). Both may be implemented.
[0281] 6. A method for processing an image, comprising: coding representation of an image block of an image domain; For conversion to and from a block, the transformation of the video block is calculated based on the maximum transformation size for the video domain. Determine if the Intra Block Copy (IBC) tool is enabled for and performing a conversion based on the determination.
[0282] 7. The image block is a chroma block, and the maximum transform size is the corresponding luma block. Correspondingly, IBC is disabled due to the maximum transformation size being larger than the threshold. Solution 6.
[0283] 8. A syntax element in the coding representation defines a dimension or measure of the video block. A solution indicating whether the IBC tool is enabled by the maximum conversion size that is met. The method according to solution 6 or 7.
[0284] 9. If the IBC tool is determined to be enabled, this transformation is performed using the zero forcing Based on a condition, we force the residual block for an image block to be all zero. The method according to any one of Solutions 6 to 8, further comprising:
[0285] The following solutions combine the additional techniques described in the previous chapter (e.g., item 3). Both may be implemented.
[0286] 10. A method for processing an image, comprising: For conversion to and from blocks, the signal transmission of the Intra Block Copy (IBC) tool for conversion Determining whether knowledge is included in the coding representation and making changes based on this determination and performing a conversion, the conversion including converting the width and / or height of the image block and the image area. Based on the maximum allowable IBC block size for,the method.
[0287] 11. The width is greater than the first threshold or the height is greater than the second threshold. Therefore, the method according to solution 10 does not involve signaling.
[0288] The following solutions combine the additional techniques described in the previous chapter (e.g., item 4). Both may be implemented.
[0289] 12. A video processing method, comprising: For conversion between the coding representation of a video block in the video domain and a video block, Determine whether it is permitted to split a block into multiple transform units (TUs) for transformation. and performing a transformation based on the determination, the transformation being performed on the plurality of TUs. The method includes using separate motion information.
[0290] 13. If multiple TUs share the same advanced motion vector predictor or merge mode flag, 13. The method of claim 12, wherein the
[0291] 14. During the transformation, the motion information for one of the plurality of TUs is The method according to solution 12, wherein the motion information of another TU of the first TU is not used.
[0292] The following solutions combine the additional techniques described in the previous chapter (e.g., item 5). Both may be implemented.
[0293] 15. Solution 1, where a first TU of a plurality of TUs is predicted from a second TU of a plurality of TUs The method according to any one of 2 to 14.
[0294] The following solutions combine the additional techniques described in the previous chapter (e.g., item 6). Both may be implemented.
[0295] 16. Prediction of a first TU of the plurality of TUs from a second TU of the plurality of TUs is disabled; The method according to any of Solutions 12 to 15.
[0296] The following solutions combine the additional techniques described in the previous chapter (e.g., item 7). Both may be implemented.
[0297] 17. A method for processing an image, comprising: For conversion to or from a block, the intrablock copy tool is enabled for this conversion. determining that the block is a block of the original; and performing the conversion using an intra-block copy tool. and making predictions of image blocks using the filtered reconstruction samples of the image domain. To do, how to do.
[0298] 18. The filtered reconstructed samples are in-looped to the reconstructed samples. The in-loop filter includes samples generated by applying a filter to the in-loop Locked filter, bilateral filter, or sample adaptive offset or adaptation 18. The method of solution 17, which is a loop filter.
[0299] The following solutions combine the additional techniques described in the previous chapter (e.g., item 8). Both may be implemented.
[0300] 19. Based on the rules, the prediction is further The method according to any of Solutions 17-18, selectively using a derived sample.
[0301] The following solutions combine the additional techniques described in the previous chapter (e.g., item 9). Both may be implemented.
[0302] 20. The method according to solution 19, wherein the rule depends on the position of the reconstructed sample. method.
[0303] 21. The position of the reconstructed sample used in the rule is determined by the code of the video block. The relative position of the reconstructed sample with respect to the ing tree unit, as described in solution 20 The method of.
[0304] The following solutions may be implemented together with the additional techniques described in the items described in the previous chapter (for example, item 10). And may be implemented.
[0305] 22. A video processing method including performing conversion between a video including a plurality of video blocks and a coding representation of the video, wherein at least some of the video blocks are coded using motion vector information, and the motion vector information is represented in a coding representation as a first part based on the first least significant bit of the absolute value of the motion vector information and as a second part based on the remaining more significant bits higher than the first least significant bit. And at least some of the video blocks are coded using motion vector information, and the motion vector information is represented in a coding representation as a first part based on the first least significant bit of the absolute value of the motion vector information and as a second part based on the remaining more significant bits higher than the first least significant bit. And the motion vector information is represented in a coding representation as a first part based on the first least significant bit of the absolute value of the motion vector information and as a second part based on the remaining more significant bits higher than the first least significant bit. As a first part based on the first least significant bit of the absolute value of the motion vector information, and as a second part based on the remaining more significant bits higher than the first least significant bit. And as a second part based on the remaining more significant bits higher than the first least significant bit, represented in a coding representation.
[0306] 23. Divide the absolute value of the motion vector V represented as AbsV into a first part equal to AbsV - ((AbsV > N) << N) or AbsV & (1 << N), and the second part Is equal to (AbsV >> N), and N is an integer, the method described in solution 22. Is equal to (AbsV >> N), and N is an integer, the method described in solution 22.
[0307] 24. The first part and the second part are separately coded in the coding representation, the method according to any one of solutions 22 to 23. The first part and the second part are separately coded in the coding representation, the method according to any one of solutions 22 to 23.
[0308] 25. Code the first part of the x motion vector together at the same position as the first part of the y motion vector, the method according to any one of solutions 22 to 24. Code the first part of the x motion vector together at the same position as the first part of the y motion vector, the method according to any one of solutions 22 to 24.
[0309] 26. Code the second part of the x motion vector and the second part of the y motion vector separately, the method described in solution 25. Code the second part of the x motion vector and the second part of the y motion vector separately, the method described in solution 25.
[0310] 27. Solutions 22-26, where N is a function of the precision used to store the motion vectors. Any method as described above.
[0311] The following solutions incorporate additional techniques described in the previous chapter (e.g., item 11). It may also be implemented in conjunction with
[0312] 28. For conversion between coding representations of video blocks in the video domain and video blocks, determining whether a sub-block conversion tool is enabled for conversion; performing the conversion based on a determination of a maximum allowable conversion for the image region; Based on this maximum allowable transformation block size, the condition The video processing method includes signaling in this coding representation with.
[0313] The following solutions are based on the additional steps described in the previous chapter (e.g., steps 12 and 13). The present invention may be implemented in conjunction with the techniques described above.
[0314] 29. A method for processing an image, comprising: Whether low frequency non-separable transform (LFNST) is used during conversion to convert to or from the clock. and performing a conversion based on the determination, the determination being Based on the coding conditions that apply to the lock, LFNST and The matrix index of is coded in the coding representation using two contexts. The way it is done.
[0315] 30. The coding conditions include a partition tree to be used, or Solution 29 includes a slice type of the block, or a color component identity of the image block. The method described.
[0316] 31. The image domain includes a coding unit, and the image block is a The method according to any of Solutions 1 to 30, wherein the pixel corresponds to a luminance or chrominance component of
[0317] 32. The transform generates the bitstream representation from the current video block. 32. The method according to any one of Solutions 1 to 31, comprising:
[0318] 33. The conversion comprises: converting a sample of the current video block from the bitstream representation to 32. The method according to any of Solutions 1-31, comprising generating
[0319] 34. A process configured to implement the method according to any one or more of solutions 1 to 33. A video processing device having a processing device.
[0320] 35. A method according to any one or more of solutions 1 to 33, which, when executed, is implemented in a processing device. A computer readable medium having stored thereon code for causing a
[0321] 36. A method, system or apparatus as described herein.
[0322] FIG. 23 is a flow chart illustrating a video processing method 2300 according to the present technology. 300, in step 2310, compares a current block in the image area of an image with a Splitting the current block into multiple transformation units for conversion to and from the coding representation This includes determining whether to allow the current block based on the characteristics of the current block. In the block representation, the signaling of the split is omitted. , and performing a conversion based on that determination.
[0323] In some embodiments, the characteristics of the current block include a dimension of the current block. In some embodiments, if the width of the current block is greater than a first threshold, the division In some embodiments, the height of the current block is converted to the If it is greater than the threshold, the split is invoked for the transformation. In the present embodiment, the division of the current block is performed when one dimension of the plurality of transform units is equal to or smaller than a threshold. In some embodiments, the method further comprises recursively splitting the current block until Then, the width of the current block is recursively halved until it is equal to or smaller than the first threshold. In some embodiments, the height of the current block is less than or equal to the second threshold. The height of the current block is recursively divided in half until In the method, the width of the current block is equal to or smaller than a first threshold value and the height of the current block is equal to or smaller than a second threshold value. Recursively split the current block until it is equal to or smaller than the threshold. In some embodiments, the first threshold is equal to the maximum transform size for the image domain. The second threshold is equal to the maximum transform size for the image domain.
[0324] In some embodiments, at least a subset of the plurality of transform units In some embodiments, the same motion information is shared between the current block and the The advanced motion vector prediction mode or In some embodiments, the motion information is stored in the In some embodiments, the metric is determined multiple times for the current block in the loading representation. In this case, we build a motion candidate list once for the current block and then apply it to multiple transform units. are assigned different candidates in the motion candidate list. Therefore, the indices of the different candidates are signaled in the coding representation. In the embodiment, for a transform unit of a multiple transform unit, the motion candidate list is currently In some implementations, the motion information of neighboring transform units in the block is not used. In this embodiment, the motion candidate list is generated by using the motion information of blocks spatially adjacent to the current block. In some embodiments, the first conversion unit is constructed using a second conversion unit. The reconstructed sample is based on at least one reconstruction sample in the set. In the example, a verification check is performed separately for each of the multiple transformation units. In some embodiments, the first transform unit may generate a reconstructed sample in another transform unit. In some embodiments, after reconstructing the block, A validity check is performed on the block.
[0325] FIG. 24 is a flow chart illustrating a method 2400 of video processing in accordance with the present technology. 2400, in step 2410, performs coding of the current block of the image region of the image and the image. Filtered reconstructed reference samples in the image domain for conversion to and from the filtering representation Based on the,prediction,of the current block using the Intra Block Copy (IBC) mode. The method 2400 includes determining the measurement sample in operation 2420. This includes performing a conversion based on the
[0326] In some embodiments, the filtered reconstructed reference sample is a non-blended Blocked filtering operation, bilateral filtering operation, sample adaptive offset At least one of the following filtering operations: adaptive loop filtering (SAO) In some embodiments, the I Using the BC model to determine the predicted samples of the current block is a In some embodiments, the method further includes the step of: , based on the filtered reconstructed reference sample, in the first part of the current block Determine the predicted sample in the filter based on the unfiltered reconstructed reference sample. In some embodiments, the prediction sample for the second portion of the current block is determined by the first prediction sample. In, the filtered reconstructed reference sample or the unfiltered The decision whether to use the current sample or the reconstructed reference sample to determine the predicted sample for the block depends on the For a coding tree unit or a sample of the coding tree unit, In some embodiments, the filtered prediction sample is based on the position of the predicted sample. The reconstructed reference sample is the sample that is located outside the current coding tree unit. In some embodiments, the prediction sample is reconstructed using the The filtered reconstructed reference samples are the ones that the predicted samples matched to the coding tree units. If the coding tree unit is located within the boundary of the coding tree unit and has a distance D of 4 pixels or more from the boundary of the coding tree unit, In some embodiments, the filter is used to reconstruct the prediction samples. The unsampled reconstructed reference sample is the same as the predicted sample in the current coding tree. If it is located within a unit, it is used to reconstruct the prediction sample. In an embodiment, the filtered reconstructed reference sample is a prediction sample that is a current hypothesis. If it is located outside the virtual pipeline data unit, then In some embodiments, an unfiltered reconstruction reference If the predicted sample is located within the current virtual pipeline data unit, is used to reconstruct the prediction samples.
[0327] FIG. 25 is a flow chart illustrating a video processing method 2500 according to the present technology. 500, in step 2510, combines a current block of an image with a coding representation of the image. To convert, we use skip for the Intra Block Copy (IBC) coding model. Determine whether the syntax element indicating the use of the coding mode is included in the coding expression according to the rules. This rule specifies that the signaling of syntax elements is based on the size and / or or the maximum allowed value for a block coded using the IBC coding model. The method 2500 also provides that the determination is based on the volume size in operation 2520. This includes performing conversions based on the specified
[0328] In some embodiments, the rule is that the width of the current block is greater than the maximum allowed width. If the syntax element is not included in the coding representation, the syntax element is omitted. In some embodiments, the rule is: if the height of the current block is greater than the maximum allowed height In some cases, the syntax element is omitted in the coding representation. In an embodiment, the rule is that when the width of the current block is less than or equal to the maximum allowed width, In some embodiments, the coding expression includes a syntax element. and the rule is that when the height of the current block is less than or equal to the maximum allowed height, the syntax element It is defined that the coding expression includes:
[0329] In some embodiments, the current block is in the image area of the image, and this rule Applicable if the image region contains I-tiles, I-slices, I-bricks, or I-subpictures In some embodiments, the maximum allowable width or height is 64. In some embodiments, the maximum allowable width or maximum allowable height is determined by the virtual pipeline data. Equal to the unit dimension. In some embodiments, the maximum allowable width or maximum allowable height. is equal to the maximum dimension of the conversion unit.
[0330] FIG. 26 is a flow chart illustrating a video processing method 2600 according to the present technology. The method 2600 may, at step 2610, include: For the conversion between determining at least one context for coding the selected index; This LFNST coding model uses forward linear transform and quantization scheme during encoding. applying a forward quadratic transform between the quantization step and the dequantization step during decoding; The method includes applying an inverse secondary transform between a forward secondary transform and an inverse primary transform. The size of the directional secondary transform is smaller than the size of the current block. The context is the performance of the current block without taking into account the forward or inverse linear transformation. The method 2600 also includes, in operation 2620, determining whether the and performing the conversion according to that determination.
[0331] In some embodiments, the partition type is a single tree partition. If there is one, only one context is used to code the index. In some embodiments, the partition type is a dual tree partition. Then, we use two contexts to code the index.
[0332] In some embodiments, a low-frequency non-separable transform (LFNST) coding model The usage index is the feature associated with the block, the party associated with the current block, Coding representation based on features including partition type, slice type or color components Included in.
[0333] FIG. 27 is a flow chart illustrating a video processing method 2700 in accordance with the present technology. The method 2700, in step 2710, performs a step of detecting a current block of an image region of an image and a code of the image. For conversion to and from the 3D representation, the maximum conversion unit size applicable to the image domain is used. , whether the intra block copy (IBC) coding model is enabled The method 2700 also includes, in accordance with the determination, at operation 2720: This includes performing conversions.
[0334] In some embodiments, the dimensions of the current block or a size corresponding to the current block. If the dimension of the luma block is larger than the size of the maximum transform unit, the IBC coding model In some embodiments, the width of the current block or the current block size is invalidated. If the width of the luminance block corresponding to the block is greater than the width of the maximum conversion unit, the IBC codec In some embodiments, the current block height or If the height of the luminance block corresponding to the current block is greater than the maximum transformation height, the IBC control In some embodiments, the coding model in the coding representation is invalidated. The method for signaling the use of the IBC coding model depends on the dimensions of the current block and the Based on the size of the large transform unit. In some embodiments, the IBC coding model Signaling the use of the rule is a syntax that indicates the skip mode of the IBC coding model. In some embodiments, the syntax element includes an I type in the coding representation. It is contained in an I-slice, I-brick, or I-subpicture.
[0335] In some embodiments, signaling the use of the IBC coding model comprises: In some embodiments, the syntax element indicates the IBC mode. is greater than the width of the maximum translation unit, or the height of the current block is greater than the maximum translation unit If the height of the In the form, the width of the current block is less than or equal to the width of the maximum transform unit, or the current If the block height is less than or equal to the maximum conversion unit height, the syntax element is a coding representation In some embodiments, the width of the current block is the width of the maximum transform unit. If it is greater than or the current block height is greater than the maximum translation unit height, The syntax element is included in the coding representation and is set to 0.
[0336] In some embodiments, the IBC coding model is enabled for the current block. When enabled, the sample in the residual block corresponding to the current block is is set to 0. In some embodiments, the rule is that the width of the current block is the maximum The width of the unit is greater than the current block's height, or the height of the maximum conversion unit is greater than the current block's height. If it is greater than 0, the sample is set to 0. The rule is that if the width of the current block is greater than a first threshold, or if the height of the current block is greater than a second threshold, It specifies that if it is greater than a threshold of 2, the sample is set to 0. In this case, the first threshold is 64 / vSizeX, where vSizeX is the virtual pipeline data. In some embodiments, the second threshold is 64 / vSizeY. where vSizeY is the height of the virtual pipeline data unit. In this embodiment, the syntax flag for the coding block is omitted in the coding representation. In some embodiments, the syntax flags for a coding block are It is set to 0 in the binning representation.
[0337] In some embodiments, for a coding block in the coding representation The signaling of syntax flags is based on the use of the IBC coding model. In a state, the IBC coding model is enabled for the current block, and when the size of the block is larger than the size of the maximum conversion unit, the syntax flag in the coding representation can be omitted. In some embodiments, for the current block, when the IBC coding model is enabled and the size of the block is larger than the threshold related to the virtual pipeline data unit the syntax flag is omitted in the coding representation.
[0338] FIG. 28 is a flowchart showing a video processing method 2800 according to the present technology. Method 2 800 includes, in step 2810, determining to divide the absolute value of the component of the motion vector for the current block into two parts in order to convert the current block of the video and the coding representation of the video. Let the motion vector be represented as (Vx, Vy), its component be represented as V i, and Vi be either Vx or Vy. The first part of the two parts is equal to |Vi | - ((|Vi| >> N) << N), and the second part of the two parts is equal to |Vi| >> N, where N is a positive integer. The two parts are coded separately in the coding representation. Method 2800 also includes, in operation 2820, performing the conversion according to the determination.
[0339] In some examples, the two components Vx and Vy are signaled separately in the coding representation. In some examples, the first part is coded with a fixed length of N bits. In some embodiments, the first part of component Vx and the first part of component Vy are coded together, and the second part of component Vx and the second part of component Vy are coded together. They are coded separately. In some embodiments, the first part of component Vx and the first part of component Vy are coded as a value having a length of 2N bits. In some embodiments, the value is equal to (Vx << N) + Vy). In some examples it is coded using a fixed-length coding process or a Rice coding process.
[0340] In some embodiments, the first part of component Vx and the first part of component Vy are coded together, and the second part of component Vx and the second part of component Vy are coded together. In some examples, a syntax flag is included in the coding representation to indicate whether the first part is equal to 0. In some examples, the first part has a value of K, where K ≠ 0, and the value of (K - 1) is coded in the coding representation. In some embodiments, the second part of each component having sign information is coded using a motion vector differential coding process. In some examples, N is 1 or 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, the second part of each component having sign information is coded using a motion vector differential coding process. In some examples, N is 1 or 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, the second part of each component having sign information is coded using a motion vector differential coding process. In some examples, N is 1 or 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, the second part of each component having sign information is coded using a motion vector differential coding process. In some examples, N is 1 or 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, the second part of each component having sign information is coded using a motion vector differential coding process. In some examples, N is 1 or 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, N is 1 or 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, N is determined by the accuracy of the motion vector used for storing the motion vector data. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, when the accuracy of the motion vector is 1 / 16 pixel, N is 4. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, when the accuracy of the motion vector is 1 / 8 pixel, N is 3. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, when the accuracy of the motion vector is 1 / 4 pixel, N is 2. In some embodiments, N is determined based on the motion vector accuracy of the current motion vector. In some embodiments, when the accuracy of the motion vector is 1 pixel, N is is 1.
[0341] FIG. 29 is a flow chart illustrating a video processing method 2900 in accordance with the present technology. The method 2900 may, at step 2910, include: For conversion to and from, the subspace in the current block is calculated based on the maximum allowable size of the conversion block. This includes determining information about the maximum size of the current block that allows block-to-block conversion. The method 2900 also includes performing a conversion according to the determination at operation 2920. include.
[0342] In some embodiments, allowing sub-block transformations on the current block The maximum size of the current block corresponds to the maximum allowed size of the transformation block. In some embodiments, the maximum dimension of the current block is 64 or 32. In the example, the first syntax flag in the slice parameter set is the sub-block transformation is enabled, and the second syntax flag in the slice parameter set is , indicates that the maximum allowed size of a conversion block is 64, the maximum size of the current block A syntax flag indicating this is included in the coding representation.
[0343] In some embodiments, the transformation generates a coding representation from the current block. In some embodiments, the conversion includes converting the coding representation to a current This involves generating samples for the block.
[0344] In the above solution, the conversion is carried out by changing the previous decision step during the encoding or decoding operation. using the results of a particular encoding or decoding step (e.g., using a particular encoding or decoding step, or not) to arrive at the transformation result.
[0345] Some embodiments of the disclosed technology may include a method for enabling video processing tools or modes. In one example, determining or judging that a video processing tool or mode is enabled. When a video block is processed, the encoder uses this tool or mode to use or implement a tool, but results in The resulting bitstream does not necessarily need to be modified; i.e., the block of video The conversion from the input video to a bitstream representation is made by a video processing tool or Use this video processing tool or mode if the tool or mode is enabled. When a video processing tool or mode is enabled in The bitstream is modified based on the video processing tool or mode. i.e., the video processing tools or The mode is used to convert from a bitstream representation of the image to blocks of the image.
[0346] Some embodiments of the disclosed technology include disabling video processing tools or modes. In one example, determining or judging that a video processing tool or mode is disabled. When enabled, the encoder converts blocks of video into a bitstream representation of the video. In another example, you may not use this tool or mode to If the mode is disabled, the decoder will not You know that the bitstream has not been modified using any video processing tools or modes. The bitstream is then processed.
[0347] The disclosed and other solutions, examples, embodiments, modules, The implementation of the functions and operations may be implemented in any manner including the structures disclosed herein and their structural equivalents. Any digital electronic circuit, including computer software, firmware or may be implemented in hardware, or in a combination of one or more thereof. The disclosed and other embodiments may include one or more computer program products. , for example to be implemented by or to control the operation of a data processing apparatus. one of computer program instructions encoded on a computer readable medium for controlling The computer-readable medium may be implemented as one or more modules. -readable storage device, machine-readable storage substrate, memory device, material providing a machine-readable propagating signal - Patents.com or a combination of one or more of these. The term may refer to, for example, a programmable processing device, a computer, or a plurality of processing devices, or any apparatus, device, or device for processing data, including a computer; This device includes a machine that, in addition to the hardware, also includes the execution environment of the computer program. The code that creates the system, e.g., processor firmware, protocol stacks, database management The components that make up the operating system, the management system, or a combination of one or more of these A propagated signal may include an artificially generated signal, e.g., a machine-generated signal. A digital signal is an electrical, optical, or electromagnetic signal that encodes information for transmission to an appropriate receiving device. It is generated to
[0348] Computer programs (programs, software, software applications) , script, or code) is a language that can be compiled or interpreted. It can be written in any form of programming language, including the Module suitable for use as a standalone program or in any computing environment. Deploy in any form, including as modules, components, subroutines, or other units. A computer program does not necessarily have to deal with files in a file system. Programs may not respond to requests from other programs or files that hold data. recorded in one or more scripts stored in a markup language document The program may be stored in a single file dedicated to the program, or in multiple files. A tuning file (e.g., one or more modules, subprograms, or pieces of code) A computer program may be stored in a file (a file storing the program). A single computer located at a site or a communication network distributed across multiple sites It can also be deployed to run on multiple computers interconnected by do.
[0349] The processes and logic flows described herein operate on input data and produce output. execute one or more computer programs to perform functions by creating The processing and logic flow may be implemented by one or more programmable processing devices. The PLC also uses application-specific logic circuits, such as field programmable gate arrays (FPGAs). This can be done by a chip array (Chip Array) or an ASIC (Application Specific Integrated Circuit), and the device can also It may also be implemented as special purpose logic circuitry.
[0350] Suitable processing devices for the execution of a computer program include, for example, general purpose and special purpose microprocessors. Both the processor and any one or more processors of any kind of digital computer Typically, a processing unit includes a read-only memory or a random access memory. The essential elements of a computer are the A processor for executing and one or more memory devices for storing instructions and data. Generally, a computer has one or more mass storage devices for storing data. The device may include, for example, a magnetic, magneto-optical, or optical disk. to receive data from or transfer data to these mass storage devices. However, the computer may be operatively coupled to such a device. It is not necessary to have a computer suitable for storing computer program instructions and data. Computer readable media includes any form of non-volatile memory, media, and memory devices. Including, for example, EPROM, EEPROM, flash storage, magnetic disks, e.g. Internal hard disk or removable disk, magneto-optical disk, and CD-ROM and semiconductor storage devices such as DVD-ROM disks. It may be supplemented by, or incorporated into, special purpose logic circuits. It may be included.
[0351] This patent specification contains many details, which may be misleading in any respect as to the scope or scope of any subject matter or claims. The present invention should not be construed as limiting the scope of the present invention, but rather as being specific to particular embodiments of particular technologies. The description of the possible features of the present invention should be interpreted as a description of the possible features of the present invention. Certain features described in the context may be implemented in combination in one example. In particular, various features that are described in the context of one example may be used separately in multiple embodiments. or in any suitable subcombination. may be described above as acting in combination and may be initially claimed as such However, one or more features from the claimed combination may, in some cases, be removed from the combination. The claimed combination may be a sub-combination or a combination of subcombinations. It may also be directed towards variations in the nation.
[0352] Similarly, although operations may be shown in a particular order in the figures, this is not intended to be limiting as to how the desired results are achieved. that such actions be performed in the particular order or sequence shown, in order to It should not be construed as requiring that all acts shown be performed. Also, the separation of the various system components in the examples described in this patent specification is It should not be understood that all embodiments require such separation.
[0353] Only certain implementations and examples are described and illustrated in this patent document. Other embodiments, extensions, and variations are possible based on the content provided.
Claims
1. 1. A video processing method, comprising: For conversion between a current block of an image and a coding representation of the image, according to a rule , which indicates the use of the skip mode of the intra block copy (IBC) coding model. determining whether a syntax element is included in the coding representation, The rule is that the signaling of the syntax element depends on the size of the current block and / or the IB Based on the maximum allowable dimensions for blocks coded using the C coding model To prescribe and determine what is to be performing said converting based on said determining; The method includes:
2. The rule is that if the width of the current block is greater than the maximum allowed width, providing for omitting said syntax element in a representation, The method of claim 1.
3. The rule is that if the height of the current block is greater than the maximum allowed height, omitting the syntax element in the input representation, The method of claim 1.
4. The rule is that if the width of the current block is less than or equal to the maximum allowed width, the coding providing for including said syntax element in an expression; The method of claim 1.
5. The rule is that if the height of the current block is less than or equal to a maximum allowed height, the coding the syntax element is included in a coding representation of the The method of claim 1.
6. the current block is in an image area of the image; The rule is that the image region is an I-tile, an I-slice, an I-brick, or an I-subpicture. This is applicable when the device includes a The method according to any one of claims 1 to 5.
7. The maximum allowable width or the maximum allowable height is 64; The method according to any one of claims 2 to 5.
8. The maximum allowable width or the maximum allowable height is determined based on the dimensions of a virtual pipeline data unit. equal, The method according to any one of claims 2 to 5.
9. The maximum allowable width or the maximum allowable height is equal to the maximum dimension of a conversion unit; The method according to any one of claims 2 to 5.
10. 1. A video processing method, comprising: A low frequency non-separable block for converting a current block of an image to a coding representation of the image. Coding the index associated with the transform (LFNST) coding model determining at least one context for determining a The LFNST coding model uses forward linear transform and quantization during coding. Applying a forward quadratic transform during the dequantization step or during decoding applying an inverse secondary transform between the input and the inverse primary transform; The size of the forward secondary transform and the inverse secondary transform is the size of the current block. Smaller than the size The at least one context may be the forward linear transformation or the inverse linear transformation. based on the partition type of the current block, without considering the partition type of the current block. To judge, performing said converting in accordance with said determining; The method includes:
11. If the partition type is a single tree partition, one context Only the data is used to code the index. The method of claim 10.
12. If the partition type is a dual tree partition, the two containers The text is used to code the index. The method of claim 10.
13. An index indicating the use of the low frequency non-separable transform (LFNST) coding model is , included in the coding representation based on features associated with the block, The characteristics include the partition type, slice type, and containing group or color components, 13. The method according to any one of claims 10 to 12.
14. 1. A video processing method, comprising: For conversion between a current block of an image domain of an image and a coding representation of said image, Based on the maximum transform unit size applicable to the image region, intra block copy ( determining whether an IBC) coding model is enabled; performing a conversion in accordance with said determining; The method includes:
15. The IBC coding model may be based on the size of the current block or the current block size. If the dimension of the luminance block corresponding to the block is larger than the maximum transform unit size, the To be transformed into The method of claim 14.
16. The IBC coding model may be a width of the current block or a If the width of the luma block corresponding to is greater than the maximum transform unit width, it is disabled. The method of claim 15.
17. The IBC coding model may be a height of the current block or a if the height of the luminance block corresponding to the block is greater than the maximum transform height, it is invalidated; The method of claim 15.
18. Method for signaling use of the IBC coding model in the coding representation the formula being based on a dimension of the current block and the maximum transform unit size; The method according to any one of claims 14 to 17.
19. Signaling the use of the IBC coding model includes: Contains a syntax element that indicates the skip mode of the 20. The method of claim 18.
20. The syntax elements include an I-tile, an I-slice, an I-brick in the coding representation, or included in an I subpicture, 20. The method of claim 19.
21. Signaling the use of the IBC coding model includes signaling the use of the IBC mode. Contains the syntax elements shown, The method according to any one of claims 18 to 20.
22. The width of the current block is greater than the width of a maximum transform unit, or If the height of a block is greater than the height of a maximum transform unit, the syntax element is In the loading expression, The method according to any one of claims 18 to 21.
23. The width of the current block is less than or equal to the width of a maximum transform unit, or If the height of a block is less than or equal to the height of a maximum transform unit, the syntax element is Ding representation includes The method according to any one of claims 18 to 21.
24. The width of the current block is greater than the width of a maximum transform unit, or If the height of a block is greater than the height of a maximum transform unit, the syntax element Included in the coding representation and set to 0, The method according to any one of claims 18 to 21.
25. If the IBC coding model is enabled for the current block, then the rule Set the samples in the residual block corresponding to the current block to zero according to 、 The method according to any one of claims 18 to 24.
26. The rule is whether the width of the current block is greater than the width of a maximum transform unit, or If the height of the current block is greater than the height of the maximum transform unit, stipulates that the rule be set to 0; 26. The method of claim 25.
27. The rule is that if the width of the current block is greater than a first threshold or If the height of the block is greater than a second threshold, then set the sample to zero. Prescribe, 26. The method of claim 25.
28. the first threshold is 64 / vSizeX, vSizeX is the width of a virtual pipeline data unit, 28. The method of claim 27.
29. the second threshold is 64 / vSizeY, vSizeY is the height of a virtual pipeline data unit.
28. The method of claim 27.
30. Syntax flags for coding blocks are omitted in the coding representation. R, 30. The method according to any one of claims 25 to 29.
31. A syntax flag for a coding block is set to 0 in the coding representation. To be done, 30. The method according to any one of claims 25 to 29.
32. Signaling syntax flags for coding blocks in the coding representation , based on said use of said IBC coding model, The method according to any one of claims 18 to 31.
33. The IBC coding model is enabled for the current block, If the dimension of the block is greater than the maximum transform unit size, In this case, the syntax flag is omitted.
33. The method of claim 32.
34. The IBC coding model is enabled for the current block, If the size of the block is greater than a threshold associated with the virtual pipeline data unit, the code In the input representation, the syntax flags are omitted.
33. The method of claim 32.
35. 1. A video processing method, comprising: For conversion between a current block of an image and a coding representation of the image, determining whether the absolute value of the component of the motion vector for the lock is divided into two parts; And, The motion vector is represented as (Vx, Vy), the component is represented as Vi, and Vi is Vx or is either Vy, The first of the two portions is equal to |Vi|-((|Vi|>>N)<<N). , the second of the two parts is equal to |Vi|>>N, where N is a positive integer; the two parts are coded separately in the coding representation; To judge, performing said converting in accordance with said determining; The method includes:
36. The two components Vx and Vy are signaled separately in the coding representation. R, 36. The method of claim 35.
37. The first portion is coded with a fixed length of N bits.
37. The method of claim 36.
38. The first portion of the component Vx and the first portion of the component Vy are coded together. It was The second portion of the component Vx and the second portion of the component Vy are coded separately. It will be 36. The method of claim 35.
39. The first portion of the component Vx and the first portion of the component Vy are 2N-bit coded as a value with a length, 39. The method of claim 38.
40. The value is equal to (Vx<<<N)+Vy), 40. The method of claim 39.
41. The values are coded using a fixed length coding process or an exponential-Golomb coding process. will be dinged, 41. The method of claim 39 or 40.
42. The first portion of the component Vx and the first portion of the component Vy are coded together. It was The second portion of the component Vx and the second portion of the component Vy are coded together. It will be 36. The method of claim 35.
43. A syntactic flag is added to the coding representation to indicate whether the first portion is equal to zero. This includes 43. The method according to any one of claims 35 to 42.
44. The first part has a value of K, where K≠0 and a value of (K-1) is the coding coded in the expression, 44. The method of claim 43.
45. The second part of each component having sign information is used to perform a motion vector differential coding process. It is coded using 45. The method according to any one of claims 35 to 44.
46. N is 1 or 2; 46. The method according to any one of claims 35 to 45.
47. N is determined based on the precision of the motion vectors used to store the motion vector data. R, 46. The method according to any one of claims 35 to 45.
48. If the motion vector accuracy is 1 / 16 pixel, N is 4.
48. The method of claim 47.
49. If the motion vector accuracy is 1 / 8 pixel, N is 3.
48. The method of claim 47.
50. If the motion vector accuracy is 1 / 4 pixel, N is 2.
48. The method of claim 47.
51. determining N based on the motion vector accuracy of the current motion vector; 46. The method according to any one of claims 35 to 45.
52. If the motion vector has a precision of one pixel, N is 1.
52. The method of claim 51.
53. 1. A video processing method, comprising: a transformation block for transforming a current block of an image and a coding representation of the image; , based on the maximum allowed dimensions of determining information regarding a maximum dimension of the current block; performing said converting in accordance with said determining; The method includes:
54. The sub-block transformation of the current block is enabled. the maximum dimension corresponds to the maximum allowable dimension of a transformation block; 54. The method of claim 53.
55. the maximum dimension of the current block is 64 or 32; 55. The method of claim 54.
56. The first syntax flag in a slice parameter set indicates that sub-block transformation is enabled. a second syntax flag in the slice parameter set indicates that the slice is If the maximum allowable size of a block is 64, then the maximum a syntax flag indicating a large dimension is included in the coding representation; 56. The method according to any one of claims 53 to 55.
57. the transforming includes generating the coding representation from the current block.
57. The method of any one of claims 1 to 56.
58. The transformation includes generating samples of the current block from the coding representation. Including, 57. The method according to any one of claims 1 to 56.
59. A processing device configured to implement the method according to any one or more of the preceding claims. Equipped with Image processing device.
60. A computer readable medium having code stored thereon, The code, when executed, causes a processor to perform the method according to any one or more of claims 1 to 58. Implement it in Computer-readable medium.
61. storing the coding representation generated according to any of claims 1 to 58; Computer-readable medium.
Citation Information
Patent Citations
Coding and Decoding Intra Block Copy
JP7596465B2