Method and apparatus for chroma motion compensation using adaptive cross-component filtering
By using adaptive cross-component filter (CC-MCP) in video encoding and decoding, the quality of motion-component chromaticity samples is improved, and inter-frames are solved in the prior art The problem of low block encoding and decoding efficiency achieves more efficient chromatic motion compensation.
Patent Information
- Application Number
- CN202380050690.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-06-28
- Filing Date
- 2023-06-26
- Publication Date
- 2025-02-14
AI Technical Summary
The existing video encoding and decoding technology has room for improvement in the encoding and decoding efficiency of inter-frame blocks, especially in terms of chromatic motion compensation, and it is difficult to effectively utilize the high-frequency information of the luminance sample to improve the prediction quality of the chromatic sample.
Adaptive cross-component filter (CC-MCP) is used to improve the quality of the motion-compensated chromaticity sample in the motion-compensated luminance sample in the motion-compensated chromaticity sample in the motion-compensated chromaticity sample in the motion-compensated luminance sample, thereby reducing the energy of the chromaticity residual and reducing the encoding overhead .
By improving the quality of the motion-compensated chromaticity sample points, the energy of chromaticity residual is reduced, thereby reducing the overhead of sending chromaticity signals with a signal, and improving the efficiency and video quality of inter-frame encoding and decoding.
Smart Images

Figure CN119452644A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is based on and claims priority from U.S. Provisional Application No. 63 / 356,466, filed on June 28, 2022, entitled “Methods and apparatus on chromamotion compensation using adaptive cross-component filtering,” the entire contents of which are incorporated herein by reference for all purposes. Technical Field
[0003] The present disclosure relates to video coding and compression, and more particularly, but not limited to, methods and devices for applying cross-component filtering to generate prediction samples of chrominance components of blocks to improve coding efficiency of inter-frame blocks. Background Art
[0004] Various video coding techniques can be used to compress video data. Video coding is performed according to one or more video coding standards. For example, video coding standards include general video coding (VVC), high efficiency video coding (H.265 / HEVC), advanced video coding (H.264 / AVC), moving picture experts group (MPEG) coding, etc. Video coding usually uses prediction methods (e.g., inter-frame prediction, intra-frame prediction, etc.) that use redundancy in video images or sequences. An important goal of video coding technology is to compress video data into a form that uses a lower bit rate while avoiding or minimizing video quality degradation.
[0005] The first version of the VVC standard was completed in July 2020, providing approximately 50% bitrate savings or equivalent perceptual quality compared to the previous generation video codec standard HEVC. Although the VVC standard provides significant coding improvements over its predecessor, there is evidence that higher codec efficiency can be achieved with additional codec tools. Recently, the Joint Video Experts Group (JVET), in collaboration with ITU-T VECG and ISO / IEC MPEG, began exploring advanced technologies that could significantly improve codec efficiency beyond VVC. In April 2021, a software code base called the Enhanced Compression Model (ECM) was established for future video codec exploration work. The ECM reference software is based on the VVC Test Model (VTM) developed by JVET for VVC, which further extends and / or improves several existing modules (e.g., intra / inter prediction, transform, loop filter, etc.). In the future, any new codec tools beyond the VVC standard will need to be integrated into the ECM platform and tested using the JVET Common Test Conditions (CTC). Summary of the invention
[0006] This disclosure provides examples of techniques related to improving encoding and decoding efficiency of inter-blocks.
[0007] According to a first aspect of the present disclosure, a method for video decoding of an inter-frame coding block is provided. In the method, a decoder can obtain a motion compensated chroma sample and a plurality of motion compensated luminance samples for a current inter-frame coding block. In addition, the decoder can obtain an adaptive cross-component filter. In addition, the decoder can obtain a filtered motion compensated chroma sample based on the adaptive cross-component filter, the motion compensated chroma sample and the plurality of motion compensated luminance samples.
[0008] According to a second aspect of the present disclosure, a method for video encoding of an inter-frame coding block is provided, in which an encoder can generate motion compensated chroma samples and multiple motion compensated luminance samples for a current inter-frame coding block. In addition, the encoder can obtain filtered motion compensated chroma samples based on an adaptive cross-component filter, the motion compensated chroma samples, and the multiple motion compensated luminance samples.
[0009] According to a third aspect of the present disclosure, a method for video decoding is provided. In the method, the decoder can obtain a first motion-compensated chroma sample and a plurality of first motion-compensated luminance samples by matching a current block with a first block in a first reference picture based on motion information associated with a first reference picture. In addition, the decoder can obtain a second motion-compensated chroma sample and a plurality of second motion-compensated luminance samples by matching a current block with a second block in a second reference picture based on motion information associated with a second reference picture. In addition, the decoder can obtain one or two adaptive cross-component filters, and obtain filtered motion-compensated chroma samples based on one or two adaptive cross-component filters, first motion-compensated chroma samples, a plurality of first motion-compensated luminance samples, second motion-compensated chroma samples, and a plurality of second motion-compensated luminance samples.
[0010] According to a fourth aspect of the present disclosure, a method for video encoding is provided. In the method, the encoder can generate a first motion-compensated chroma sample and a plurality of first motion-compensated luminance samples by matching a current block with a first block in a first reference picture based on motion information associated with a first reference picture, and generate a second motion-compensated chroma sample and a plurality of second motion-compensated luminance samples by matching the current block with a second block in a second reference picture based on motion information associated with a second reference picture. In addition, the encoder can obtain one or two adaptive cross-component filters, and obtain filtered motion-compensated chroma samples based on the one or two adaptive cross-component filters, the first motion-compensated chroma samples, the plurality of first motion-compensated luminance samples, the second motion-compensated chroma samples, and the plurality of second motion-compensated luminance samples.
[0011] According to a fifth aspect of the present disclosure, a device for video decoding is provided. The device may include one or more processors and a memory, the memory being coupled to the one or more processors and configured to store instructions that can be executed by the one or more processors. In addition, the one or more processors are configured to execute the method according to the first aspect or the third aspect when executing the instruction.
[0012] According to a sixth aspect of the present disclosure, a device for video encoding is provided. The device may include one or more processors and a memory, the memory being coupled to the one or more processors and configured to store instructions that can be executed by the one or more processors. In addition, the one or more processors are configured to execute the method according to the second aspect or the fourth aspect when executing the instruction.
[0013] According to a seventh aspect of the present disclosure, a non-transitory computer-readable storage medium for storing computer-executable instructions is provided, which, when executed by one or more computer processors, causes the one or more computer processors to receive a bit stream and, based on the bit stream, execute the method according to the first aspect or the third aspect.
[0014] According to an eighth aspect of the present disclosure, a non-transitory computer-readable storage medium for storing computer-executable instructions is provided. When the computer-executable instructions are executed by one or more computer processors, the one or more computer processors execute the method according to the second aspect or the fourth aspect to encode a current block into a bit stream and send the bit stream.
[0015] According to a ninth aspect of the present disclosure, a non-transitory computer-readable storage medium is provided for storing a bit stream to be decoded by the method according to the first aspect or the third aspect.
[0016] According to a tenth aspect of the present disclosure, a non-transitory computer-readable storage medium is provided for storing a bit stream generated by the method according to the second aspect or the fourth aspect. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] A more particular description of examples of the present disclosure will be presented by reference to specific examples shown in the accompanying drawings. Given that these drawings depict only some examples and are therefore not to be considered limiting in scope, the examples will be described and explained with additional specificity and detail through use of the accompanying drawings.
[0018] Figure 1A is a block diagram illustrating a system for encoding and decoding video blocks according to some examples of the present disclosure.
[0019] Figure 1B is a block diagram of an encoder according to some examples of the present disclosure.
[0020] Figure 1C-1F is a block diagram showing how to recursively divide a frame into multiple video blocks of different sizes and shapes according to some examples of the present disclosure.
[0021] Figure 1G is a block diagram illustrating an exemplary video encoder according to some examples of the present disclosure.
[0022] Figure 2A is a block diagram of a decoder according to some examples of the present disclosure.
[0023] Figure 2B is a block diagram illustrating an exemplary video decoder according to some examples of the present disclosure.
[0024] Figure 3Ais a diagram illustrating block partitioning in a multi-type tree structure according to some examples of the present disclosure.
[0025] Figure 3B is a diagram illustrating block partitioning in a multi-type tree structure according to some examples of the present disclosure.
[0026] Figure 3C is a diagram illustrating block partitioning in a multi-type tree structure according to some examples of the present disclosure.
[0027] Figure 3D is a diagram illustrating block partitioning in a multi-type tree structure according to some examples of the present disclosure.
[0028] Figure 3E A diagram illustrating block partitioning in a multi-type tree structure according to some examples of the present disclosure.
[0029] Figure 4 Some examples of the present disclosure are shown in FIG. x and d y is an example of the horizontal and vertical values of MV.
[0030] Figure 5 An example is shown in which one MV has a fractional value and an interpolation filter is applied to generate corresponding prediction samples at fractional sample positions according to some examples of the present disclosure.
[0031] FIG. 6 shows examples of two diamond filter shapes according to some examples of the present disclosure.
[0032] Figure 7 A downsampled 1-D Laplacian computation applied to gradient computation in all directions according to some examples of the present disclosure is shown.
[0033] Figure 8 The filtering operation in CC-ALF is shown implemented by applying a diamond filter to the luma channel according to some examples of the present disclosure.
[0034] Fig. 9 is a block diagram showing a video encoder when CC-MCP according to the present disclosure is applied.
[0035] Fig.10 The present disclosure is received by Fig. 9 Block diagram of a decoder for the bit stream produced by an encoder.
[0036] Fig.11 is a diagram illustrating a computing environment coupled to a user interface according to some examples of the present disclosure.
[0037] Fig.12 is a flowchart illustrating a method for video decoding according to some examples of the present disclosure.
[0038] Fig.13 is a diagram showing some examples according to the present disclosure. Fig.12 The method for video decoding shown in FIG. 1 corresponds to a flow chart of a method for video encoding.
[0039] Fig.14 is a flowchart illustrating a method for video decoding according to some examples of the present disclosure.
[0040] Fig.15 is a diagram showing some examples according to the present disclosure. Fig.14 The method for video decoding shown in FIG. 1 corresponds to a flow chart of a method for video encoding. DETAILED DESCRIPTION
[0041] Reference will now be made in detail to specific embodiments, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous non-limiting specific details are set forth to aid in understanding the subject matter presented herein. However, it will be apparent to one of ordinary skill in the art that various alternatives may be used. For example, it will be apparent to one of ordinary skill in the art that the subject matter presented herein may be implemented on many types of electronic devices having digital video capabilities.
[0042] The terms used in this disclosure are only suitable for the purpose of describing specific embodiments and are not intended to limit the present disclosure. In the present disclosure and the appended claims, singular forms ("a / an", "the", "said", etc.) are also intended to include plural forms, unless other meanings are clearly indicated throughout the disclosure. It should also be understood that the term "and / or" used in this disclosure indicates and includes one or any or all possible combinations of the listed multiple related items.
[0043] References throughout this specification to "one embodiment," "an embodiment," "an example," "some embodiments," "some examples," or similar language mean that the particular feature, structure, or characteristic being described is included in at least one embodiment or example. Unless explicitly stated otherwise, features, structures, elements, or characteristics described in conjunction with one or some embodiments are also applicable to other embodiments.
[0044] Throughout the disclosure, unless otherwise expressly stated, the terms "first", "second", "third", etc. are used merely as references to related elements (e.g., devices, components, compositions, steps, etc.), without implying any spatial or temporal order. For example, "first device" and "second device" may refer to two separately formed devices, or two parts, components, or operating states of the same device, and may be named arbitrarily.
[0045] The terms "module", "sub-module", "circuit", "sub-circuit", "circuitry", "sub-circuitry", "unit", or "sub-unit" may include a memory (shared, dedicated, or group) storing code or instructions that may be executed by one or more processors. A module may include one or more circuits with or without stored code or instructions. A module or circuit may include one or more components connected directly or indirectly. These components may or may not be physically attached to each other or located adjacent to each other.
[0046] As used herein, the terms "if" or "when" may be understood to mean "based on" or "in response to" depending on the context. These terms, if they appear in a claim, may not indicate that the associated limitation or feature is conditional or optional. For example, a method may include the following steps: i) when or if condition X exists, perform function or action X', and ii) when or if condition Y exists, perform function or action Y'. The method may be implemented with the ability to perform function or action X' and the ability to perform function or action Y'. Therefore, both functions X' and Y' may be performed at different times during multiple executions of the method.
[0047] A unit or module may be implemented purely by software, purely by hardware, or by a combination of hardware and software. In a pure software implementation, for example, a unit or module may include functionally related code blocks or software components that are linked together directly or indirectly to perform a specific function.
[0048] Figure 1A is a block diagram illustrating an exemplary system 10 for encoding and decoding video blocks in parallel according to some embodiments of the present disclosure. Figure 1A As shown in , system 10 includes a source device 12 that generates and encodes video data to be later decoded by a target device 14. Source device 12 and target device 14 may include any of a wide variety of electronic devices, including desktop or laptop computers, tablet computers, smart phones, set-top boxes, digital televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, etc. In some implementations, source device 12 and target device 14 are equipped with wireless communication capabilities.
[0049] In some embodiments, the target device 14 may receive the encoded video data to be decoded via the link 16. The link 16 may include any type of communication medium or device capable of moving the encoded video data from the source device 12 to the target device 14. In one example, the link 16 may include a communication medium that enables the source device 12 to send the encoded video data directly to the target device 14 in real time. The encoded video data may be modulated according to a communication standard (such as a wireless communication protocol) and sent to the target device 14. The communication medium may include any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network (e.g., a local area network, a wide area network, or a global network such as the Internet). The communication medium may include a router, a switch, a base station, or any other device that may be useful in facilitating communication from the source device 12 to the target device 14.
[0050] In some other embodiments, the encoded video data may be sent from the output interface 22 to the storage device 32. Subsequently, the encoded video data in the storage device 32 may be accessed by the target device 14 via the input interface 28. The storage device 32 may include any of a variety of distributed or locally accessed data storage media, such as a hard drive, a Blu-ray disc, a digital versatile disk (DVD), a compact disc read-only memory (CD-ROM), a flash memory, a volatile or non-volatile memory, or any other suitable digital storage medium for storing encoded video data. In another example, the storage device 32 may correspond to a file server or another intermediate storage device that can store the encoded video data generated by the source device 12. The target device 14 can access the stored video data from the storage device 32 via streaming or downloading. The file server can be any type of computer capable of storing encoded video data and sending the encoded video data to the target device 14. Exemplary file servers include a web server (e.g., for a website), a File Transfer Protocol (FTP) server, a Network Attached Storage (NAS) device, or a local disk drive. The target device 14 may access the encoded video data through any standard data connection suitable for accessing the encoded video data stored on the file server, including a wireless channel (e.g., a Wireless Fidelity (Wi-Fi) connection), a wired connection (e.g., a Digital Subscriber Line (DSL), a cable modem, etc.), or a combination of both. The transmission of the encoded video data from the storage device 32 may be a streaming transmission, a download transmission, or a combination of both a streaming transmission and a download transmission.
[0051] like Figure 1A As shown in , source device 12 includes a video source 18, a video encoder 20, and an output interface 22. Video source 18 may include a source such as a video capture device (e.g., a camera), a video archive containing previously captured video, a video feed interface for receiving video from a video content provider, and / or a computer graphics system for generating computer graphics data as source video, or a combination of such sources. As an example, if video source 18 is a camera of a security monitoring system, source device 12 and target device 14 may form a camera phone or a video phone. However, the embodiments described in this application may be generally applicable to video encoding and decoding, and may be applied to wireless and / or wired applications.
[0052] The captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video data may be sent directly to target device 14 via output interface 22 of source device 12. The encoded video data may also (or alternatively) be stored on storage device 32 for later access by target device 14 or other devices for decoding and / or playback. Output interface 22 may also include a modem and / or a transmitter.
[0053] Target device 14 includes input interface 28, video decoder 30, and display device 34. Input interface 28 may include a receiver and / or modem and receives encoded video data via link 16. The encoded video data communicated via link 16 or provided on storage device 32 may include various syntax elements generated by video encoder 20 for use by video decoder 30 in decoding the video data. Such syntax elements may be included within the encoded video data sent over a communication medium, stored on a storage medium, or stored on a file server.
[0054] In some embodiments, the target device 14 may include a display device 34, which may be an integrated display device and an external display device configured to communicate with the target device 14. The display device 34 displays the decoded video data to a user and may include any of a variety of display devices, such as a liquid crystal display (LCD), a plasma display, an organic light emitting diode (OLED) display, or another type of display device.
[0055] The video encoder 20 and the video decoder 30 may operate according to a proprietary standard or an industry standard (e.g., VVC, HEVC, MPEG-4, Part 10, AVC), or an extension of such a standard. It should be understood that the present application is not limited to a particular video encoding / decoding standard and may be applicable to other video encoding / decoding standards. It is generally believed that the video encoder 20 of the source device 12 may be configured to encode video data according to any of these current or future standards. Similarly, it is also generally believed that the video decoder 30 of the target device 14 may be configured to decode video data according to any of these current or future standards.
[0056] The video encoder 20 and the video decoder 30 may be implemented as any of a variety of suitable encoder and / or decoder circuits, respectively, such as one or more microprocessors, digital signal processors (DSP), application specific integrated circuits (ASIC), field programmable gate arrays (FPGA), discrete logic, software, hardware, firmware, or any combination thereof. When partially implemented in software, the electronic device may store instructions for the software in a suitable non-volatile computer-readable medium, and use one or more processors to execute the instructions in the hardware to perform the video encoding / decoding operations disclosed in the present disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, and either of the encoders or decoders may be integrated as part of a combined encoder / decoder (CODEC) in the corresponding device.
[0057] Like HEVC, VVC is built on a block-based hybrid video codec framework. Figure 1B 1 is a block diagram illustrating a block-based video encoder according to some embodiments of the present disclosure. In the encoder 100, the input video signal is processed block by block (referred to as a coding unit (CU)). The encoder 100 may be as follows: Figure 1A The video encoder 20 shown in . In VTM-1.0, a CU can be up to 128×128 pixels. However, unlike HEVC, which partitions blocks based only on a quadtree, in VVC, a coding tree unit (CTU) is divided into multiple CUs to adapt to the changing local characteristics based on quadtrees / binary trees / ternary trees. In addition, the concept of multiple partition unit types in HEVC is removed, that is, there is no longer a distinction between CUs, prediction units (PUs), and transform units (TUs) in VVC; instead, each CU is always used as a basic unit for prediction and transformation without further division. In a multi-type tree structure, a CTU is first divided by a quadtree structure. Then, each quadtree leaf node can be further divided by a binary tree structure and a ternary tree structure.
[0058] Figure 3A-3E is a schematic diagram illustrating a multi-type tree partitioning mode according to some embodiments of the present disclosure. Figure 3A-3E Five types of segmentation are shown, including four-element segmentation ( Figure 3A ), vertical binary division Figure 3B ), horizontal binary partition ( Figure 3C ), vertical ternary division ( Figure 3D ) and horizontal ternary partitioning ( Figure 3E).
[0059] For each given video block, spatial prediction and / or temporal prediction may be performed. Spatial prediction (or "intra-frame prediction") uses pixels from samples of coded neighboring blocks in the same video picture / slice (which are called reference samples) to predict the current video block. Spatial prediction reduces the spatial redundancy inherent in video signals. Temporal prediction (also known as "inter-frame prediction" or "motion compensated prediction") uses reconstructed pixels from coded video pictures to predict the current video block. Temporal prediction reduces the temporal redundancy inherent in video signals. The temporal prediction signal for a given CU is typically signaled by one or more motion vectors (MVs), which indicate the amount and direction of motion between the current CU and its temporal reference. In addition, if multiple reference pictures are supported, a reference picture index is additionally sent, which is used to identify which reference picture in the reference picture repository the temporal prediction signal comes from.
[0060] After spatial prediction and / or temporal prediction, the intra / inter mode decision circuit 121 in the encoder 100 selects the best prediction mode, for example, based on a rate-distortion optimization method. The block prediction factor 120 is then subtracted from the current video block; and the resulting prediction residual is decorrelated using the transform circuit 102 and the quantization circuit 104. The resulting quantized residual coefficients are dequantized by the dequantization circuit 116 and inversely transformed by the inverse transform circuit 118 to form a reconstructed residual, which is then added back to the predicted block to form a reconstructed signal for the CU. In addition, before the reconstructed CU is placed in the reference picture storage of the picture buffer 117 and used to encode and decode future video blocks, loop filtering 115, such as a deblocking filter, sample adaptive offset (SAO) and / or adaptive loop filter (ALF), may be applied to the reconstructed CU. In order to form an output video bitstream 114, the coding mode (inter or intra), prediction mode information, motion information, and quantized residual coefficients are all sent to the entropy coding unit 106 for further compression and packaging to form a bitstream.
[0061] For example, deblocking filters are available in the current versions of AVC, HEVC, and VVC. In HEVC, an additional loop filter called SAO is defined to further improve the coding efficiency. In the current version of the VVC standard, another loop filter called ALF is being actively studied and is likely to be included in the final standard.
[0062] These loop filter operations are optional. Performing these operations helps improve codec efficiency and visual quality. They can also be turned off as a decision presented by the encoder 100 to save computational complexity.
[0063] It should be noted that intra prediction is usually based on unfiltered reconstructed pixels, while inter prediction is based on filtered reconstructed pixels if the encoder 100 turns on these filter options.
[0064] Figure 2A is a block diagram illustrating a block-based video decoder 200 that can be used in conjunction with many video codec standards. The decoder 200 is similar to the one residing in Figure 1B The block-based video decoder 200 may be as follows: Figure 1A . In the decoder 200, the input video bitstream 201 is first decoded by entropy decoding 202 to derive quantization coefficient levels and prediction related information. The quantization coefficient levels are then processed by inverse quantization 204 and inverse transform 206 to obtain reconstructed prediction residuals. The block predictor mechanism implemented in the intra / inter mode selector 212 is configured to perform intra prediction 208 or motion compensation 210 based on the decoded prediction information. A set of unfiltered reconstructed pixels is obtained by summing the reconstructed prediction residuals from the inverse transform 206 and the prediction output generated by the block predictor mechanism using an adder 214.
[0065] The reconstructed block may be further passed through a loop filter 209 before it is stored in a picture buffer 213 used as a reference picture repository. The reconstructed video in the picture buffer 213 may be sent to drive a display device and used to predict future video blocks. With the loop filter 209 enabled, a filtering operation is performed on these reconstructed pixels to derive a final reconstructed video output 222.
[0066] Figure 1G is a block diagram illustrating another exemplary video encoder 20 according to some embodiments described in the present application. The video encoder 20 may perform intra-frame prediction encoding and inter-frame prediction encoding of video blocks within a video frame. Intra-frame prediction encoding relies on spatial prediction to reduce or remove spatial redundancy in video data within a given video frame or picture. Inter-frame prediction encoding relies on temporal prediction to reduce or remove temporal redundancy in video data within adjacent video frames or pictures of a video sequence. It should be noted that the term "frame" may be used as a synonym for the term "image" or "picture" in the field of video coding and decoding.
[0067] like Figure 1GAs shown in FIG. 1 , the video encoder 20 includes a video data memory 40, a prediction processing unit 41, a decoded picture buffer (DPB) 64, an adder 50, a transform processing unit 52, a quantization unit 54, and an entropy coding unit 56. The prediction processing unit 41 also includes a motion estimation unit 42, a motion compensation unit 44, a partition unit 45, an intra-frame prediction processing unit 46, and an intra-frame block copy (BC) unit 48. In some embodiments, the video encoder 20 also includes an inverse quantization unit 58, an inverse transform processing unit 60, and an adder 62 for video block reconstruction. A loop filter 63 (such as a deblocking filter) may be located between the adder 62 and the DPB 64 to filter the block boundaries to remove blocking artifacts from the reconstructed video. In addition to using a deblocking filter, additional loop filters, such as a Sample Adaptive Offset (SAO) filter and / or an Adaptive in-Loop Filter (ALF), may be used to filter the output of adder 62. In some examples, the loop filter may be omitted, and the decoded video block may be provided directly by adder 62 to DPB 64. Video encoder 20 may take the form of a fixed or programmable hardware unit, or may be distributed among one or more of the illustrated fixed or programmable hardware units.
[0068] Video data memory 40 may store video data to be encoded by components of video encoder 20. The video data in video data memory 40 may be obtained, for example, from Figure 1A The video data memory 40 and the DPB 64 are obtained from the video source 18 shown. The DPB 64 is a buffer that stores reference video data (reference frames or pictures) for use by the video encoder 20 (e.g., in intra-frame or inter-frame prediction coding mode) when encoding video data. The video data memory 40 and the DPB 64 may be formed by any of a variety of memory devices. In various examples, the video data memory 40 may be on-chip with other components of the video encoder 20, or off-chip relative to those components.
[0069] like Figure 1GAs shown in , after receiving the video data, the partitioning unit 45 within the prediction processing unit 41 partitions the video data into video blocks. This partitioning operation may also include partitioning the video frame into strips, tiles (e.g., a set of video blocks) or other larger coding units (Coding Unit, CU) according to a predefined splitting structure associated with the video data (e.g., a quadtree (Quad-Tree, QT) structure). A video frame is or can be considered to be a two-dimensional array or matrix of samples with sample values. The samples in the array may also be referred to as pixels or pels. The number of samples in the horizontal and vertical directions (or axes) of the array or picture defines the size and / or resolution of the video frame. The video frame may be divided into multiple video blocks by (for example) using QT partitioning. A video block is also or can be considered to be a two-dimensional array or matrix of samples with sample values, but the size of the video block is smaller than the video frame. The number of samples in the horizontal and vertical directions (or axes) of the video block defines the size of the video block. The video block may be further divided into one or more block partitions or sub-blocks (which may again form blocks) by, for example, iteratively using QT partitioning, binary-tree (BT) partitioning or ternary-tree (TT) partitioning or any combination thereof. It should be noted that the term "block" or "video block" as used herein may be a portion of a frame or picture, in particular a rectangular (square or non-square) portion. With reference to, for example, HEVC and VVC, a block or video block may be or correspond to a coding tree unit (CTU), a CU, a prediction unit (PU) or a transform unit (TU) and / or may be or correspond to a corresponding block, such as a coding tree block (CTB), a coding block (CB), a prediction block (PB) or a transform block (TB) and / or correspond to a sub-block.
[0070] The prediction processing unit 41 may select one of a plurality of feasible prediction coding modes for the current video block based on the error results (e.g., code rate and distortion level), such as one of one or more inter-frame prediction coding modes in a plurality of intra-frame prediction coding modes. The prediction processing unit 41 may provide the resulting intra-frame prediction coding block (e.g., prediction block) or inter-frame prediction coding block to the adder 50 to generate a residual block, and to the adder 62 to reconstruct the coding block for subsequent use as part of a reference frame. The prediction processing unit 41 also provides syntax elements (such as motion vectors, intra-frame mode indicators, partition information, and other such syntax information) to the entropy coding unit 56.
[0071] To select an appropriate intra-prediction coding mode for the current video block, intra-prediction processing unit 46 within prediction processing unit 41 may perform intra-prediction coding of the current video block relative to one or more neighboring blocks in the same frame as the current block to be encoded to provide spatial prediction. Motion estimation unit 42 and motion compensation unit 44 within prediction processing unit 41 may perform inter-prediction coding of the current video block relative to one or more prediction blocks in one or more reference frames to provide temporal prediction. Video encoder 20 may perform multiple encoding passes, e.g., to select an appropriate coding mode for each block of video data.
[0072] In some embodiments, motion estimation unit 42 determines the inter-prediction mode for a current video frame by generating a motion vector according to a predetermined pattern within a sequence of video frames, the motion vector indicating the displacement of a video block within the current video frame relative to a prediction block within a reference video frame. Motion estimation performed by motion estimation unit 42 is the process of generating a motion vector that estimates the motion for a video block. For example, a motion vector may indicate the displacement of a video block within a current video frame or picture relative to a prediction block within a reference frame, the prediction block in the reference frame relative to the current block being encoded in the current frame. The predetermined pattern may designate video frames in a sequence as P frames or B frames. Intra BC unit 48 may determine a vector (e.g., a block vector) for intra BC coding in a manner similar to the motion vectors determined by motion estimation unit 42 for inter prediction, or may utilize motion estimation unit 42 to determine the block vector.
[0073] In terms of pixel differences, the prediction block of the video block may be or may correspond to a block or reference block of a reference frame that closely matches the video block to be encoded, and the pixel difference may be determined by the sum of absolute differences (SAD), the sum of square differences (SSD), or other difference metrics. In some embodiments, the video encoder 20 may calculate values for sub-integer pixel positions of the reference frame stored in the DPB 64. For example, the video encoder 20 may interpolate values for quarter-pixel positions, eighth-pixel positions, or other fractional pixel positions of the reference frame. Thus, the motion estimation unit 42 may perform a motion search relative to the full pixel positions and the fractional pixel positions and output a motion vector with fractional pixel precision.
[0074] Motion estimation unit 42 calculates a motion vector for a video block in an inter-prediction coded frame by comparing the position of the video block to the position of a prediction block of a reference frame selected from a first reference frame list (List 0) or a second reference frame list (List 1), each of which identifies one or more reference frames stored in DPB 64. Motion estimation unit 42 sends the calculated motion vector to motion compensation unit 44 and then to entropy encoding unit 56.
[0075] The motion compensation performed by the motion compensation unit 44 may involve extracting or generating a prediction block based on the motion vector determined by the motion estimation unit 42. After receiving the motion vector for the current video block, the motion compensation unit 44 may locate the prediction block pointed to by the motion vector in one of the reference frame lists, retrieve the prediction block from the DPB 64, and forward the prediction block to the adder 50. The adder 50 then forms a residual video block of pixel difference values by subtracting the pixel values of the prediction block provided by the motion compensation unit 44 from the pixel values of the current video block being encoded. The pixel difference values forming the residual video block may include luma component differences or chroma component differences or both. The motion compensation unit 44 may also generate syntax elements associated with the video block of the video frame for use by the video decoder 30 when decoding the video block of the video frame. The syntax elements may include, for example, syntax elements defining a motion vector for identifying the prediction block, any flag indicating a prediction mode, or any other syntax information described herein. Note that the motion estimation unit 42 and the motion compensation unit 44 may be highly integrated, but are shown separately for conceptual purposes.
[0076] In some embodiments, the intra BC unit 48 may generate vectors and extract prediction blocks in a manner similar to that described above in conjunction with the motion estimation unit 42 and the motion compensation unit 44, but these prediction blocks are in the same frame as the current block being encoded, and these vectors are referred to as block vectors rather than motion vectors. Specifically, the intra BC unit 48 may determine the intra prediction mode to be used to encode the current block. In some examples, the intra BC unit 48 may encode the current block using various intra prediction modes, for example, during different encoding passes, and test their performance through rate-distortion analysis. Next, the intra BC unit 48 may select a suitable intra prediction mode to use among the various tested intra prediction modes and generate an intra mode indicator accordingly. For example, the intra BC unit 48 may calculate rate-distortion values for the various tested intra prediction modes using rate-distortion analysis, and select the intra prediction mode with the best rate-distortion characteristics among the tested modes as the suitable intra prediction mode to use. The rate-distortion analysis generally determines the amount of distortion (or error) between a coded block and the original uncoded block that was encoded to generate the coded block, as well as the bit rate (i.e., the number of bits) used to generate the coded block. Intra BC unit 48 may calculate ratios from the distortions and rates for the various coded blocks to determine which intra-prediction mode exhibits the best rate-distortion value for the block.
[0077] In other examples, intra BC unit 48 may use, in whole or in part, motion estimation unit 42 and motion compensation unit 44 to perform such functions for intra BC prediction in accordance with embodiments described herein. In either case, for intra block copying, the prediction block may be a block that is considered to closely match the block to be encoded in terms of pixel differences, which may be determined by SAD, SSD, or other difference metrics, and identification of the prediction block may include calculating values for sub-integer pixel positions.
[0078] Regardless of whether the prediction block is from the same frame according to intra-frame prediction or from a different frame according to inter-frame prediction, video encoder 20 can form pixel difference values by subtracting the pixel values of the prediction block from the pixel values of the current video block being encoded, thereby forming a residual video block. The pixel difference values forming the residual video block may include both luma component differences and chroma component differences.
[0079] As an alternative to the inter-frame prediction performed by the motion estimation unit 42 and the motion compensation unit 44 or the intra-frame block copy prediction performed by the intra BC unit 48 as described above, the intra-frame prediction processing unit 46 may perform intra-frame prediction on the current video block. Specifically, the intra-frame prediction processing unit 46 may determine an intra-frame prediction mode for encoding the current block. To this end, the intra-frame prediction processing unit 46 may use various intra-frame prediction modes to encode the current block, for example, during different encoding passes, and the intra-frame prediction processing unit 46 (or in some examples, the mode selection unit) may select a suitable intra-frame prediction mode from the tested intra-frame prediction modes to use. The intra-frame prediction processing unit 46 may provide information indicating the intra-frame prediction mode selected for the block to the entropy encoding unit 56. The entropy encoding unit 56 may encode the information indicating the selected intra-frame prediction mode into the bitstream.
[0080] After prediction processing unit 41 determines a prediction block for the current video block via inter-prediction or intra-prediction, adder 50 forms a residual video block by subtracting the prediction block from the current video block. The residual video data in the residual block may be included in one or more TUs and provided to transform processing unit 52. Transform processing unit 52 transforms the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform.
[0081] Transform processing unit 52 may send the resulting transform coefficients to quantization unit 54. Quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may also reduce the bit depth associated with some or all of the coefficients. The degree of quantization may be modified by adjusting a quantization parameter. In some examples, quantization unit 54 may then perform a scan on the matrix including the quantized transform coefficients. Optionally, entropy encoding unit 56 may perform the scan.
[0082] After quantization, entropy coding unit 56 entropy encodes the quantized transform coefficients into a video bitstream using, for example, context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) coding, or another entropy coding method or technique. The encoded bitstream may then be sent to a video bitstream such as Figure 1A The video decoder 30 shown, or archived as Figure 1A Storage device 32 is shown for later transmission to or retrieval by video decoder 30. Entropy encoding unit 56 may also entropy encode motion vectors and other syntax elements for the current video frame being encoded.
[0083] Inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual video block in the pixel domain for use in generating reference blocks for predicting other video blocks. As noted above, motion compensation unit 44 may generate a motion compensated prediction block from one or more reference blocks of a frame stored in DPB 64. Motion compensation unit 44 may also apply one or more interpolation filters to the prediction block to calculate sub-integer pixel values for use in motion estimation.
[0084] Adder 62 adds the reconstructed residual block to the motion compensated prediction block generated by motion compensation unit 44 to generate a reference block for storage in DPB 64. The reference block may then be used as a prediction block by intra BC unit 48, motion estimation unit 42, and motion compensation unit 44 to inter-predict another video block in a subsequent video frame.
[0085] Figure 2B 30 is a block diagram showing another exemplary video decoder 30 according to some embodiments of the present application. The video decoder 30 includes a video data memory 79, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90, and a DPB 92. The prediction processing unit 81 further includes a motion compensation unit 82, an intra-frame prediction unit 84, and an intra-frame BC unit 85. The video decoder 30 may perform the above-mentioned Figure 1GThe encoding process is substantially the inverse of the decoding process described with respect to video encoder 20. For example, motion compensation unit 82 may generate prediction data based on motion vectors received from entropy decoding unit 80, and intra-prediction unit 84 may generate prediction data based on intra-prediction mode indicators received from entropy decoding unit 80.
[0086] In some examples, units of the video decoder 30 may be tasked to perform embodiments of the present application. In addition, in some examples, embodiments of the present disclosure may be dispersed in one or more of the multiple units of the video decoder 30. For example, the intra BC unit 85 may perform embodiments of the present application alone or in combination with other units of the video decoder 30 (such as the motion compensation unit 82, the intra prediction unit 84, and the entropy decoding unit 80). In some examples, the video decoder 30 may not include the intra BC unit 85, and the functions of the intra BC unit 85 may be performed by other components of the prediction processing unit 81 (such as the motion compensation unit 82).
[0087] The video data memory 79 may store video data, such as an encoded video bitstream, to be decoded by other components of the video decoder 30. The video data stored in the video data memory 79 may be obtained, for example, from the storage device 32, from a local video source (such as a camera), via a wired or wireless network communication of video data, or by accessing a physical data storage medium (e.g., a flash drive or hard disk). The video data memory 79 may include a coded picture buffer (CPB) that stores encoded video data from the encoded video bitstream. The DPB 92 of the video decoder 30 stores reference video data for use by the video decoder 30 when decoding the video data (e.g., in an intra-frame or inter-frame prediction decoding mode). The video data memory 79 and the DPB 92 may be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM) (including synchronous DRAM (SDRAM)), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. For illustrative purposes, the video data memory 79 and the DPB 92 are shown in FIG. Figure 2B 9 as two distinct components of video decoder 30. However, it will be apparent to those skilled in the art that video data memory 79 and DPB 92 may be provided by the same memory device or separate memory devices. In some examples, video data memory 79 may be on-chip with other components of video decoder 30, or off-chip relative to those components.
[0088] During the decoding process, the video decoder 30 receives an encoded video bitstream representing video blocks of an encoded video frame and associated syntax elements. The video decoder 30 may receive syntax elements at the video frame level and / or the video block level. The entropy decoding unit 80 of the video decoder 30 entropy decodes the bitstream to generate quantization coefficients, motion vectors or intra-frame prediction mode indicators, and other syntax elements. The entropy decoding unit 80 then forwards the motion vectors or intra-frame prediction mode indicators and other syntax elements to the prediction processing unit 81.
[0089] When a video frame is encoded as an intra-prediction coded (I) frame or for intra-coded prediction blocks in other types of frames, intra-prediction unit 84 of prediction processing unit 81 may generate prediction data for a video block of a current video frame based on a signaled intra-prediction mode and reference data from a previously decoded block of the current frame.
[0090] When the video frame is encoded as an inter-frame prediction coded (i.e., B or P) frame, the motion compensation unit 82 of the prediction processing unit 81 generates one or more prediction blocks for the video block of the current video frame based on the motion vectors and other syntax elements received from the entropy decoding unit 80. Each of the prediction blocks may be generated from a reference frame within one of the reference frame lists. The video decoder 30 may construct the reference frame lists, List 0 and List 1, using a default construction technique based on the reference frames stored in the DPB 92.
[0091] In some examples, when a video block is decoded according to the intra BC mode described herein, intra BC unit 85 of prediction processing unit 81 generates a prediction block for the current video block based on the block vector and other syntax elements received from entropy decoding unit 80. The prediction block may be within a reconstructed region of the same picture as the current video block as defined by video encoder 20.
[0092] The motion compensation unit 82 and / or the intra BC unit 85 determine prediction information for the video block of the current video frame by parsing the motion vector and other syntax elements, and then use the prediction information to generate a prediction block for the current video block being decoded. For example, the motion compensation unit 82 uses some of the received syntax elements to determine the prediction mode (e.g., intra prediction or inter prediction) for decoding the video block of the video frame, the inter prediction frame type (e.g., B or P), the construction information for one or more of the reference frame lists for the frame, the motion vector for each inter prediction encoded video block of the frame, the inter prediction state for each inter prediction encoded video block of the frame, and other information for decoding the video block in the current video frame.
[0093] Similarly, the intra BC unit 85 may use some of the received syntax elements, such as a flag to determine whether the current video block is predicted using intra BC mode, construction information of which video blocks of the frame are within the reconstruction region and should be stored in the DPB 92, a block vector for each intra BC predicted video block of the frame, an intra BC prediction state for each intra BC predicted video block of the frame, and other information for decoding the video blocks in the current video frame.
[0094] Motion compensation unit 82 may also perform interpolation using interpolation filters as used during encoding of the video blocks by video encoder 20 to calculate interpolated values for sub-integer pixels of reference blocks. In this case, motion compensation unit 82 may determine the interpolation filters used by video encoder 20 from the received syntax elements and use these interpolation filters to generate the prediction blocks.
[0095] Inverse quantization unit 86 inverse quantizes the quantized transform coefficients provided in the bitstream and entropy decoded by entropy decoding unit 80, using the same quantization parameters calculated by video encoder 20 for each video block in the video frame to determine the degree of quantization. Inverse transform processing unit 88 applies an inverse transform (e.g., an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process) to the transform coefficients to reconstruct the residual block in the pixel domain.
[0096] After the motion compensation unit 82 or the intra BC unit 85 generates a prediction block for the current video block based on the vector and other syntax elements, the adder 90 reconstructs the decoded video block for the current video block by adding the residual block from the inverse transform processing unit 88 to the corresponding prediction block generated by the motion compensation unit 82 and the intra BC unit 85. A loop filter 91 (such as a deblocking filter, an SAO filter, and / or an ALF) may be located between the adder 90 and the DPB 92 to further process the decoded video block. In some examples, the loop filter 91 may be omitted, and the decoded video block may be provided directly to the DPB 92 by the adder 90. The decoded video blocks in a given frame are then stored in the DPB 92, which stores reference frames for subsequent motion compensation of the next video block. The DPB 92 or a memory device separate from the DPB 92 may also store the decoded video for later presentation on a display device (e.g., Figure 1A on a display device 34).
[0097] In the current VVC standard and AVS3 standard, the motion information of the current coding block is copied from the spatial neighboring blocks or temporal neighboring blocks specified by the merge candidate index, or obtained through explicit signaling of motion estimation. The focus of the present disclosure is to improve the accuracy of the motion vector of the affine merge mode by improving the derivation method of the affine merge candidate. For the convenience of describing the present disclosure, the existing affine merge mode design in the VVC standard is used as an example to illustrate the proposed ideas. Please note that although the existing affine mode design in the VVC standard is used as an example throughout the present disclosure, for technicians in the field of modern video coding and decoding technology, the proposed technology can also be applied to different designs of affine motion prediction modes or other coding tools with the same or similar design spirit.
[0098] In a typical video encoding and decoding process, a video sequence usually includes an ordered set of frames or pictures. Each frame may include three sample arrays, denoted as SL, SCb, and SCr. SL is a two-dimensional array of luma samples. SCb is a two-dimensional array of Cb chroma samples. SCr is a two-dimensional array of Cr chroma samples. In other cases, a frame may be monochrome and therefore include only a two-dimensional array of luma samples.
[0099] like Figure 1C As shown in , the video encoder 20 (or more specifically, a partitioning unit in a prediction processing unit of the video encoder 20) generates an encoded representation of a frame by first partitioning the frame into a set of CTUs. A video frame may include an integer number of CTUs sequentially ordered from left to right and from top to bottom in a raster scan order. Each CTU is the largest logical coding unit, and the width and height of the CTU are signaled by the video encoder 20 in a sequence parameter set so that all CTUs in a video sequence have the same size, one of 128×128, 64×64, 32×32, and 16×16. It should be noted, however, that the present application is not necessarily limited to a particular size. As Figure 1D As shown in , each CTU may include one CTB for luma samples, two corresponding coding tree blocks for chroma samples, and syntax elements for encoding and decoding samples of the coding tree blocks. The syntax elements describe the properties of different types of units of coding pixel blocks and how the video sequence can be reconstructed at the video decoder 30, including inter-frame prediction or intra-frame prediction, intra-frame prediction mode, motion vectors, and other parameters. In a monochrome picture or a picture with three separate color planes, a CTU may include a single coding tree block and syntax elements for encoding and decoding samples of the coding tree block. The coding tree block may be an N×N sample block.
[0100] To achieve better performance, video encoder 20 may recursively perform tree partitioning, such as binary tree partitioning, ternary tree partitioning, quadtree partitioning, or a combination thereof, on the coding tree block of the CTU and divide the CTU into smaller CUs. Figure 1EAs depicted in , a 64×64 CTU 400 is first partitioned into four smaller CUs, each CU having a block size of 32×32. Among the four smaller CUs, CU 410 and CU 420 are partitioned into four CUs of a block size of 16×16, respectively. Two 16×16 CUs 430 and CU 440 are further partitioned into four CUs of a block size of 8×8, respectively. Figure 1F Depicted is a diagram showing Figure 1E The quadtree data structure of the final result of the partitioning process of CTU 400 depicted in FIG. 4 is a quadtree data structure, each leaf node of the quadtree corresponds to a CU of each size ranging from 32×32 to 8×8. Figure 1D Each CU may include a CB of luma samples and two corresponding coding blocks of chroma samples of the same size frame, and syntax elements for encoding and decoding the samples of the coding blocks. In a monochrome picture or a picture with three separate color planes, a CU may include a single coding block and syntax structures for encoding and decoding the samples of the coding block. It should be noted that Figure 1E-1F The quadtree partitioning depicted in FIG is for illustrative purposes only, and one CTU may be split into CUs based on quadtree / ternary tree / binary tree partitioning to adapt to varying local characteristics. In a multi-type tree structure, one CTU is divided by a quadtree structure, and each quadtree leaf CU may be further divided by a binary tree structure and a ternary tree structure. Figure 3A-3E As shown, there are five possible partition types for a coding block with a width of W and a height of H, namely, four-way partitioning, horizontal binary partitioning, vertical binary partitioning, horizontal ternary partitioning, and vertical ternary partitioning.
[0101] In some embodiments, the video encoder 20 may further divide the coding block of the CU into one or more M×NPBs. A PB is a rectangular (square or non-square) sample block to which the same prediction (inter or intra) is applied. The PU of a CU may include a PB of luma samples, two corresponding PBs of chroma samples, and syntax elements for predicting the PBs. In a monochrome picture or a picture with three separate color planes, a PU may include a single PB and a syntax structure for predicting the PB. The video encoder 20 may generate a predicted luma block, a predicted Cb block, and a predicted Cr block for the luma PB, Cb PB, and Cr PB of each PU of the CU.
[0102] Video encoder 20 may use intra prediction or inter prediction to generate a prediction block for a PU. If video encoder 20 uses intra prediction to generate a prediction block for a PU, video encoder 20 may generate the prediction block for the PU based on decoded samples of a frame associated with the PU. If video encoder 20 uses inter prediction to generate a prediction block for a PU, video encoder 20 may generate the prediction block for the PU based on decoded samples of one or more frames other than the frame associated with the PU.
[0103] After the video encoder 20 generates the predicted luma block, the predicted Cb block, and the predicted Cr block for one or more PUs of a CU, the video encoder 20 may generate a luma residual block for the CU by subtracting the predicted luma block of the CU from the original luma coding block of the CU, so that each sample in the luma residual block of the CU indicates the difference between a luma sample in one of the predicted luma blocks of the CU and a corresponding sample in the original luma coding block of the CU. Similarly, the video encoder 20 may generate a Cb residual block and a Cr residual block for the CU, respectively, so that each sample in the Cb residual block of the CU indicates the difference between a Cb sample in one of the predicted Cb blocks of the CU and a corresponding sample in the original Cb coding block of the CU, and each sample in the Cr residual block of the CU may indicate the difference between a Cr sample in one of the predicted Cr blocks of the CU and a corresponding sample in the original Cr coding block of the CU.
[0104] In addition, if Figure 1E As shown in , the video encoder 20 may use quadtree partitioning to decompose the luma residual block, Cb residual block and Cr residual block of the CU into one or more luma transform blocks, Cb transform blocks and Cr transform blocks, respectively. A transform block is a rectangular (square or non-square) sample block to which the same transform is applied. A TU of a CU may include a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax elements for transforming the transform block samples. Therefore, each TU of a CU may be associated with a luma transform block, a Cb transform block and a Cr transform block. In some examples, the luma transform block associated with a TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In a monochrome picture or a picture with three separate color planes, a TU may include a single transform block and a syntax structure for transforming the samples of the transform block.
[0105] The video encoder 20 may apply one or more transforms to the luma transform block of the TU to generate a luma coefficient block for the TU. The coefficient block may be a two-dimensional array of transform coefficients. The transform coefficient may be a scalar. The video encoder 20 may apply one or more transforms to the Cb transform block of the TU to generate a Cb coefficient block for the TU. The video encoder 20 may apply one or more transforms to the Cr transform block of the TU to generate a Cr coefficient block for the TU.
[0106] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), video encoder 20 may quantize the coefficient block. Quantization generally refers to a process in which transform coefficients are quantized to potentially reduce the amount of data used to represent the transform coefficients, thereby providing further compression. After video encoder 20 quantizes the coefficient block, video encoder 20 may entropy encode syntax elements indicating the quantized transform coefficients. For example, video encoder 20 may perform CABAC on the syntax elements indicating the quantized transform coefficients. Finally, video encoder 20 may output a bitstream including a sequence of bits that form a representation of an encoded frame and associated data, and the bitstream is stored in storage device 32 or sent to target device 14.
[0107] After receiving the bitstream generated by the video encoder 20, the video decoder 30 may parse the bitstream to obtain syntax elements from the bitstream. The video decoder 30 may reconstruct a frame of video data based at least in part on the syntax elements obtained from the bitstream. The process of reconstructing the video data is generally the inverse of the encoding process performed by the video encoder 20. For example, the video decoder 30 may perform an inverse transform on a coefficient block associated with a TU of the current CU to reconstruct a residual block associated with the TU of the current CU. The video decoder 30 also reconstructs the coding block of the current CU by adding samples of the prediction block for the PU of the current CU to corresponding samples of the transform block of the TU of the current CU. After reconstructing the coding block for each CU of the frame, the video decoder 30 may reconstruct the frame.
[0108] As mentioned above, video codecs mainly use two modes, namely, intra-frame prediction (or intra-frame prediction) and inter-frame prediction (or inter-frame prediction) to achieve video compression. It should be noted that IBC can be regarded as intra-frame prediction or a third mode. Between the two modes, inter-frame prediction contributes more to codec efficiency than intra-frame prediction because motion vectors are used to predict the current video block from the reference video block.
[0109] However, with the ever-improving video data capture technology and more refined video block sizes for retaining details in the video data, the amount of data required to represent the motion vector of the current frame has also increased significantly. One way to overcome this challenge is to benefit from the fact that not only a group of neighboring CUs in both the spatial domain and the temporal domain have similar video data for prediction purposes, but the motion vectors between these neighboring CUs are also similar. Therefore, the motion information of spatially neighboring CUs and / or temporally co-located CUs can be used as an approximation of the motion information (e.g., motion vector) of the current CU by exploring the spatial and temporal correlation of the spatially neighboring CUs and / or the temporally co-located CUs, which is also referred to as the "motion vector predictor (MVP)" of the current CU.
[0110] Instead of combining as above Figure 1B The actual motion vector of the current CU determined by the motion estimation unit is encoded into the video bitstream, and the motion vector prediction factor of the current CU is subtracted from the actual motion vector of the current CU to generate the motion vector difference (MVD) of the current CU. By doing so, the motion vector determined by the motion estimation unit for each CU of the frame does not need to be encoded into the video bitstream, and the amount of data used to represent motion information in the video bitstream can be significantly reduced.
[0111] As in the process of selecting a prediction block in a reference frame during inter-frame prediction of a coding block, both the video encoder 20 and the video decoder 30 need to adopt a set of rules for constructing a motion vector candidate list (also called a "merge list") of the current CU using those potential candidate motion vectors associated with the spatial neighboring CUs and / or the temporal co-located CUs of the current CU, and then selecting a member from the motion vector candidate list as the motion vector predictor of the current CU. By doing so, the motion vector candidate list itself does not need to be sent from the video encoder 20 to the video decoder 30, and the index of the selected motion vector predictor in the motion vector candidate list is sufficient for the video encoder 20 and the video decoder 30 to use the same motion vector predictor in the motion vector candidate list to encode and decode the current CU.
[0112] The present disclosure is intended to further improve the chroma coding efficiency of the motion compensation module applied in ECM. In the following, some relevant coding tools applied in the transform and entropy coding process in ECM are briefly reviewed. Then, some deficiencies in the existing design of motion compensation are discussed. Finally, solutions for improving the existing design are provided.
[0113] Motion Compensated Prediction (MCP)
[0114] Motion compensated prediction (MCP), which is also referred to as motion compensation, is one of the most widely used video coding techniques in the development of modern video coding standards. In MCP, a video frame is divided into multiple blocks, which are called prediction units (PUs). Each PU is predicted from a block of the same size from a temporal reference picture, which significantly reduces the overhead required for signal transmission blocks. In all existing video coding standards, each inter-frame PU is associated with a set of motion parameters, which includes one or two MVs and a reference picture index. Inter-frame PUs in P slices have only one reference picture list, while PUs in B slices can use up to two reference picture lists. In MCP, the corresponding inter-frame prediction samples are generated from their corresponding areas in the reference picture identified by the MV and the reference picture index. The MV specifies the horizontal and vertical displacement between the current block and its reference block in the reference picture. Figure 4 Shown x and d y is an example of a horizontal and vertical value of an MV. In fact, the value of an MV can be fractional precision. Figure 5 As shown in , when an MV has a fractional value, an interpolation filter is applied to generate the corresponding prediction sample at the fractional sample position. In VVC, for luma MC, MVs with 1 / 16 of the distance between two adjacent luma samples are supported, and for chroma MC, MVs with 1 / 32 of the distance between two adjacent chroma samples are supported.
[0115] Adaptive loop filtering
[0116] In VVC and ECM, one of 25 filters is selected for each 4×4 block based on the direction and activity of the local gradient in the adaptive loop filter (ALF).
[0117] Filter shape: Two diamond filter shapes are used (such as Figure 6A-6B ). A 7×7 diamond shape is applied to the luma component and a 5×5 diamond shape is applied to the chroma components.
[0118] Block classification: For the luminance component, each 4×4 block is classified into one of 25 categories. The classification index C is based on the quantized value of its directionality D and activity Export as follows:
[0119]
[0120] In order to calculate D and First, use the 1-D Laplacian operator to calculate the gradient in the horizontal, vertical, and two diagonal directions:
[0121]
[0122]
[0123]
[0124]
[0125] Where indexes i and j represent the coordinates of the upper left sample point in the 4×4 block, and R(i,j) indicates the reconstructed sample point at coordinate (i,j). In order to reduce the complexity of block classification, Figure 7 As shown in , the downsampled 1-D Laplacian operator calculation is applied to the gradient calculation in all directions.
[0126] Then, the D maximum and minimum values of the gradients in the horizontal and vertical directions are set to:
[0127]
[0128] The maximum and minimum values of the gradients in the two diagonal directions are set to:
[0129]
[0130] To derive the value of the directivity D, these values are compared with each other using two thresholds t1 and t2:
[0131] Step 1. If and If both are true, D is set to 0.
[0132] Step 2. If Then continue from step 3; otherwise, continue from step 4.
[0133] Step 3. If Then D is set to 2; otherwise, D is set to 1.
[0134] Step 4. If Then D is set to 4; otherwise, D is set to 3.
[0135] The activity value A is calculated as:
[0136]
[0137] A is further quantized to a range of 0 to 4 (inclusive), and the quantized value is expressed as For the chrominance components of the picture, no classification method is applied.
[0138] Geometric transformation of filter coefficients and clipping values
[0139] Before filtering each 4×4 luma block, geometric transformations such as rotation or diagonal and vertical flipping are applied to the filter coefficients f(k,l) and the corresponding filter clipping values c(k,l) according to the gradient values calculated for the block. This is equivalent to applying these transformations to the samples in the filter support region. The idea is to make different blocks with ALF applied more similar by aligning their directions.
[0140] Provides three geometric transformations including diagonal, vertical flip and rotation:
[0141] Diagonal: f D (k,l)=f(l,k),c D (k,l)=c(l,k),
[0142] Flip vertically: f V (k,l)=f(k,Kl-1), cV (k,l)=c(k,Kl-1) (6)
[0143] Rotation: f R (k,l)=f(Kl-1,k),c R (k,l)=c(Kl-1,k)
[0144] Where K is the size of the filter, 0≤k, l≤K-1 are the coefficient coordinates, so that position (0,0) is at the upper left corner and position (K-1,K-1) is at the lower right corner. The transform is applied to the filter coefficients f(k,l) and the clipping value c(k,l) according to the gradient value calculated for the block. The relationship between the transform and the four gradients in the four directions is summarized in Table 1.
[0145] Gradient Value Transform gd2 < gd1 and gh < gv No transformation gd2 < gd1 and gv < gh diagonal gd1 < gd2 and gh < gv Flip Vertically gd1 < gd2 and gv < gh Rotation
[0146] Table 1
[0147] Filtering process
[0148] When ALF is enabled for CTB, each sample point R(i,j) in the CU is filtered to obtain the sample value R′(i,j), as shown below:
[0149]
[0150] Where f(k,l) represents the decoded filter coefficients, K(x,y) is the clipping function, and c(k,l) represents the decoded clipping parameters. The variables k and l are in - and Where L represents the filter length. Clip3(-y,y,x) is a clipping function that clips the input value of x to the range [-y,y]. The clipping operation introduces nonlinearity to make the ALF more efficient by reducing the impact of neighboring sample values that differ too much from the current sample value.
[0151] Cross-component adaptive loop filter
[0152] A cross-component adaptive loop filter (CC-ALF) refines each of the two chroma components using luma samples by applying an adaptive linear filter to the luma channel and then using the output of this filtering operation for chroma refinement. Figure 8 As shown in , the filtering operation in CC-ALF is done by applying a diamond filter to the luma channel. Using one filter for each chroma channel, the operation is expressed as
[0153]
[0154] Among them, (x, y) is the chromaticity position being refined, (xY ,y Y ) is the same brightness position based on (x, y), S i is the filter support area in the luminance component, c i (x0,y0) represents the filter coefficients.
[0155] Up to 8 CC-ALF filters can be designed and sent per picture. The resulting filters are then indicated for each of the two chroma channels on a CTU basis. In addition, the following features are also included in the existing CC-ALF design:
[0156] • The design uses a 3×4 diamond shape with 8 taps.
[0157] Seven filter coefficients are sent in APS.
[0158] • Each of the transmitted coefficients has a 6-bit dynamic range and is limited to power-of-2 values.
[0159] • The eighth filter coefficient is derived at the decoder such that the sum of the filter coefficients is equal to zero.
[0160] APS can be referenced in the stripe header.
[0161] For each chroma component, CC-ALF filter selection is controlled at the CTU level.
[0162] MCP plays a key role in ensuring inter-frame coding efficiency in all existing video codec standards. With MCP, the video signal to be coded is predicted from temporal neighboring signals, and only the prediction error, MV and reference picture index are sent. At the same time, both ALF and CC-ALF can effectively improve the quality of the reconstructed video, thereby improving the performance of inter-frame coding by providing high-quality reference pictures. However, the quality of the temporal reference pictures may not be sufficient to provide effective inter-frame prediction, especially for chroma components, due to the following reasons:
[0163] The video signal may be encoded with coarse quantization (i.e., high quantization parameter (QP) value). When coarse quantization is applied, the reconstructed picture may contain severe coding artifacts, such as blocking artifacts, ringing artifacts, etc. This may cause some high-frequency information present in the original picture to be lost and / or distorted in the reconstructed picture, for example in the form of distorted edges and blurred textures. Given that the reconstructed signal of the current picture will be used as a reference for temporal prediction, this lost and / or distorted high-frequency information may reduce the effectiveness of MCP, thereby reducing the inter-frame coding and decoding efficiency of subsequent pictures.
[0164] Since the human visual system is more sensitive to brightness changes than to color changes, video coding systems typically allocate more bits to the luma component than to the chroma component, for example by adjusting the QP delta value between the luma component and the chroma component. In addition, the chroma component typically has a smaller dynamic range and is therefore smoother than the luma component. Therefore, after quantization, more transform coefficients of the chroma component become zero. Therefore, the problem of missing or distorted high-frequency information will be more obvious in the reconstructed chroma signal. Since more bits need to be generated to encode the chroma residual signal, this may seriously affect the prediction efficiency of the chroma component. Although CC-ALF may be able to recover the lost high-frequency information in the reconstructed pictures, this information may be attenuated in the motion compensation stage when they are used as reference pictures for inter-frame prediction.
[0165] In the present disclosure, a method is proposed to improve the efficiency of motion compensated prediction of chroma components, thereby improving the quality of temporal prediction. Specifically, it is proposed to apply adaptive cross-component filtering in the motion compensation stage, which is called cross-component motion compensated prediction (CC-MCP), which uses the high-frequency information of motion compensated luma samples as a guide to improve the quality of motion compensated chroma samples. In this way, the energy of the chroma residual is minimized, thereby reducing the overhead of signaling the chroma signal.
[0166] Fig. 9 Error! Reference source not found. A block diagram of a video encoder when the proposed CC-MCP is applied is provided. First, similar to a conventional video encoder, the motion estimation and compensation module generates motion-compensated luminance and chrominance signals by matching the current block with a block in a reference picture using the best MV. Then, an adaptive cross-component filter, i.e., CC-MCP filtering, is provided, wherein the motion-compensated chrominance signal is filtered using the proposed CC-MCP filter according to the corresponding motion-compensated luminance signal to generate a filtered motion-compensated chrominance signal. Afterwards, the original signal is subtracted from the prediction signal to eliminate temporal redundancy and generate a corresponding residual signal. Transformation and quantization are applied to the residual signal, which is then entropy encoded and output to a bitstream. In order to obtain a reconstructed signal, a reconstructed residual signal is obtained by inverse quantization and inverse transformation. Then, the reconstructed residual is added to the motion-compensated prediction. In addition, a loop filtering process (e.g., deblocking, ALF, and SAO) is applied to the reconstructed video signal for output. As will be discussed later, the filter coefficients of the proposed CC-MCP filter can be derived directly from the neighboring reconstructed luma samples and the neighboring reconstructed chroma samples at the decoder, or can be derived at the encoder and sent to the decoder. In addition, in order to maximize the coding gain of the proposed method, additional syntax can be signaled at a given block level (e.g., CTU, CU or PU level) to indicate whether the proposed CC-MCP filtering is applied to the current block for motion compensation.
[0167] Fig.10 shows that the proposed reception is Fig. 9 Block diagram of a decoder for a bitstream generated by an encoder in . At the decoder, the bitstream is first parsed by an entropy decoder. The residual coefficients are then dequantized and inverse transformed to obtain the reconstructed residual. For temporal prediction, a prediction signal is first generated by obtaining a motion compensated block using the prediction information (i.e., MV and reference index) sent by the signal. Then, if CC-MCP is enabled for the block as parsed from the bitstream, the motion compensated chrominance signal is further processed by the proposed CC-MCP filtering; otherwise, the motion compensated chrominance signal is not filtered. The motion compensated signal (filtered or unfiltered) and the reconstructed residual are then added together to obtain a reconstructed video. The reconstructed video may also be loop filtered before being stored in a reference picture memory for display and / or for decoding future video signals.
[0168] CC-MCP filtering process of motion compensated chrominance signal
[0169] Since the human visual system is more sensitive to brightness changes than to color changes, video coding systems typically allocate more bits to the brightness component than to the chrominance component, for example, by adjusting the QP delta value between the brightness component and the chrominance component. Therefore, the chrominance component is usually smoother than the brightness component. As a result, more transform coefficients are quantized to zero, and there will be more blurred edges and textures in the reconstructed chrominance signal. This may reduce the prediction efficiency of chrominance, so more overhead is required to encode and decode the chrominance residual. Although ALF can be applied to reduce the distortion between the reference chrominance signal and the original chrominance signal, due to the low-pass characteristic of the ALF filter, it cannot restore the missing high-frequency information in the reconstructed chrominance signal.
[0170] In the present disclosure, blurred edges and textures in the chroma channel of the temporal prediction signal can be restored or repaired by using the corresponding neighboring samples in the luma channel. Specifically, it is proposed to apply cross-component filtering during the motion compensation stage, which uses the high-frequency information of the motion compensated luma signal as a guide to improve the quality of the motion compensated chroma signal. Specifically, assume that C(x,y) and C′(x,y) indicate the original reconstructed chroma sample and the filtered reconstructed chroma sample at coordinates (x,y); f L (x, y) indicates the coefficients of the high-pass filter applied to reconstruct the corresponding H×L neighborhood of the luma sample Y(2x-i, 2y-j), where The proposed CC-MCP filtering can be calculated based on the following formula.
[0171]
[0172] Decoder-side derivation of CC-MCP filter coefficients
[0173] In the following, a decoder-side method is proposed, in which the coefficients of the proposed CC-MCP filter are derived at the decoder side without signaling. Specifically, when CC-MCP filtering is applied to a block, the method derives the coefficients from the neighboring reconstructed chroma samples of the current block and its corresponding luma and chroma prediction samples. Given a block B and its predefined neighboring region P (e.g., ), we can use the encoded MV of the current block to find the corresponding luminance prediction sample and chrominance prediction samples Then, the LMMSE method can be used by and The filter coefficients are derived as input to the CC-MCP filter and minimized The difference between the CC-MCP filtered output, i.e.,
[0174]
[0175] Then, as shown in equation (9), the derived filter can be applied to enhance the chrominance prediction signal of the current block.
[0176] On the other hand, since the proposed method uses the motion compensated samples of the neighboring area at the target for LMMSE derivation, it may be more beneficial to apply the proposed decoder-side derivation method when the reconstructed signal of the current picture contains higher quality reconstruction information than the reconstructed signal of the reference picture. Therefore, in one embodiment of the present disclosure, the proposed decoder-side derivation method is applied only when the reference picture uses a smaller QP value than the current picture.
[0177] Explicit signaling of CC-MCP filter coefficients
[0178] In the above method, CC-MCP filter coefficients are derived from neighboring reconstructed samples, which may not be accurate because neighboring reconstructed samples may always be highly correlated with samples in the current block. To address this problem, in one embodiment, it is proposed to derive CC-MCP filter coefficients at the encoder and explicitly signal the CC-MCP filter coefficients to the decoder.
[0179] When such a signaling-based scheme is used in an actual video coding system, the adaptation of CC-MCP filter coefficients can be applied to various coding levels, such as sequence level, picture / strip level and / or block level; and each adaptation level can provide different trade-offs between coding efficiency and coding / decoding complexity. For example, if the filter coefficients are adapted at the sequence level, the encoder needs to derive the filter coefficients for the entire video sequence, and all filter coefficients and the decision whether to apply motion compensation filtering can be carried in a sequence level parameter set (such as a video parameter set (VPS) and a sequence parameter set (SPS)). If the filter coefficients are adapted at the picture level, the encoder needs to derive the filter coefficients for one picture, and all filter coefficients and the decision whether to apply motion compensation filtering can be carried in a picture level parameter set (such as a picture parameter set (PPS)). If the filter coefficients are adapted at the stripe level, the encoder needs to derive the filter coefficients for each individual stripe, and all filter coefficients and the decision whether to apply motion compensation filtering can be carried in the stripe header. Furthermore, since the motivation of the present disclosure is to recover high frequency information in the motion compensated chrominance signal, the proposed filtering method may only be beneficial to regions with rich edge and texture information. With this in mind, a region-based filter coefficient adaptation method may also be applied, where the motion compensation filter is signaled for different regions and is only applied to regions containing rich high frequency details. In this way, a high pass filter will not be applied to prediction samples in flat regions, which may reduce encoding / decoding complexity. Whether a region is flat may be determined by the encoder / decoder based on motion compensated luminance samples.
[0180] Using CC-MCP to handle unidirectional and bidirectional predictions
[0181] In modern video coding standards, motion compensated prediction has two main prediction types, namely unidirectional prediction and bidirectional prediction. For unidirectional prediction, the application can use at most one motion compensated block from one reference picture to predict a unidirectional prediction for each block; for bidirectional prediction, the application can predict the bidirectional prediction of a block by averaging two motion compensated blocks from two reference pictures. All the above CC-MCP schemes are discussed based on the assumption that the prediction signal of the current video block to be encoded comes from one prediction direction (i.e., unidirectional prediction). For bidirectional prediction blocks, the proposed motion compensation filtering scheme can be applied in different ways.
[0182] In the first method, it is proposed to directly enhance the output chrominance prediction samples by applying the CC-MCP filter only once. Specifically, in this method, the encoder / decoder first generates a motion compensated prediction of the encoded video by averaging two prediction signals from two reference pictures; then, the proposed CC-MCP is applied to enhance the quality of the resulting chrominance prediction signal.
[0183] In the second method, two CC-MCP filtering processes are applied to enhance the motion compensated prediction signals from two reference pictures respectively. Specifically, for a bidirectional prediction block, the method first generates two prediction blocks from two reference picture lists; then, CC-MCP is applied to enhance the quality of the two prediction blocks respectively, and finally the two prediction blocks are averaged to generate the output prediction signal.
[0184] Fig.11 A computing environment (or computing device) 1110 coupled to a user interface 1160 is shown. The computing environment 1110 may be part of a data processing server. In some embodiments, the computing device 1110 may perform any of the various methods or processes (such as encoding / decoding methods or processes) described above according to various examples of the present disclosure. The computing environment 1110 includes a processor 1120, a memory 1140, and an I / O interface 1150.
[0185] The processor 1120 generally controls the overall operation of the computing environment 1110, such as operations associated with display, data acquisition, data communication, and image processing. The processor 1120 may include one or more processors to execute instructions to perform all or some steps in the above method. In addition, the processor 1120 may include one or more modules that facilitate interaction between the processor 1120 and other components. The processor may be a central processing unit (CPU), a microprocessor, a single-chip microcomputer, a GPU, etc.
[0186] The memory 1140 is configured to store various types of data to support the operation of the computing environment 1110. The memory 1140 may include predetermined software 1142. Examples of such data include instructions for any application or method operating on the computing environment 1110, video data sets, image data, etc. The memory 1140 may be implemented by using any type of volatile or non-volatile memory device or a combination thereof, such as static random access memory (SRAM), electrically erasable programmable read-only memory (EEPROM), erasable programmable read-only memory (EPROM), programmable read-only memory (PROM), read-only memory (ROM), magnetic memory, flash memory, magnetic disk, or optical disk.
[0187] The I / O interface 1150 provides an interface between the processor 1120 and peripheral interface modules such as a keyboard, a click wheel, buttons, etc. The buttons may include, but are not limited to, a home button, a start scan button, and a stop scan button. The I / O interface 1150 may be coupled to an encoder and a decoder.
[0188] In some embodiments, a non-transitory computer-readable storage medium is also provided, which includes a plurality of programs, for example, included in the memory 1140, and can be executed by the processor 1120 in the computing environment 1110, for performing the above method. For example, the non-transitory computer-readable storage medium can be a ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc.
[0189] A non-transitory computer-readable storage medium has stored therein a plurality of programs for execution by a computing device having one or more processors, wherein the plurality of programs, when executed by the one or more processors, causes the computing device to perform the above-described method for motion prediction.
[0190] In some embodiments, the computing environment 1110 may be implemented using one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), graphic processing units (GPUs), controllers, microcontrollers, microprocessors, or other electronic components for executing the above methods.
[0191] Fig.12 is a flow chart illustrating a method for video decoding according to an example of the present disclosure. The method may be implemented for decoding an inter-coded block.
[0192] In step 1201, at the decoder side, the processor 1120 may obtain motion compensated chroma samples and a plurality of motion compensated luminance samples for a current inter-frame coding block.
[0193] In step 1202, the processor 1120 may obtain an adaptive cross-component filter. For example, the adaptive cross-component filter may be Figure 9-10 The CC-MCP filter of the present disclosure applied in the motion compensation stage is shown in FIG.
[0194] In some examples, processor 1120 may derive an adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information of a current inter-coded block.
[0195] In some examples, the processor 1120 may obtain a plurality of motion compensated luminance samples adjacent to the reconstructed luminance samples and a plurality of motion compensated chrominance samples adjacent to the reconstructed chrominance samples based on the motion information of the current inter-frame coding block, where: Figure 8 As shown in , neighboring reconstructed luma samples and corresponding neighboring reconstructed chroma samples are located in a predefined neighboring area.
[0196] In addition, as shown in equation (9), the processor 1120 can obtain output neighboring chroma samples based on the adaptive cross-component filter, multiple motion compensated luma samples of the neighboring reconstructed luma samples, and multiple motion compensated chroma samples of the neighboring reconstructed chroma samples. In addition, as shown in equation (10), the processor 1120 can derive one or more filter coefficients of the adaptive cross-component filter by minimizing the difference between the output neighboring chroma samples and the corresponding neighboring reconstructed chroma samples.
[0197] In addition, in some examples, processor 1120 can obtain chroma refinement by applying an adaptive cross-component filter to multiple motion compensated luma samples adjacent to the reconstructed luma samples, and obtain output adjacent chroma samples based on the chroma refinement and the multiple motion compensated chroma samples adjacent to the reconstructed chroma samples.
[0198] In some examples, processor 1120 may receive one or more filter coefficients of an adaptive cross-component filter signaled by an encoder, wherein the one or more filter coefficients are signaled at a specific level. For example, the specific level may include one of the following levels: sequence level, picture level, or block level.
[0199] In some examples, processor 1120 may obtain chroma refinement by applying an adaptive cross-component filter to multiple motion compensated luminance samples of a current inter-frame coding block, and may obtain filtered motion compensated chroma samples based on the chroma refinement and the motion compensated chroma samples of the current inter-frame coding block.
[0200] In step 1203, the processor 1120 may obtain filtered motion compensated chroma samples based on the adaptive cross-component filter, the motion compensated chroma samples, and the plurality of motion compensated luminance samples.
[0201] Fig.13 is shown with Fig.12 The flowchart of the method for video encoding corresponding to the method for video decoding shown in . The method can be used to encode inter-frame coding blocks.
[0202] In step 1301, at the encoder side, the processor 1120 may generate motion compensated chroma samples and a plurality of motion compensated luminance samples for a current inter-frame coding block.
[0203] In step 1302, the processor 1120 may obtain filtered motion compensated chroma samples based on an adaptive cross-component filter, motion compensated chroma samples, and a plurality of motion compensated luminance samples. For example, the adaptive cross-component filter may be as follows: Figure 9-10 The CC-MCP filter of the present disclosure applied in the motion compensation stage is shown in FIG.
[0204] In some examples, processor 1120 may obtain an adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information of a current inter-frame coding block.
[0205] In some examples, the processor 1120 may obtain a plurality of motion compensated luminance samples adjacent to the reconstructed luminance samples and a plurality of motion compensated chrominance samples adjacent to the reconstructed chrominance samples based on the motion information of the current inter-frame coding block, where: Figure 8 As shown in , neighboring reconstructed luma samples and corresponding neighboring reconstructed chroma samples are located in a predefined neighboring area.
[0206] In addition, as shown in equation (9), the processor 1120 can obtain output neighboring chroma samples based on the adaptive cross-component filter, multiple motion compensated luma samples of the neighboring reconstructed luma samples, and multiple motion compensated chroma samples of the neighboring reconstructed chroma samples. In addition, as shown in equation (10), the processor 1120 can derive one or more filter coefficients of the adaptive cross-component filter by minimizing the difference between the output neighboring chroma samples and the corresponding neighboring reconstructed chroma samples.
[0207] In addition, in some examples, processor 1120 can obtain chroma refinement by applying an adaptive cross-component filter to multiple motion compensated luma samples adjacent to the reconstructed luma samples, and obtain output adjacent chroma samples based on the chroma refinement and the multiple motion compensated chroma samples adjacent to the reconstructed chroma samples.
[0208] In some examples, processor 1120 may signal one or more filter coefficients of an adaptive cross-component filter signaled by an encoder, wherein the one or more filter coefficients are signaled at a specific level. For example, the specific level may include one of the following levels: sequence level, picture level, or block level.
[0209] In some examples, processor 1120 may obtain chroma refinement by applying an adaptive cross-component filter to multiple motion compensated luminance samples of a current inter-frame coding block, and may obtain filtered motion compensated chroma samples based on the chroma refinement and the motion compensated chroma samples of the current inter-frame coding block.
[0210] Fig.14 1 is a flow chart showing a method for video decoding according to an example of the present disclosure. The method can be used to decode an inter-coded block.
[0211] In step 1401, at the decoder side, the processor 1120 may obtain a first motion compensated chroma sample and a plurality of first motion compensated luminance samples by matching a current block with a first block in a first reference picture based on motion information associated with the first reference picture.
[0212] For example, the method is applied to bidirectional prediction, where a block can be predicted by averaging two motion compensated blocks from two reference pictures.
[0213] In step 1402, the processor 1120 may obtain second motion compensated chroma samples and a plurality of second motion compensated luminance samples by matching the current block with a second block in the second reference picture based on motion information associated with the second reference picture.
[0214] In step 1403, the processor 1120 may obtain one or more adaptive cross-component filters. For example, the adaptive cross-component filter may be Figure 9-10 The CC-MCP filter of the present disclosure applied in the motion compensation stage is shown in FIG. In some examples, the one or more adaptive cross-component filters may include one or two adaptive cross-component filters.
[0215] In some examples, the processor 1120 may obtain a first adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with a first reference picture, and may obtain a first filtered motion-compensated chroma sample based on the first adaptive cross-component filter, the first motion-compensated chroma sample, and a plurality of first motion-compensated luma samples. In addition, the processor 1120 may obtain a second adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with a second reference picture, and may obtain a second filtered motion-compensated chroma sample based on the second adaptive cross-component filter, the second motion-compensated chroma sample, and a plurality of second motion-compensated luma samples. In addition, the processor 1120 may obtain filtered motion-compensated chroma samples based on the first filtered motion-compensated chroma sample and the second filtered motion-compensated chroma sample.
[0216] In step 1404, the processor 1120 may obtain filtered motion compensated chroma samples based on one or two adaptive cross-component filters, first motion compensated chroma samples, multiple first motion compensated luminance samples, second motion compensated chroma samples, and multiple second motion compensated luminance samples.
[0217] In some examples, processor 1120 may obtain filtered motion compensated chroma samples by averaging the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples.
[0218] In some examples, processor 1120 may obtain an adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with a first reference picture and motion information associated with a second reference picture, obtain an average motion compensated chroma sample by averaging the first motion compensated chroma sample and the second motion compensated chroma sample, obtain multiple average motion compensated luminance samples by averaging multiple first motion compensated luminance samples and multiple second motion compensated luminance samples, and obtain filtered motion compensated chroma samples based on the adaptive cross-component filter, the average motion compensated chroma sample, and the multiple average motion compensated luminance samples.
[0219] Fig.15 is shown with Fig.14 Flowchart of a method for video encoding corresponding to the method for video decoding shown in . The method can be used to encode inter-frame coded blocks and can be applied to bidirectional prediction, in which a block can be predicted by averaging two motion compensated blocks from two reference pictures.
[0220] In step 1501 , at the encoder side, the processor 1120 may generate a first motion compensated chroma sample and a plurality of first motion compensated luminance samples by matching a current block with a first block in a first reference picture based on motion information associated with the first reference picture.
[0221] In step 1502, the processor 1120 may generate second motion compensated chroma samples and a plurality of second motion compensated luminance samples by matching the current block with a second block in a second reference picture based on motion information associated with the second reference picture.
[0222] In step 1503, the processor 1120 may obtain one or more adaptive cross-component filters. For example, the adaptive cross-component filter may be Figure 9-10 The CC-MCP filter of the present disclosure applied in the motion compensation stage is shown in FIG. In some examples, the one or more adaptive cross-component filters may include one or two adaptive cross-component filters.
[0223] In some examples, the processor 1120 may obtain a first adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with a first reference picture, and may obtain a first filtered motion-compensated chroma sample based on the first adaptive cross-component filter, the first motion-compensated chroma sample, and a plurality of first motion-compensated luma samples. In addition, the processor 1120 may obtain a second adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with a second reference picture, and may obtain a second filtered motion-compensated chroma sample based on the second adaptive cross-component filter, the second motion-compensated chroma sample, and a plurality of second motion-compensated luma samples. In addition, the processor 1120 may obtain filtered motion-compensated chroma samples based on the first filtered motion-compensated chroma sample and the second filtered motion-compensated chroma sample.
[0224] In step 1504, the processor 1120 may obtain filtered motion compensated chroma samples based on one or two adaptive cross-component filters, first motion compensated chroma samples, multiple first motion compensated luminance samples, second motion compensated chroma samples, and multiple second motion compensated luminance samples.
[0225] In some examples, processor 1120 may obtain filtered motion compensated chroma samples by averaging the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples.
[0226] In some examples, processor 1120 may obtain an adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with a first reference picture and motion information associated with a second reference picture, obtain an average motion compensated chroma sample by averaging the first motion compensated chroma sample and the second motion compensated chroma sample, obtain multiple average motion compensated luminance samples by averaging multiple first motion compensated luminance samples and multiple second motion compensated luminance samples, and obtain filtered motion compensated chroma samples based on the adaptive cross-component filter, the average motion compensated chroma sample, and the multiple average motion compensated luminance samples.
[0227] In some examples, a device for video encoding and decoding is provided. The device includes a processor 1120 and a memory 1140 configured to store instructions executable by the processor; wherein the processor is configured to perform the following when executing the instructions: Figure 12-Figure 15 Any of the methods shown in .
[0228] In some other examples, a non-transitory computer-readable storage medium is provided having instructions stored therein. When the instructions are executed by the processor 1120, the instructions cause the processor to perform the following steps: Figure 12-Figure 15In one example, multiple programs may be executed by processor 1120 in computing environment 1110 to receive (e.g., from Figure 1G The video encoder 20 in the computing environment 1110 receives a bitstream or data stream including encoded video information (e.g., video blocks representing encoded video frames and / or one or more associated syntax elements, etc.), and can also be executed by the processor 1120 in the computing environment 1110 to perform the above-mentioned decoding method according to the received bitstream or data stream. In another example, multiple programs can be executed by the processor 1120 in the computing environment 1110 to perform the above-mentioned encoding method, encode the video information (e.g., video blocks representing video frames and / or one or more associated syntax elements, etc.) into a bitstream or data stream, and can also be executed by the processor 1120 in the computing environment 1110 to send a bitstream or data stream (e.g., to a Figure 2B Optionally, a non-transitory computer-readable storage medium may store therein a bit stream or a data stream, the bit stream or the data stream comprising a video decoder 30 in the encoder (e.g., Figure 1G The video encoder 20 in FIG. 1 generates a video signal for a decoder (eg, Figure 2B The non-transitory computer-readable storage medium may be, for example, a ROM, a random access memory (RAM), a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, etc.
[0229] By considering the specification and practice of the disclosure disclosed herein, other examples of the disclosure will be apparent to those skilled in the art. This application is intended to cover any variation, use or adaptation of the disclosure, which follows the general principles of the disclosure and includes such deviations from the disclosure within known or customary practice in the art. The specification and examples are intended to be considered exemplary only.
[0230] It will be understood that the present disclosure is not limited to the precise examples described above and shown in the accompanying drawings and that various modifications and changes may be made without departing from the scope thereof.
Claims
1. A method for decoding an inter-frame coded block, comprising: Obtaining, by the decoder, a motion compensated chroma sample and a plurality of motion compensated luminance samples for a current inter-frame coding block; obtaining, by the decoder, an adaptive cross-component filter; as well as The decoder obtains filtered motion compensated chroma samples based on the adaptive cross-component filter, the motion compensated chroma samples and the plurality of motion compensated luminance samples.
2. The method according to claim 1, further comprising: The adaptive cross-component filter is derived by the decoder based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information of the current inter-frame coded block.
3. The method according to claim 2, further comprising: The decoder obtains, based on the motion information of the current inter-frame coding block, a plurality of motion compensated luminance samples of the neighboring reconstructed luminance samples and a plurality of motion compensated chrominance samples of the neighboring reconstructed chrominance samples, wherein the neighboring reconstructed luminance samples and the corresponding neighboring reconstructed chrominance samples are located in a predefined neighboring area; Obtaining, by the decoder, output neighboring chroma samples based on the adaptive cross-component filter, the plurality of motion compensated luma samples of the neighboring reconstructed luma samples, and the plurality of motion compensated chroma samples of the neighboring reconstructed chroma samples; and One or more filter coefficients of the adaptive cross-component filter are derived by the decoder by minimizing a difference between the output neighboring chroma samples and the corresponding neighboring reconstructed chroma samples.
4. The method according to claim 3, further comprising: obtaining, by the decoder, chroma refinement by applying the adaptive cross-component filter to the plurality of motion compensated luma samples adjacent to the reconstructed luma samples; as well as The output neighboring chroma samples are obtained by the decoder based on the chroma refinement and the plurality of motion compensated chroma samples of the neighboring reconstructed chroma samples.
5. The method according to claim 1, further comprising: One or more filter coefficients of the adaptive cross-component filter signaled by an encoder are received by the decoder, wherein the one or more filter coefficients are signaled at a particular level.
6. The method according to claim 5, wherein: The specific level includes one of the following levels: sequence level, picture level, or block level.
7. The method according to claim 1, further comprising: obtaining, by the decoder, chroma refinement by applying the adaptive cross-component filter to the plurality of motion compensated luma samples of the current inter-coded block; as well as The decoder obtains the filtered motion compensated chroma samples based on the chroma refinement and the motion compensated chroma samples of the current inter-frame coded block.
8. A method for encoding an inter-frame coding block, comprising: The encoder generates a motion compensated chroma sample and a plurality of motion compensated luminance samples for a current inter-frame coding block; as well as The encoder obtains filtered motion compensated chroma samples based on an adaptive cross-component filter, the motion compensated chroma samples, and the plurality of motion compensated luminance samples.
9. The method according to claim 8, further comprising: The adaptive cross-component filter is obtained by the encoder based on neighboring reconstructed luminance samples, neighboring reconstructed chrominance samples and motion information of the current inter-frame coding block.
10. The method according to claim 9, further comprising: The encoder obtains, based on motion information of the current inter-frame coding block, a plurality of motion compensated luminance samples of the neighboring reconstructed luminance samples and a plurality of motion compensated chrominance samples of the neighboring reconstructed chrominance samples, wherein the plurality of neighboring reconstructed luminance samples and the corresponding neighboring reconstructed chrominance samples are located in a predefined neighboring area; Obtaining, by the encoder, output neighboring chroma samples based on the adaptive cross-component filter, the plurality of motion compensated luma samples of the neighboring reconstructed luma samples, and the plurality of motion compensated chroma samples of the neighboring reconstructed chroma samples; and One or more filter coefficients of the adaptive cross-component filter are obtained by the encoder by minimizing the difference between the output neighboring chroma samples and the corresponding neighboring reconstructed chroma samples.
11. The method according to claim 10, further comprising: obtaining, by the encoder, chroma refinement by applying the adaptive cross-component filter to the plurality of motion compensated luma samples adjacent to the reconstructed luma samples; as well as The output neighboring chroma samples are obtained by the encoder based on the chroma refinement and the plurality of motion compensated chroma samples of the neighboring reconstructed chroma samples.
12. The method according to claim 8, further comprising: One or more filter coefficients of the adaptive cross-component filter are signaled by the encoder into a bitstream, wherein the one or more filter coefficients are signaled at a specific level.
13. The method according to claim 12, wherein: The particular level comprises one of the following levels: sequence level, picture level, or block level.
14. The method according to claim 8, further comprising: Obtaining, by the encoder, chroma refinement by applying the adaptive cross-component filter to the plurality of motion compensated luma samples of the current inter-coded block; as well as The encoder obtains the filtered motion compensated chroma samples based on the chroma refinement and the motion compensated chroma samples of the current inter-frame coded block.
15. A method for video decoding, comprising: Obtaining, by a decoder, a first motion compensated chroma sample and a plurality of first motion compensated luminance samples by matching a current block with a first block in the first reference picture based on motion information associated with the first reference picture; Obtaining, by the decoder, second motion compensated chroma samples and a plurality of second motion compensated luminance samples by matching the current block with a second block in the second reference picture based on motion information associated with the second reference picture; obtaining, by the decoder, one or two adaptive cross-component filters; as well as The decoder obtains filtered motion compensated chroma samples based on the one or two adaptive cross-component filters, the first motion compensated chroma samples, the plurality of first motion compensated luminance samples, the second motion compensated chroma samples, and the plurality of second motion compensated luminance samples.
16. The method according to claim 15, further comprising: Obtaining, by the decoder, a first adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with the first reference picture; Obtaining, by the decoder, first filtered motion compensated chroma samples based on the first adaptive cross-component filter, the first motion compensated chroma samples, and the plurality of first motion compensated luminance samples; Obtaining, by the decoder, a second adaptive cross-component filter based on the neighboring reconstructed luma samples, the neighboring reconstructed chroma samples, and motion information associated with the second reference picture; Obtaining, by the decoder, second filtered motion compensated chroma samples based on the second adaptive cross-component filter, the second motion compensated chroma samples, and the plurality of second motion compensated luminance samples; as well as The decoder obtains the filtered motion compensated chroma samples based on the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples.
17. The method according to claim 16, wherein: The step of obtaining the filtered motion compensated chroma samples based on the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples comprises: The filtered motion compensated chroma samples are obtained by averaging the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples.
18. The method according to claim 15, further comprising: Obtaining, by the decoder, an adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with the first reference picture and motion information associated with the second reference picture; The decoder obtains an average motion compensated chroma sample by averaging the first motion compensated chroma sample and the second motion compensated chroma sample; The decoder obtains a plurality of average motion compensated luminance samples by averaging the plurality of first motion compensated luminance samples and the plurality of second motion compensated luminance samples; as well as The decoder obtains the filtered motion compensated chroma samples based on the adaptive cross-component filter, the average motion compensated chroma samples and the multiple average motion compensated luminance samples.
19. A method for video encoding, comprising: generating, by an encoder, a first motion compensated chroma sample and a plurality of first motion compensated luminance samples by matching a current block with a first block in a first reference picture based on motion information associated with the first reference picture; generating, by the encoder, second motion compensated chroma samples and a plurality of second motion compensated luminance samples by matching a current block with a second block in a second reference picture based on motion information associated with the second reference picture; obtaining, by the decoder, one or two adaptive cross-component filters; as well as The encoder obtains filtered motion compensated chroma samples based on the one or two adaptive cross-component filters, the first motion compensated chroma samples, the plurality of first motion compensated luminance samples, the second motion compensated chroma samples, and the plurality of second motion compensated luminance samples.
20. The method according to claim 19, further comprising: Obtaining, by the encoder, a first adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with the first reference picture; Obtaining, by the encoder, first filtered motion compensated chroma samples based on the first adaptive cross-component filter, the first motion compensated chroma samples, and the plurality of first motion compensated luminance samples; Obtaining, by the encoder, a second adaptive cross-component filter based on the neighboring reconstructed luma samples, the neighboring reconstructed chroma samples, and motion information associated with the second reference picture; Obtaining, by the encoder, second filtered motion compensated chroma samples based on the second adaptive cross-component filter, the second motion compensated chroma samples, and the plurality of second motion compensated luminance samples; as well as The encoder obtains the filtered motion compensated chroma samples based on the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples.
21. The method according to claim 20, wherein: The step of obtaining the filtered motion compensated chroma samples based on the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples comprises: The filtered motion compensated chroma samples are obtained by averaging the first filtered motion compensated chroma samples and the second filtered motion compensated chroma samples.
22. The method of claim 19, further comprising: Obtaining, by the encoder, an adaptive cross-component filter based on neighboring reconstructed luma samples, neighboring reconstructed chroma samples, and motion information associated with the first reference picture and motion information associated with the second reference picture; The encoder obtains an average motion compensated chroma sample by averaging the first motion compensated chroma sample and the second motion compensated chroma sample; The encoder obtains a plurality of average motion compensated luminance samples by averaging the plurality of first motion compensated luminance samples and the plurality of second motion compensated luminance samples; as well as The encoder obtains the filtered motion compensated chroma samples based on the adaptive cross-component filter, the average motion compensated chroma samples and the multiple average motion compensated luminance samples.
23. A device for video decoding, comprising: one or more processors; as well as a memory coupled to the one or more processors and configured to store instructions executable by the one or more processors, Wherein, when executing the instructions, the one or more processors are configured to perform the method according to any one of claims 1-7 and 15-18.
24. A device for video encoding, comprising: one or more processors; as well as a memory coupled to the one or more processors and configured to store instructions executable by the one or more processors, Wherein, when executing the instructions, the one or more processors are configured to perform the method according to any one of claims 8-14 and 19-22.
25. A non-transitory computer-readable storage medium for storing computer-executable instructions, which, when executed by one or more computer processors, cause the one or more computer processors to receive a bit stream and perform the method of any one of claims 1-7 and 15-18 based on the bit stream.
26. A non-transitory computer-readable storage medium for storing computer-executable instructions, which, when executed by one or more computer processors, cause the one or more computer processors to perform the method according to any one of claims 8-14 and 19-22 to encode a current block into a bitstream and send the bitstream.
27. A non-transitory computer-readable storage medium for storing a bit stream to be decoded by the method according to any one of claims 1-7 and 15-18.
28. A non-transitory computer-readable storage medium for storing a bitstream generated by the method according to any one of claims 8-14 and 19-22.