Block size restrictions for DMVR

Decoder-side motion vector refinement techniques optimize video coding by enabling/disabling block-specific refinement, addressing bandwidth challenges and improving video quality through bi-directional template matching.

JP7726962B2Active Publication Date: 2025-08-20DOUYIN VISION CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023176854
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-07-02
Filing Date
2023-10-12
Publication Date
2025-08-20
Estimated Expiration
2039-07-02

AI Technical Summary

Technical Problem

Existing video coding technologies face challenges in efficiently managing bandwidth demands due to the increasing number of connected devices receiving and displaying video, particularly in decoder-side motion vector refinement processes.

Method used

Implementing decoder-side motion vector refinement (DMVR) techniques that refine motion vectors in the decoder, enabling or disabling the process based on block size and shape conditions, and applying bi-directional template matching to improve coding performance and reduce complexity.

Benefits of technology

Reduces complexity and enhances coding performance by optimizing motion vector refinement, leading to improved video quality and reduced bandwidth requirements.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007726962000001
    Figure 0007726962000001
  • Figure 0007726962000002
    Figure 0007726962000002
  • Figure 0007726962000003
    Figure 0007726962000003
Patent Text Reader

Abstract

To provide video processing methods for enabling and disabling a decoder side motion vector refinement (DMVR) video decoder and / or encoder.SOLUTION: A method includes: determining a width (W) and a height (H) of a video block; making a determination, based on a condition of the video block, between enabling and disabling a decoder side motion vector refinement (DMVR) step for a conversion between the video block and a coded representation of the video block; if the enabling is determined then performing the conversion by enabling the decoder side motion vector refinement step; and if the disabling is determined then performing the conversion by disabling the DMVR step; where the DMVR step includes refining a value of a motion vector signaled in the coded representation and using the refined value during the conversion.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This specification relates to video coding technology. [Background technology]

[0002] Despite advances in video compression, digital video still accounts for the largest bandwidth usage on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the bandwidth demands for digital video usage are expected to continue to grow. Summary of the Invention

[0003] Techniques related to decoder-side motion vector derivation (DMVD) in video coding are disclosed, which may be applied to existing video coding standards such as HEVC or a standard to be finalized (Versatile Video Coding), and may also be applicable to future video coding standards or video codecs.

[0004] In one example aspect, a method of video processing is disclosed, the method including determining a video block size width (W) and height (H), making a decision between enabling and disabling a decoder-side motion vector refinement step for converting between the video block and a coded representation of the video block based on a condition of the video block, performing the conversion by enabling the decoder-side motion vector refinement step if the decision is enable, and performing the conversion by disabling the decoder-side motion vector refinement step if the decision is disable, wherein the decoder-side motion vector refinement step includes refining values of motion vectors conveyed in the coded representation and using the refined values during the conversion.

[0005] In another example aspect, a video decoding device is disclosed having a processor configured to perform the above method.

[0006] In yet another exemplary aspect, a video encoding device is disclosed having a processor configured to perform the above method.

[0007] In yet another exemplary aspect, a computer-readable medium is disclosed having stored thereon code that, when executed by a processor, causes the processor to perform the method set forth above.

[0008] These and other aspects are further described herein. [Brief explanation of the drawings]

[0009] [Figure 1] 1 shows an example of decoder-side motion vector refinement (DMVR) based on bidirectional template matching. [Figure 2] 1 is a flowchart of an example method, according to some example embodiments. [Figure 3] 1 is an example of a block diagram of a video decoding and / or encoding device. DETAILED DESCRIPTION OF THE INVENTION

[0010] This specification provides various techniques that can be used by a decoder of a video bitstream to improve the quality of the decompressed or decoded digital video. Furthermore, a video encoder may also implement these techniques during the encoding process to reconstruct the decoded frames to be used for further encoding.

[0011] For ease of understanding, section headings are used herein but do not limit the embodiments and techniques to the corresponding section. As such, embodiments from one section may be combined with embodiments from other sections.

[0012] [Technical Framework] Video coding standards have progressed primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Visual. The two organizations collaborated to develop the H.262 / MPEG-2 Video, H.264 / MPEG-4 Advanced Video Coding (AVC), and H.265 / HEVC standards. Since H.262, video coding standards have been based on hybrid video coding architectures that utilize temporal prediction and transform coding. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, many new methods have been introduced by JVET and incorporated into reference software named the Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was formed to work on a VVC standard that aims to reduce the bitrate by 50% compared to HEVC.

[0013] [Inter prediction in HEVC / H.265] Each inter-predicted prediction unit (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 may also be signaled using inter_pred_idc. The motion vector may be explicitly coded as a differential relative to the predictor.

[0014] When a coding unit is coded in skip mode, one PU is associated with a CU, and there are no significant residual coefficients, coded motion vector differentials, or reference picture indices. A merge mode is specified, whereby the motion parameters of the current PU are obtained from neighboring PUs, including spatial and temporal candidates. Merge mode can be applied not only to skip mode, but also to any inter-predicted PU. An alternative to merge mode is explicit signaling of motion parameters, whereby motion vectors (more precisely, motion vector differentials compared to motion vector predictors), corresponding reference picture indices for each reference picture list, and reference picture list utilization are explicitly signaled for each PU. Such a mode is referred to herein as advanced motion vector prediction (AMVP).

[0015] When the signaling indicates that one of the two reference picture lists should be used, the PU is generated from one block of samples. This is called "uni-prediction." Uni-prediction is available for both P slices and B slices.

[0016] If the signaling indicates that both reference picture lists should be used, the PU is generated from two blocks of samples. This is called "bi-prediction." Bi-prediction is only available for B slices.

[0017] In bilateral matching merge mode, bi-prediction is always applied, since the motion information of a CU is derived based on the closest match between two blocks along the motion trajectory of the current CU in two different reference pictures. There is no such restriction in template matching merge mode. In template matching merge mode, the encoder can choose for a CU between uni-prediction from list 0, uni-prediction from list 1, or bi-prediction. The selection is based on the template matching cost, as follows: If costBi ≤ factor × min(cost0,cost1), bi-prediction is used; Alternatively, if cost0≦cost1, uniprediction from list 0 is used; Otherwise, bi-prediction from list 1 is used. where cost0 is the SAD of list 0 template matching, cost1 is the SAD of list 1 template matching, and costBi is the SAD of bi-predictive template matching. The value of factor is equal to 1.25, which means that the selection process is biased towards bi-prediction.

[0018] The inter prediction direction selection is only applied to the CU-level template mapping process.

[0019] [Decoder-side motion vector refinement] In bi-prediction operation, for prediction of one block region, two prediction blocks formed using the motion vector (MV) of list 0 and the MV of list 1, respectively, are combined to form a single prediction signal. In the decoder-side motion vector refinement (DMVR) method, the two motion vectors of bi-prediction are further refined by a bi-directional template matching process. The bi-directional template matching is applied in the decoder to perform a distortion-based search between a bi-directional template and a reconstructed sample in a reference picture to obtain a refined MV without transmitting additional motion information.

[0020] In DMVR, a bidirectional template is generated as a weighted combination (i.e., average) of two prediction blocks from the initial MV0 in list 0 and MV1 in list 1, respectively, as shown in Figure 1. The template mapping operation consists of calculating a cost metric between the generated template and a sample region (around the initial prediction block) in the reference picture. For each of the two reference pictures, the MV that results in the smallest template cost is considered as the updated MV in that list to replace the original MV. In JEM, nine MV candidates are searched for per list. The nine MV candidates include the original MV and eight surrounding MVs offset by one luma sample relative to the original MV in the horizontal or vertical direction, or both. Finally, two new MVs, i.e., MV0' and MV1' shown in Figure 1, are used to generate the final bi-prediction result. The sum of absolute differences (SAD) is used as the cost metric. Note that when calculating the cost of a predicted block generated by one surrounding MV, the rounded MV (to integer pels) is actually used to obtain the predicted block instead of the actual MV.

[0021] DMVR is applied for bi-predictive merge mode with one MV from a past reference picture and another MV from a future reference picture without transmission of additional syntax elements. In JEM, DMVR is not applied if LIC, affine motion, FRUC, or sub-CU merge candidates are enabled for the CU.

[0022] In some example embodiments, as shown in FIG. 1, in the first step, a bidirectional template is generated from the predicted blocks referenced by the initial MV0 and MV1, and in the second step, bidirectional template matching is performed to find the best-matched block referenced by the updated MV0′ and MV1′.

[0023] The disclosed techniques and devices reduce the complexity and improve coding performance of the DMVC method.

[0024] In one aspect, the cost between the template and the candidate block (e.g., the difference, the distortion, or the cost considering both the distortion and the MV) is calculated only for partial pixels in the decoder-side motion estimation, i.e., in the motion information derivation or refinement procedure. In another aspect, due to DMVR, the interpolation time is reduced. In another aspect, some embodiments using the disclosed technology apply DMVR to AMVP mode. In another aspect, the weighting factor of the MV difference can be different for different block sizes.

[0025] The examples listed below provide some ways in which the disclosed techniques can be embodied in a video encoding or decoding process. Let prec be the motion vector precision, and if prec is equal to N, it means that the motion vector is ½ N This means that it has pixel accuracy. N can be a positive integer, zero, or a negative integer.

[0026] The DMVR method may be enabled / disabled according to certain conditions.

[0027] In one aspect, enabling or disabling DMVR may depend on block size and / or block shape. Block size may be represented by W×H, where W is the width and H is the height of the block. The following rules apply: In the example a., the DMVR may be disabled whenever the block size is equal to 4x4. b. In another example, the DMVR may be disabled whenever the block size is equal to W×4 or 4×H, where H is an integer value greater than or equal to 1. c. In another example, the DMVR may always be disabled for a block W×H where W≦T1 or H≦T2, where W, H, T1, and T2 are integer values greater than or equal to 1. d. In another example, the DMVR may be always disabled for a block W×H, where W≦T1 and H≦T2, where W, H, T1, and T2 are integer values greater than or equal to 1. e. In another example, the DMVR may always be disabled for a block W×H where W×H≦T0, where W, H, and T0 are integer values greater than or equal to 1. f. In another example, the DMVR may be disabled whenever W / H is less than a threshold and / or W / H is greater than a threshold. The threshold may be signaled or predefined (e.g., equal to 1). W and H are integer values, and the threshold may be expressed as a fraction.

[0028] FIG. 2 is a flowchart of an example method 200 of video processing. Method 200 may be used, for example, to disable or enable a decoder-side motion vector refinement (DMVR) video decoder or encoder. Method 200 includes determining (202) a video block size width (W) and height (H) and determining to disable the DMVR video decoder if a condition is met or to enable the DMVR video decoder if the condition is not met, and performing decoding of the bitstream into data blocks based on the determination. For example, method 200 may include determining at 204 whether to enable or disable a DMVR step during conversion between a video block and a coded representation of the video block. After the determination, at 206, conversion between the video block and the coded representation is performed. The conversion is performed using one mode between a first mode in which the determination is to enable DMVR, in which case the conversion is performed by enabling DMVR, and a second mode in which the determination is to disable DMVR, in which case the conversion is performed by disabling DMVR. Transformation refers, for example, to an encoding or transcoding operation that results in a coded representation, e.g., a bitstream. Alternatively, transformation may result in the generation of sample values of a video block from a coded representation. Various possible embodiments and variations of the above method, in which the condition is satisfied, are according to one of the following rules:

[0029] The condition is satisfied by a block size with W=4 and H=4.

[0030] The condition is satisfied by a block size with H=4 or W=4.

[0031] The condition is satisfied by block sizes with W≦T1 or H≦T2.

[0032] The condition is satisfied by block sizes with W≦T1 and H≦T2.

[0033] The condition is satisfied by a block size with W×H≦T0.

[0034] The condition is satisfied by a block size with a W / H smaller than the first threshold and a W / H larger than the second threshold.

[0035] The condition is satisfied by a block size where W / H is smaller than a threshold or W / H is larger than another threshold.

[0036] In the above, the thresholds T0, T1, and T2 may be fixed values that are independent of the conversion process. For example, T1 and T2 may be 4 or 8, and may be specified in advance and known to the encoder and decoder.

[0037] In the above description, the various thresholds used may represent the aspect ratio of the current block. For example, a threshold may be set to 1 so that wide blocks (W>H) use DMVR, while tall blocks (W≦H) may disable the use of DMVR. Because motion often tends to be perceived more accurately in the horizontal direction, such an arrangement may result in a higher visual quality of the coded representation than would otherwise be the case.

[0038] The first and second thresholds are received via a message, which may be included in a syntax element in the coded representation, which may be inserted per slice or per picture to allow changing the thresholds at the picture, slice, or coding unit level.

[0039] In some embodiments, the decoding condition includes selecting a low-precision motion vector, and generating a set of candidate blocks includes generating a set of candidate blocks using the low-precision motion vector. In some embodiments, when the decoding condition is that the current block is in merge mode, the motion vector is inherited by the current block. In various modes, accuracy can be improved by refining using a step size or scale factor. For example, the step size may be 1. As another example, the scale factor may be 2, and accuracy can be improved from 4 pixels to 2 pixels resolution to 1 pixel resolution, etc.

[0040] FIG. 3 shows a block diagram of an example embodiment of a hardware device 300 that may be utilized to implement various portions of the presently disclosed technology. The hardware device 300 can be a laptop, smartphone, tablet, camcorder, or other type of device with video processing capabilities. The device 300 includes a processor or controller 302 for processing data and a memory 304 that communicates with the processor 302 and stores and / or buffers data. For example, the processor 302 may include a central processing unit (CPU) or a microcontroller unit (MCU). In some implementations, the processor 302 may include a field programmable gate array (FPGA). In some implementations, the device 300 includes or communicates with a graphics processing unit (GPU), a video processing unit (VPU), and / or a wireless communication unit for various visual and / or communication data processing functions of the smartphone. For example, memory 304 may include and store processor-executable code that, when executed by processor 302, configures device 300 to perform various operations, such as receiving information, commands, and / or data, processing the information and data, and transmitting or providing the processed information / data to other devices, such as actuators or external displays. To support various functions of device 300, memory 304 may store information and data, such as instructions, software, values, images, and other data, that are processed or referenced by processor 302. For example, various types of random access memory (RAM) devices, read-only memory (ROM) devices, flash memory devices, and other suitable storage media may be used to implement the storage functionality of memory 304. Device 300 may further include dedicated video processing circuitry 306 for performing iterative computational functions, such as conversion and decoding.

[0041] The techniques described herein may be implemented by a video encoder or video decoder using a hardware platform such as that described with respect to FIG.

[0042] From the foregoing, it will be understood that, although specific embodiments of the presently disclosed technology have been described herein for purposes of illustration, various modifications may be made without departing from the scope of the invention. Accordingly, the presently disclosed technology is not limited except as by the appended claims.

[0043] The disclosed and other embodiments, modules, and functional operations described herein may be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed herein and their structural equivalents, or in one or more combinations thereof. The disclosed and other embodiments may be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium for execution by or to control the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage carrier, a memory device, a composition of matter bearing a machine-readable propagated signal, or one or more combinations thereof. The term "data processing apparatus" encompasses all apparatuses, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, an apparatus may include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations thereof. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to an appropriate receiving device.

[0044] A computer program (also known as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored in a single file dedicated to the program in question, or in multiple cooperating files (e.g., a file storing one or more modules, subprograms, or portions of code), in portions of files that hold other programs or data (e.g., one or more scripts stored in markup language documents). A computer program may be deployed to run on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communications network.

[0045] The processes and logic flows described herein may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be performed by, or an apparatus may also be implemented as, special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC).

[0046] Processors suitable for executing a computer program include, by way of example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor receives instructions and data from a read-only memory or a random-access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, or will be operatively coupled to receive and / or transfer data from one or more mass storage devices for storing data, e.g., magnetic disks, optical-magnetic disks, or optical disks. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media, and memory devices, including semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; optical-magnetic disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0047] While this patent document contains numerous details, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of a particular invention. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, while features may be described above as operating in particular combinations and even initially claimed as such, one or more features from a claimed combination may in some cases be deleted from the combination, and the claimed combination may be directed to subcombinations or variations of subcombinations.

[0048] Similarly, although operations are depicted in the figures in a particular order, this should not be understood as implying that such operations must be performed in the particular order or sequence shown, or that all of the depicted operations must be performed, to achieve desired results. Furthermore, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.

[0049] Only a few implementations and examples are described and other implementations, extensions and variations can be made based on what is described and illustrated in this patent document.

[0050] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application is a divisional application of Japanese Patent Application No. 2022-109489, which is a divisional application of Japanese Patent Application No. 2020-571582 based on International Patent Application No. PCT / IB2019 / 055616, which claims priority to and the benefit of U.S. Provisional Patent Application No. 62 / 693412, filed July 2, 2018. All of the above patent applications are incorporated herein by reference in their entirety.

Claims

1. 1. A method of video processing, comprising: determining between enabling and disabling a decoder-side motion vector refinement (DMVR) step for converting between the video block and a bitstream of the video block based on at least one of a width and a height of the video block; If the determination is valid, performing the conversion by validating the DMVR step; if the determination is invalid, performing the conversion by invalidating the DMVR step; and the DMVR step comprises refining values of motion vectors conveyed in the bitstream and using the refined values during the conversion; The DMVR step is determined to be disabled if W×H≦T0, where W and H are the width and the height of the video block, respectively, and T0 is an integer value greater than or equal to 1. method.

2. the converting includes decoding the bitstream into pixel values of the video blocks. The method of claim 1.

3. the converting includes encoding pixel values of the video block into the bitstream. The method of claim 1.

4. The DMVR step is determined to be disabled when W=4 and H=4. The method of claim 1.

5. The DMVR step is determined to be disabled when W=4 or H=4. The method of claim 1.

6. The DMVR step is determined to be disabled when W / H is less than a threshold and W / H is greater than another threshold. The method of claim 1.

7. the threshold and the other threshold have fixed values; The method of claim 6.

8. 1. A video data coding apparatus having a processor and a non-transitory memory having instructions, The instructions, when executed by the processor, cause the processor to: determining between enabling and disabling a decoder-side motion vector refinement (DMVR) step for converting between the video block and a bitstream of the video block based on at least one of a width and a height of the video block; If the determination is valid, performing the conversion by validating the DMVR step; if the determination is invalid, performing the conversion by invalidating the DMVR step; Execute the DMVR step comprises refining values of motion vectors conveyed in the bitstream and using the refined values during the conversion; The DMVR step is determined to be disabled if W×H≦T0, where W and H are the width and the height of the video block, respectively, and T0 is an integer value greater than or equal to 1. Video data coding device.

9. The processor determining between enabling and disabling a decoder-side motion vector refinement (DMVR) step for converting between the video block and a bitstream of the video block based on at least one of a width and a height of the video block; If the determination is valid, performing the conversion by validating the DMVR step; if the determination is invalid, performing the conversion by invalidating the DMVR step; Execute the DMVR step comprises refining values of motion vectors conveyed in the bitstream and using the refined values during the conversion; The DMVR step is determined to be disabled if W×H≦T0, where W and H are the width and the height of the video block, respectively, and T0 is an integer value greater than or equal to 1. A non-transitory computer-readable storage medium storing instructions.

10. 1. A method for storing a video bitstream, comprising: determining, based on at least one of a width and a height of a video block, between enabling and disabling a decoder-side motion vector refinement (DMVR) step for generating the bitstream for the video block; If the determination is enabled, generating the bitstream from the video block by enabling the DMVR step; if the determination is invalid, generating the bitstream from the video block by disabling the DMVR step; storing the bitstream on a non-transitory computer-readable recording medium; and the DMVR step comprises refining values of motion vectors conveyed in the bitstream and using the refined values during generation of the bitstream; The DMVR step is determined to be disabled if W×H≦T0, where W and H are the width and the height of the video block, respectively, and T0 is an integer value greater than or equal to 1. method.

Citation Information

Patent Citations

  • Method and apparatus for video coding

    US20190132606A1

  • Method and apparatus of bilateral template MV refinement for video coding

    WO2018121506A1