Patent ID: 12192534

In the following, identical reference signs refer to identical or at least functionally equivalent features. In part, different reference signs referring to the same entities have been used in different figures.

DETAILED DESCRIPTION

First, we demonstrate the general concept of image coding inFIGS.1-3. InFIG.4andFIG.8, a disadvantage of a conventional deblocking filter is shown. With regard toFIGS.5-7, the construction and function of different embodiments of the apparatus are shown and described. Finally, with regard toFIG.9, an embodiment of the method is shown and described. Similar entities and reference numbers in different figures have been partially omitted.

In the following description, reference is made to the accompanying figures, which form part of the disclosure, and which show, by way of illustration, specific aspects of embodiments of the disclosure or specific aspects in which embodiments of the present disclosure may be used. It is understood that embodiments of the disclosure may be used in other aspects and comprise structural or logical changes not depicted in the figures. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims.

For instance, it is understood that a disclosure in connection with a described method may also hold true for a corresponding device or system configured to perform the method and vice versa. For example, if one or a plurality of specific method steps are described, a corresponding device may include one or a plurality of units, e.g., functional units, to perform the described one or plurality of method steps (e.g., one unit performing the one or plurality of steps, or a plurality of units each performing one or more of the plurality of steps), even if such one or more units are not explicitly described or illustrated in the figures. On the other hand, for example, if a specific apparatus is described based on one or a plurality of units, e.g., functional units, a corresponding method may include one step to perform the functionality of the one or plurality of units (e.g., one step performing the functionality of the one or plurality of units, or a plurality of steps each performing the functionality of one or more of the plurality of units), even if such one or plurality of steps are not explicitly described or illustrated in the figures. Further, it is understood that the features of the various exemplary embodiments and/or aspects described herein may be combined with each other, unless specifically noted otherwise.

Video coding typically refers to the processing of a sequence of pictures, which form the video or video sequence. Instead of the term picture the terms frame or image may be used as synonyms in the field of video coding. Video coding comprises two parts, video encoding and video decoding. Video encoding is performed at the source side, typically comprising processing (e.g., by compression) the original video pictures to reduce the amount of data required for representing the video pictures (for more efficient storage and/or transmission). Video decoding is performed at the destination side and typically comprises the inverse processing compared to the encoder to reconstruct the video pictures. Embodiments referring to “coding” of video pictures (or pictures in general, as will be explained later) shall be understood to relate to both, “encoding” and “decoding” of video pictures. The combination of the encoding part and the decoding part is also referred to as CODEC (COding and DECoding).

In the case of lossless video coding, the original video pictures can be reconstructed, i.e. the reconstructed video pictures have the same quality as the original video pictures (assuming no transmission loss or other data loss during storage or transmission). In the case of lossy video coding, further compression, e.g., by quantization, is performed, to reduce the amount of data representing the video pictures, which cannot be completely reconstructed at the decoder, i.e. the quality of the reconstructed video pictures is lower or worse compared to the quality of the original video pictures.

Several video coding standards since H.261 belong to the group of “lossy hybrid video codecs” (i.e. combine spatial and temporal prediction in the sample domain and 2D transform coding for applying quantization in the transform domain). Each picture of a video sequence is typically partitioned into a set of non-overlapping blocks and the coding is typically performed on a block level. In other words, at the encoder the video is typically processed, i.e. encoded, on a block (video block) level, e.g., by using spatial (intra picture) prediction and temporal (inter picture) prediction to generate a prediction block, subtracting the prediction block from the current block (block currently processed/to be processed) to obtain a residual block, transforming the residual block and quantizing the residual block in the transform domain to reduce the amount of data to be transmitted (compression), whereas at the decoder the inverse processing compared to the encoder is applied to the encoded or compressed block to reconstruct the current block for representation. Furthermore, the encoder duplicates the decoder processing loop such that both will generate identical predictions (e.g., intra- and inter predictions) and/or re-constructions for processing, i.e. coding, the subsequent blocks.

As video picture processing (also referred to as moving picture processing) and still picture processing (the term processing comprising coding), share many concepts and technologies or tools, in the following the term “picture” is used to refer to a video picture of a video sequence (as explained above) and/or to a still picture to avoid unnecessary repetitions and distinctions between video pictures and still pictures, where not necessary. In case the description refers to still pictures (or still images) only, the term “still picture” shall be used.

In the following embodiments of an encoder100, a decoder200and a coding system300are described based onFIGS.1to3before describing embodiments of the disclosure in more detail based onFIGS.4-14.

FIG.3is a conceptual or schematic block diagram illustrating an embodiment of a coding system300, e.g., a picture coding system300, wherein the coding system300comprises a source device310configured to provide encoded data330, e.g., an encoded picture330, e.g., to a destination device320for decoding the encoded data330.

The source device310comprises an encoder100or encoding unit100, and may additionally, i.e. optionally, comprise a picture source312, a pre-processing unit314, e.g., a picture pre-processing unit314, and a communication interface or communication unit318.

The picture source312may comprise or be any kind of picture capturing device, for example for capturing a real-world picture, and/or any kind of a picture generating device, for example a computer-graphics processor for generating a computer animated picture, or any kind of device for obtaining and/or providing a real-world picture, a computer animated picture (e.g., a screen content, a virtual reality (VR) picture) and/or any combination thereof (e.g., an augmented reality (AR) picture). In the following, all these kinds of pictures and any other kind of picture will be referred to as “picture” or “image”, unless specifically described otherwise, while the previous explanations with regard to the term “picture” covering “video pictures” and “still pictures” still hold true, unless explicitly specified differently.

A (digital) picture is or can be regarded as a two-dimensional array or matrix of samples with intensity values. A sample in the array may also be referred to as pixel (short form of picture element) or a pel. The number of samples in horizontal and vertical direction (or axis) of the array or picture define the size and/or resolution of the picture. For representation of color, typically three color components are employed, i.e. the picture may be represented or include three sample arrays. In RGB format or color space a picture comprises a corresponding red, green and blue sample array. However, in video coding each pixel is typically represented in a luminance/chrominance format or color space, e.g., YCbCr, which comprises a luminance component indicated by Y (sometimes also L is used instead) and two chrominance components indicated by Cb and Cr. The luminance (or short luma) component Y represents the brightness or grey level intensity (e.g., like in a grey-scale picture), while the two chrominance (or short chroma) components Cb and Cr represent the chromaticity or color information components. Accordingly, a picture in YCbCr format comprises a luminance sample array of luminance sample values (Y), and two chrominance sample arrays of chrominance values (Cb and Cr). Pictures in RGB format may be converted or transformed into YCbCr format and vice versa, the process is also known as color transformation or conversion. If a picture is monochrome, the picture may comprise only a luminance sample array.

The picture source312may be, for example a camera for capturing a picture, a memory, e.g., a picture memory, comprising or storing a previously captured or generated picture, and/or any kind of interface (internal or external) to obtain or receive a picture. The camera may be, for example, a local or integrated camera integrated in the source device, the memory may be a local or integrated memory, e.g., integrated in the source device. The interface may be, for example, an external interface to receive a picture from an external video source, for example an external picture capturing device like a camera, an external memory, or an external picture generating device, for example an external computer-graphics processor, computer or server. The interface can be any kind of interface, e.g., a wired or wireless interface, an optical interface, according to any proprietary or standardized interface protocol. The interface for obtaining the picture data312may be the same interface as or a part of the communication interface318.

In distinction to the pre-processing unit314and the processing performed by the pre-processing unit314, the picture or picture data313may also be referred to as raw picture or raw picture data313.

Pre-processing unit314is configured to receive the (raw) picture data313and to perform pre-processing on the picture data313to obtain a pre-processed picture315or pre-processed picture data315. Pre-processing performed by the pre-processing unit314may, e.g., comprise trimming, color format conversion (e.g., from RGB to YCbCr), color correction, or de-noising.

The encoder100is configured to receive the pre-processed picture data315and provide encoded picture data171(further details will be described, e.g., based onFIG.1).

Communication interface318of the source device310may be configured to receive the encoded picture data171and to directly transmit it to another device, e.g., the destination device320or any other device, for storage or direct reconstruction, or to process the encoded picture data171for respectively before storing the encoded data330and/or transmitting the encoded data330to another device, e.g., the destination device320or any other device for decoding or storing.

The destination device320comprises a decoder200or decoding unit200, and may additionally, i.e. optionally, comprise a communication interface or communication unit322, a post-processing unit326and a display device328.

The communication interface322of the destination device320is configured receive the encoded picture data171or the encoded data330, e.g., directly from the source device310or from any other source, e.g., a memory, e.g., an encoded picture data memory.

The communication interface318and the communication interface322may be configured to transmit and respectively receive the encoded picture data171or encoded data330via a direct communication link between the source device310and the destination device320, e.g., a direct wired or wireless connection, or via any kind of network, e.g., a wired or wireless network or any combination thereof, or any kind of private and public network, or any kind of combination thereof

The communication interface318may be, e.g., configured to package the encoded picture data171into an appropriate format, e.g., packets, for transmission over a communication link or communication network, and may further comprise data loss protection and data loss recovery.

The communication interface322, forming the counterpart of the communication interface318, may be, e.g., configured to de-package the encoded data330to obtain the encoded picture data171and may further be configured to perform data loss protection and data loss recovery, e.g., comprising error concealment.

Communication interface318and communication interface322may both be configured as unidirectional communication interfaces as indicated by the arrow for the encoded picture data330inFIG.3pointing from the source device310to the destination device320, or bi-directional communication interfaces, and may be configured, e.g., to send and receive messages, e.g., to set up a connection, to acknowledge and/or re-send lost or delayed data including picture data, and exchange any other information related to the communication link and/or data transmission, e.g., encoded picture data transmission.

The decoder200is configured to receive the encoded picture data171and provide decoded picture data231or a decoded picture231(further details will be described, e.g., based onFIG.2).

The post-processor326of destination device320is configured to post-process the decoded picture data231, e.g., the decoded picture231, to obtain post-processed picture data327, e.g., a post-processed picture327. The post-processing performed by the post-processing unit326may comprise, e.g., color format conversion (e.g., from YCbCr to RGB), color correction, trimming, or re-sampling, or any other processing, e.g., for preparing the decoded picture data231for display, e.g., by display device328.

The display device328of the destination device320is configured to receive the post-processed picture data327for displaying the picture, e.g., to a user or viewer. The display device328may be or comprise any kind of display for representing the reconstructed picture, e.g., an integrated or external display or monitor. The displays may, e.g., comprise cathode ray tubes (CRT), liquid crystal displays (LCD), plasma displays, organic light emitting diodes (OLED) displays or any kind of other display . . . beamer, hologram (3D), . . . .

AlthoughFIG.3depicts the source device310and the destination device320as separate devices, embodiments of devices may also comprise both or both functionalities, the source device310or corresponding functionality and the destination device320or corresponding functionality. In such embodiments the source device310or corresponding functionality and the destination device320or corresponding functionality may be implemented using the same hardware and/or software or by separate hardware and/or software or any combination thereof

As will be apparent for the skilled person based on the description, the existence and (exact) split of functionalities of the different units or functionalities within the source device310and/or destination device320as shown inFIG.3may vary depending on the actual device and application.

Therefore, the source device310and the destination device320as shown inFIG.3are merely example embodiments of the disclosure and embodiments of the disclosure are not limited to those shown inFIG.3.

Source device310and destination device320may comprise any of a wide range of devices, including any kind of handheld or stationary devices, e.g., notebook or laptop computers, mobile phones, smart phones, tablets or tablet computers, cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video gaming consoles, video streaming devices, broadcast receiver device, or the like (also servers and work-stations for large scale professional encoding/decoding, e.g., network entities) and may use no or any kind of operating system.

FIG.1shows a schematic/conceptual block diagram of an embodiment of an encoder100, e.g., a picture encoder100, which comprises an input102, a residual calculation unit104, a transformation unit106, a quantization unit108, an inverse quantization unit110, and inverse transformation unit112, a reconstruction unit114, a buffer118, a loop filter120, a decoded picture buffer (DPB)130, a prediction unit160(comprising an inter estimation unit142, an inter prediction unit144, an intra-estimation unit152, and an intra-prediction unit154), a mode selection unit162, an entropy encoding unit170, and an output172. A video encoder100as shown inFIG.1may also be referred to as hybrid video encoder or a video encoder according to a hybrid video codec.

For example, the residual calculation unit104, the transformation unit106, the quantization unit108, and the entropy encoding unit170form a forward signal path of the encoder100, whereas, for example, the inverse quantization unit110, the inverse transformation unit112, the reconstruction unit114, the buffer118, the loop filter120, the decoded picture buffer (DPB)130, the inter prediction unit144, and the intra-prediction unit154form a backward signal path of the encoder, wherein the backward signal path of the encoder corresponds to the signal path of the decoder (see decoder200inFIG.2).

The encoder is configured to receive, e.g., by input102, a picture101or a picture block103of the picture101, e.g., picture of a sequence of pictures forming a video or video sequence. The picture block103may also be referred to as current picture block or picture block to be coded, and the picture101as current picture or picture to be coded (in particular in video coding to distinguish the current picture from other pictures, e.g., previously encoded and/or decoded pictures of the same video sequence, i.e. the video sequence which also comprises the current picture).

Embodiments of the encoder100may comprise a partitioning unit (not depicted inFIG.1), e.g., which may also be referred to as picture partitioning unit, configured to partition the picture103into a plurality of blocks, e.g., blocks like block103, typically into a plurality of non-overlapping blocks. The partitioning unit may be configured to use the same block size for all pictures of a video sequence and the corresponding grid defining the block size, or to change the block size between pictures or subsets or groups of pictures, and partition each picture into the corresponding blocks.

Like the picture101, the block103again is or can be regarded as a two-dimensional array or matrix of samples with intensity values (sample values), although of smaller dimension than the picture101. In other words, the block103may comprise, e.g., one sample array (e.g., a luma array in case of a monochrome picture101) or three sample arrays (e.g., a luma and two chroma arrays in case of a color picture101) or any other number and/or kind of arrays depending on the color format applied. The number of samples in horizontal and vertical direction (or axis) of the block103define the size of block103.

Encoder100as shown inFIG.1is configured encode the picture101block by block, e.g., the encoding and prediction is performed per block103.

The residual calculation unit104is configured to calculate a residual block105based on the picture block103and a prediction block165(further details about the prediction block165are provided later), e.g., by subtracting sample values of the prediction block165from sample values of the picture block103, sample by sample (pixel by pixel) to obtain the residual block105in the sample domain.

The transformation unit106is configured to apply a transformation, e.g., a spatial frequency transform or a linear spatial transform, e.g., a discrete cosine transform (DCT) or discrete sine transform (DST), on the sample values of the residual block105to obtain transformed coefficients107in a transform domain. The transformed coefficients107may also be referred to as transformed residual coefficients and represent the residual block105in the transform domain.

The transformation unit106may be configured to apply integer approximations of DCT/DST, such as the core transforms specified for HEVC/H.265. Compared to an orthonormal DCT transform, such integer approximations are typically scaled by a certain factor. In order to preserve the norm of the residual block, which is processed by forward and inverse transforms, additional scaling factors are applied as part of the transform process. The scaling factors are typically chosen based on certain constraints like scaling factors being a power of two for shift operation, bit depth of the transformed coefficients, tradeoff between accuracy and implementation costs, etc. Specific scaling factors are, for example, specified for the inverse transform, e.g., by inverse transformation unit212, at a decoder200(and the corresponding inverse transform, e.g., by inverse transformation unit112at an encoder100) and corresponding scaling factors for the forward transform, e.g., by transformation unit106, at an encoder100may be specified accordingly.

The quantization unit108is configured to quantize the transformed coefficients107to obtain quantized coefficients109, e.g., by applying scalar quantization or vector quantization. The quantized coefficients109may also be referred to as quantized residual coefficients109. For example for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, whereas larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be indicated by a quantization parameter (QP). The quantization parameter may for example be an index to a predefined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes) and large quantization parameters may correspond to coarse quantization (large quantization step sizes) or vice versa. The quantization may include division by a quantization step size and corresponding or inverse de-quantization, e.g., by inverse quantization110, may include multiplication by the quantization step size.

Embodiments according to HEVC, may be configured to use a quantization parameter to determine the quantization step size. Generally, the quantization step size may be calculated based on a quantization parameter using a fixed point approximation of an equation including division. Additional scaling factors may be introduced for quantization and de-quantization to restore the norm of the residual block, which might be modified because of the scaling used in the fixed point approximation of the equation for quantization step size and quantization parameter. In one example implementation, the scaling of the inverse transform and de-quantization might be combined. Alternatively, customized quantization tables may be used and signaled from an encoder to a decoder, e.g., in a bit-stream. The quantization is a lossy operation, wherein the loss increases with increasing quantization step sizes.

Embodiments of the encoder100(or respectively of the quantization unit108) may be configured to output the quantization scheme and quantization step size, e.g., by means of the corresponding quantization parameter, so that a decoder200may receive and apply the corresponding inverse quantization. Embodiments of the encoder100(or quantization unit108) may be configured to output the quantization scheme and quantization step size, e.g., directly or entropy encoded via the entropy encoding unit170or any other entropy coding unit.

The inverse quantization unit110is configured to apply the inverse quantization of the quantization unit108on the quantized coefficients to obtain de-quantized coefficients111, e.g., by applying the inverse of the quantization scheme applied by the quantization unit108based on or using the same quantization step size as the quantization unit108. The de-quantized coefficients111may also be referred to as de-quantized residual coefficients111and correspond—although typically not identical to the transformed coefficients due to the loss by quantization—to the transformed coefficients108.

The inverse transformation unit112is configured to apply the inverse transformation of the transformation applied by the transformation unit106, e.g., an inverse discrete cosine transform (DCT) or inverse discrete sine transform (DST), to obtain an inverse transformed block113in the sample domain. The inverse transformed block113may also be referred to as inverse transformed de-quantized block113or inverse transformed residual block113.

The reconstruction unit114is configured to combine the inverse transformed block113and the prediction block165to obtain a reconstructed block115in the sample domain, e.g., by sample wise adding the sample values of the decoded residual block113and the sample values of the prediction block165.

The buffer unit116(or short “buffer”116), e.g., a line buffer116, is configured to buffer or store the reconstructed block and the respective sample values, for example for intra estimation and/or intra prediction. In further embodiments, the encoder may be configured to use unfiltered reconstructed blocks and/or the respective sample values stored in buffer unit116for any kind of estimation and/or prediction.

Embodiments of the encoder100may be configured such that, e.g., the buffer unit116is not only used for storing the reconstructed blocks115for intra estimation152and/or intra prediction154but also for the loop filter unit120(not shown inFIG.1), and/or such that, e.g., the buffer unit116and the decoded picture buffer unit130form one buffer. Further embodiments may be configured to use filtered blocks121and/or blocks or samples from the decoded picture buffer130(both not shown inFIG.1) as input or basis for intra estimation152and/or intra prediction154.

The loop filter unit120(or “loop filter”120for short) is configured to filter the reconstructed block115to obtain a filtered block121, e.g., by applying a de-blocking sample-adaptive offset (SAO) filter or other filters, e.g., sharpening or smoothing filters or collaborative filters. The filtered block121may also be referred to as filtered reconstructed block121. The loop filter120is in the following also referred to as a deblocking filter.

Embodiments of the loop filter unit120may comprise (not shown inFIG.1) a filter analysis unit and the actual filter unit, wherein the filter analysis unit is configured to determine loop filter parameters for the actual filter. The filter analysis unit may be configured to apply fixed pre-determined filter parameters to the actual loop filter, adaptively select filter parameters from a set of predetermined filter parameters or adaptively calculate filter parameters for the actual loop filter.

Embodiments of the loop filter unit120may comprise (not shown inFIG.1) one or a plurality of filters (loop filter components/subfilters), e.g., one or more of different kinds or types of filters, e.g., connected in series or in parallel or in any combination thereof, wherein each of the filters may comprise individually or jointly with other filters of the plurality of filters a filter analysis unit to determine the respective loop filter parameters, e.g., as described in the previous paragraph.

Embodiments of the encoder100(respectively loop filter unit120) may be configured to output the loop filter parameters, e.g., directly or entropy encoded via the entropy encoding unit170or any other entropy coding unit, so that, e.g., a decoder200may receive and apply the same loop filter parameters for decoding.

The decoded picture buffer (DPB)130is configured to receive and store the filtered block121. The decoded picture buffer130may be further configured to store other previously filtered blocks, e.g., previously reconstructed and filtered blocks121, of the same current picture or of different pictures, e.g., previously reconstructed pictures, and may provide complete previously reconstructed, i.e. decoded, pictures (and corresponding reference blocks and samples) and/or a partially reconstructed current picture (and corresponding reference blocks and samples), for example for inter estimation and/or inter prediction.

Further embodiments of the disclosure may also be configured to use the previously filtered blocks and corresponding filtered sample values of the decoded picture buffer130for any kind of estimation or prediction, e.g., intra and inter estimation and prediction.

The prediction unit160, also referred to as block prediction unit160, is configured to receive or obtain the picture block103(current picture block103of the current picture101) and decoded or at least reconstructed picture data, e.g., reference samples of the same (current) picture from buffer116and/or decoded picture data231from one or a plurality of previously decoded pictures from decoded picture buffer130, and to process such data for prediction, i.e. to provide a prediction block165, which may be an inter-predicted block145or an intra-predicted block155.

The mode selection unit162may be configured to select a prediction mode (e.g., an intra or inter prediction mode) and/or a corresponding prediction block145or155to be used as prediction block165for the calculation of the residual block105and for the reconstruction of the reconstructed block115.

Embodiments of the mode selection unit162may be configured to select the prediction mode (e.g., from those supported by prediction unit160), which provides the best match or in other words the minimum residual (minimum residual means better compression for transmission or storage), or a minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which considers or balances both. The mode selection unit162may be configured to determine the prediction mode based on rate distortion optimization (RDO), i.e. select the prediction mode which provides a minimum rate distortion optimization or which associated rate distortion at least a fulfills a prediction mode selection criterion.

In the following the prediction processing (e.g., prediction unit160and mode selection (e.g., by mode selection unit162) performed by an example encoder100will be explained in more detail.

As described above, encoder100is configured to determine or select the best or an optimum prediction mode from a set of (pre-determined) prediction modes. The set of prediction modes may comprise, e.g., intra-prediction modes and/or inter-prediction modes.

The set of intra-prediction modes may comprise 32 different intra-prediction modes, e.g., non-directional modes like DC (or mean) mode and planar mode, or directional modes, e.g., as defined in H.264, or may comprise 65 different intra-prediction modes, e.g., non-directional modes like DC (or mean) mode and planar mode, or directional modes, e.g., as defined in H.265.

The set of (or possible) inter-prediction modes depend on the available reference pictures (i.e. previous at least partially decoded pictures, e.g., stored in DBP230) and other inter-prediction parameters, e.g., whether the whole reference picture or only a part, e.g., a search window area around the area of the current block, of the reference picture is used for searching for a best matching reference block, and/or e.g., whether pixel interpolation is applied, e.g., half/semi-pel and/or quarter-pel interpolation, or not.

Additionally to the above prediction modes, skip mode and/or direct mode may be applied.

The prediction unit160may be further configured to partition the block103into smaller block partitions or sub-blocks, e.g., iteratively using quad-tree-partitioning (QT), binary partitioning (BT) or triple-tree-partitioning (TT) or any combination thereof, and to perform, e.g., the prediction for each of the block partitions or sub-blocks, wherein the mode selection comprises the selection of the tree-structure of the partitioned block103and the prediction modes applied to each of the block partitions or sub-blocks.

The inter estimation unit142, also referred to as inter picture estimation unit142, is configured to receive or obtain the picture block103(current picture block103of the current picture101) and a decoded picture231, or at least one or a plurality of previously reconstructed blocks, e.g., reconstructed blocks of one or a plurality of other/different previously decoded pictures231, for inter estimation (or “inter picture estimation”). E.g., a video sequence may comprise the current picture and the previously decoded pictures231, or in other words, the current picture and the previously decoded pictures231may be part of or form a sequence of pictures forming a video sequence.

The encoder100may, e.g., be configured to select a reference block from a plurality of reference blocks of the same or different pictures of the plurality of other pictures and provide a reference picture (or reference picture index, . . . ) and/or an offset (spatial offset) between the position (x, y coordinates) of the reference block and the position of the current block as inter estimation parameters143to the inter prediction unit144. This offset is also called motion vector (MV). The inter estimation is also referred to as motion estimation (ME) and the inter prediction also motion prediction (MP).

The inter prediction unit144is configured to obtain, e.g., receive, an inter prediction parameter143and to perform inter prediction based on or using the inter prediction parameter143to obtain an inter prediction block145.

AlthoughFIG.1shows two distinct units (or steps) for the inter-coding, namely inter estimation142and inter prediction152, both functionalities may be performed as one (inter estimation requires/comprises calculating an/the inter prediction block, i.e. the or a “kind of” inter prediction154), e.g., by testing all possible or a predetermined subset of possible inter-prediction modes iteratively while storing the currently best inter prediction mode and respective inter prediction block, and using the currently best inter prediction mode and respective inter prediction block as the (final) inter prediction parameter143and inter prediction block145without performing another time the inter prediction144.

The intra estimation unit152is configured to obtain, e.g., receive, the picture block103(current picture block) and one or a plurality of previously reconstructed blocks, e.g., reconstructed neighbor blocks, of the same picture for intra estimation. The encoder100may, e.g., be configured to select an intra prediction mode from a plurality of (predetermined) intra prediction modes and provide it as intra estimation parameter153to the intra prediction unit154.

Embodiments of the encoder100may be configured to select the intra-prediction mode based on an optimization criterion, e.g., minimum residual (e.g., the intra-prediction mode providing the prediction block155most similar to the current picture block103) or minimum rate distortion.

The intra prediction unit154is configured to determine based on the intra prediction parameter153, e.g., the selected intra prediction mode153, the intra prediction block155.

AlthoughFIG.1shows two distinct units (or steps) for the intra-coding, namely intra estimation152and intra prediction154, both functionalities may be performed as one (intra estimation) requires/comprises calculating the intra prediction block, i.e. the or a “kind of” intra prediction154), e.g., by testing all possible or a predetermined subset of possible intra-prediction modes iteratively while storing the currently best intra prediction mode and respective intra prediction block, and using the currently best intra prediction mode and respective intra prediction block as the (final) intra prediction parameter153and intra prediction block155without performing another time the intra prediction154.

The entropy encoding unit170is configured to apply an entropy encoding algorithm or scheme (e.g., a variable length coding (VLC) scheme, an context adaptive VLC scheme (CALVC), an arithmetic coding scheme, a context adaptive binary arithmetic coding (CABAC)) on the quantized residual coefficients109, inter prediction parameters143, intra prediction parameter153, and/or loop filter parameters, individually or jointly (or not at all) to obtain encoded picture data171which can be output by the output172, e.g., in the form of an encoded bit-stream171.

FIG.2shows an exemplary video decoder200configured to receive encoded picture data (e.g., encoded bit-stream)171, e.g., encoded by encoder100, to obtain a decoded picture231.

The decoder200comprises an input202, an entropy decoding unit204, an inverse quantization unit210, an inverse transformation unit212, a reconstruction unit214, a buffer216, a loop filter220, a decoded picture buffer230, a prediction unit260, an inter prediction unit244, an intra prediction unit254, a mode selection unit260and an output232.

The entropy decoding unit204is configured to perform entropy decoding to the encoded picture data171to obtain, e.g., quantized coefficients209and/or decoded coding parameters (not shown inFIG.2), e.g., (decoded) any or all of inter prediction parameters143, intra prediction parameter153, and/or loop filter parameters.

In embodiments of the decoder200, the inverse quantization unit210, the inverse transformation unit212, the reconstruction unit214, the buffer216, the loop filter220, the decoded picture buffer230, the prediction unit260and the mode selection unit260are configured to perform the inverse processing of the encoder100(and the respective functional units) to decode the encoded picture data171.

In particular, the inverse quantization unit210may be identical in function to the inverse quantization unit110, the inverse transformation unit212may be identical in function to the inverse transformation unit112, the reconstruction unit214may be identical in function reconstruction unit114, the buffer216may be identical in function to the buffer116, the loop filter220may be identical in function to the loop filter220(with regard to the actual loop filter as the loop filter220typically does not comprise a filter analysis unit to determine the filter parameters based on the original image101or block103but receives (explicitly or implicitly) or obtains the filter parameters used for encoding, e.g., from entropy decoding unit204), and the decoded picture buffer230may be identical in function to the decoded picture buffer130.

The prediction unit260may comprise an inter prediction unit244and an inter prediction unit254, wherein the inter prediction unit144may be identical in function to the inter prediction unit144, and the inter prediction unit154may be identical in function to the intra prediction unit154. The prediction unit260and the mode selection unit262are typically configured to perform the block prediction and/or obtain the predicted block265from the encoded data171only (without any further information about the original image101) and to receive or obtain (explicitly or implicitly) the prediction parameters143or153and/or the information about the selected prediction mode, e.g., from the entropy decoding unit204.

The decoder200is configured to output the decoded picture230, e.g., via output232, for presentation or viewing to a user.

Although embodiments of the disclosure have been primarily described based on video coding, it should be noted that embodiments of the encoder100and decoder200(and correspondingly the system300) may also be configured for still picture processing or coding, i.e. the processing or coding of an individual picture independent of any preceding or consecutive picture as in video coding. In general only inter-estimation142, inter-prediction144,242are not available in case the picture processing coding is limited to a single picture101. Most if not all other functionalities (also referred to as tools or technologies) of the video encoder100and video decoder200may equally be used for still pictures, e.g., partitioning, transformation (scaling)106, quantization108, inverse quantization110, inverse transformation112, intra-estimation142, intra-prediction154,254and/or loop filtering120,220, and entropy coding170and entropy decoding204.

The present disclosure deals with the inner workings of the deblocking filter, also referred to as loop filter inFIG.1andFIG.2.

InFIG.4, two exemplary coding blocks401,402separated by a block edge403are shown. The coding blocks401,402comprise the pixel lines402-407and the pixel rows408-415. Especially here, the block edge is a vertical block edge. In this example, the blocks have a size of 4×4 pixels. In the practice, other block sizes though can be employed.

Deblocking decisions are made separately for each segment of a block boundary.

The strong deblocking filter in HEVC is applied to smooth areas, where block artifacts are more visible. The filtering mode modifies three samples from the block boundary and enables strong low-pass filtering. A clipping operation is additionally performed for each sample. The reason for performing the clipping operation is to limit the amount of filtering in order to make sure that there is no excessive filtering on the lines which were not evaluated in the filtering decisions. As shown inFIG.4, pixel lines405and406are not used in the decision to filter or not to filter. This is done for reasons of computational complexity. Only the decision pixel lines404and407are used here to determine of a filtering is to be performed.

In the following the functions for determining the deblocked pixel values are shown:
p0′=(p2+2p1+2p02q0+q1+4)>>3,  (7.17)
p1′=(p2+p1+p0+q0+2)>>2,  (7.18)
p2′=(2p3+3p2+p1+p0+q0+4+)>>3,  (7.19)

P0′, P1′, P2′ are filtered pixel values corresponding to original pixel values P0, P1, and P2, respectively. The second index, as shown inFIG.4has been omitted here.

The symbol “>>” signifies a right shift. A right shift corresponds to a division by 2y, where y is the amount of right shift. For example, in function 7.17, “>>3” signifies a division by 23=8.

The modified sample values are then clipped to the range [Pi−2tc, Pi+2tc], where Pi is the pixel value of the pixel i, and where tc is a constant value. The value of tc can for example be derived from a table using the average quantization parameter QP as the index into the table. Normally the higher the QP value is, the larger the tc value is.

FIG.9depicts a typical blocking artifact at a block edge900. It can readily be seen, that the samples P0 and Q0 have the maximum distortion and the samples further away from the block edge tend to have less distortion, e.g., samples P3 and Q3.

Since all the pixel values are clipped to the same clipping range [Pi−2tc, Pi+2tc], the pixel values far away from the block boundary, e.g., P3 and Q3 also use same clipping range and therefore are allowed to be modified within the same range as the pixel values P0 and Q0. This constant clipping range will result in samples far away from the boundary also to be modified by a large extent and therefore results in over-smoothing or blurring or sometimes even incorrect deblocking filtering with loss of meaningful image content.

Instead of using a fixed clipping range for all the pixel values, according to the present disclosure, the clipping range is made adaptive. Especially, the clipping range is made adaptive from the distance of the respective pixel from the block edge.

Advantageously, a lookup table or a function are used for determining a clipping value, by which the filtered pixel value is clipped. Preferably such a function is a monotonically decreasing function based on the distance of the pixel from the edge. The greater the distance of the sample from the edge/boundary, the smaller is the clipping value defined for the pixel. Therefore pixel values far away from the block edge are allowed to have a smaller clipping value and therefore are allowed to have a smaller deviation after clipping compared to the pixel values which are closer to the block edge. This way the amount of filtering is controlled and therefore an over-smoothing or blurring is prevented.

Advantageously, an exponential function is used for determining the clipping value. The clipping value can then be determined as
tc′=tc+(tc>>i),wherein tc′ is the clipping value,wherein tc is a constant value,wherein i is the distance of the pixel from the block edge, andwherein >> signifies a right shift.

This results in the following formula for the clipping of the deblocked pixel value:
P′a,b=(Pa,b−(tc+(tc>>i)),
Pa,b+(tc+(tc>>i))).whereinP′ a, b is the deblocked pixel value of pixel a, b,a is an integer index of the pixel row,b is an integer index of the pixel line,Pa, b is the original pixel value of the pixel a, b,i is an integer distance of the pixel from the block edge

For example, for P0,0 and Q0,0 clipping stays the same as explained along formulas 7.17−7.19, because the value of i is 0 (distance is 0). The clipping value is set to tc′=tc+(tc>>0)=2tc, resulting in P′0,0=(P0,0−2tc), P0,0+2tc))

For example, for P′1,0, clipping is reduced to tc′=tc+(tc>>1)=tc+tc/2=1,5 tc, resulting in P′1,0=(P1,0−1,5tc), P1,0+1,5tc)).

For example, for P′2,0, clipping is reduced to tc′=tc+(tc>>2)=tc+tc/4=1,25 tc, resulting in P′2,0=(P2,0−1,25tc), P2,0+1,25tc)).

As we can see, the clipping value is reduced gradually as the sample distance i increases from the block edge.

Another alternative exponential function which can be used is as follows:
tc′=((2*tc)>>i),wherein tc′ is the clipping value,wherein tc is a constant value,wherein i is the distance of the pixel from the block edge, andwherein >> signifies a right shift.

This results in the following formula for the clipping of the deblocked pixel value:
P′a,b=(Pa,b−((2*tc)>>i)),
Pa,b+((2*tc)>>i))).whereinP′a, b is the deblocked pixel value of pixel a, b,a is an integer index of the pixel row,b is an integer index of the pixel line,Pa, b is the original pixel value of the pixel a, b,i is an integer distance of the pixel from the block edge.

The calculation of the exponential function, though, results in a significant computational complexity. In an alternative embodiment, a linear function can be used. In this case, the clipping value is set to
tc′=tc+(tc−(i*x),wherein tc′ is the clipping value,wherein tc is a constant value,wherein i is the distance of the pixel from the block edge, andwherein x is a constant value.

This results in the deblocked pixel value to be clipped to
P′a,b=(Pa,b−(tc+(tc−(i*x)),Pa,b+(tc+(tc−(i*x))),whereinP′a, b is the deblocked pixel value of pixel a, b,a is an integer index of the pixel row,b is an integer index of the pixel line,Pa, b is the original pixel value of the pixel a, b,i is an integer distance of the pixel from the block edge, andx is a constant integer value.

Advantageously, x depends on the average quantization parameter QP used in the deblocking process. In general the value of x increases as the QP value increases. Also the value of x can be derived separately for 8 bit video and 10 bit video.

An example, the value of x for 10 bit video can set as follows:

QP123456789101112131415161718x000000000000000000

QP1920212223242526272829303132333435x11111111111112222

QP3637383940414243444546474849505152x222224455667781818

QP535455565758596061626364656667x101012121214141616161616161616

As an example, for average QP value of 37, the value of x is 2, and therefore the pixel values are modified as follows:

For example, for P0,0 clipping stays the same as explained along formulas 7.17−7.19, because the value of i is 0 (distance is 0). The clipping value is set to tc′=tc+(tc−(0*2)=2tc, resulting in P′0,0=(P0,0−(tc+(tc−(0*2)), P0,0+(tc+(tc−(0*2))).

For example, for P′1,0, clipping is reduced to tc′=tc+(tc−(1*2)=2tc−2, resulting in P′ 1,0=(P1,0−2tc−2), P1,0+2 tc−2)).

For example, for P′2,0, clipping is reduced to tc′=tc+(tc−2*2)=tc+(tc−4)=2tc−4, resulting in P′2,0=(P2,0−(2tc−4)), P2,0+(2tc−4)).

In a further advantageous embodiment, the use of the distance-dependent clipping, as shown earlier, is limited to non-decision pixel lines and non-decision pixel rows, as shown inFIG.4. As explained before, for determining, if a filtering of a block edge is performed, a number of pixels from a decision pixel line (vertical block edge) or decision pixel row (horizontal block edge) are used. Not all pixel lines/rows within the blocks though are used to base this decision on, in order to save computational complexity. The range-dependent clipping though is only performed in the non-decision pixel lines/rows, but not in the pixel lines/rows which are decision pixel lines/rows. In the decision pixel lines/rows, the conventional clipping using a constant value is performed.

InFIG.5, an embodiment of the first aspect of the disclosure is shown. Especially, here an image processing device501comprising a filter502is shown. The filter502is adapted to perform the deblocking filtering, shown above.

InFIG.6, an embodiment of the second aspect of the disclosure is shown. Especially, here an encoder600, comprising an image processing device601, again comprising a filter602is shown. The filter602performs the deblocking filtering, as shown above.

InFIG.7, an embodiment of the third aspect of the disclosure is shown. Especially, here a decoder700comprising an image processing device701in turn comprising a filter702is shown. The filter702performs the deblocking filtering, as shown above.

Finally, inFIG.9, an embodiment of the fifth aspect of the disclosure is shown in a flow diagram. In a first step1000, for at least some of the pixels to be filtered, within a deblocking range from the block edge, a filtered pixel value is determined from an original pixel value of the pixel and at least one further pixel value. In a second step1001, a clipping value of the pixel is determined dependent upon a distance of the pixel from the block edge. In a final third step1002, the filtered pixel value is clipped using the clipping value, resulting in a deblocked pixel value.

It is pointed out that the elaborations regarding how the deblocking filtering is performed from above are also applicable to the method according to the fourth aspect of the disclosure.

It is important to note that the disclosure is not limited to the embodiments and especially not to the coding block sizes and filter tap lengths shown above. The disclosure can be applied to any coding block sizes and to any filter tap lengths.

DEFINITIONS OF ACRONYMS

CTU/CTB—Coding Tree Unit/Coding Tree BlockCU/CB—Coding Unit/Coding BlockPU/PB—Prediction Unit/Prediction BlockTU/TB—Transform Unit/Transform BlockHEVC—High Efficiency Video Coding

LISTING OF REFERENCE NUMBERS

FIG.1100Encoder103Picture block102Input (e.g., input port, input interface)104Residual calculation [unit or step]105Residual block106Transformation (e.g., additionally comprising scaling) [unit or step]107Transformed coefficients108Quantization [unit or step]109Quantized coefficients110Inverse quantization [unit or step]111De-quantized coefficients112Inverse transformation (e.g., additionally comprising scaling) [unit or step]113Inverse transformed block114Reconstruction [unit or step]115Reconstructed block116(Line) buffer [unit or step]117Reference samples120Loop filter [unit or step]121Filtered block130Decoded picture buffer (DPB) [unit or step]142Inter estimation (or inter picture estimation) [unit or step]143Inter estimation parameters (e.g., reference picture/reference picture index, motion vector/offset)144Inter prediction (or inter picture prediction) [unit or step]145Inter prediction block152Intra estimation (or intra picture estimation) [unit or step]153Intra prediction parameters (e.g., intra prediction mode)154Intra prediction (intra frame/picture prediction) [unit or step]155Intra prediction block162Mode selection [unit or step]165Prediction block (either inter prediction block145or intra prediction block155)170Entropy encoding [unit or step]171Encoded picture data (e.g., bitstream)172Output (output port, output interface)231Decoded pictureFIG.2200Decoder171Encoded picture data (e.g., bitstream)202Input (port/interface)204Entropy decoding209Quantized coefficients210Inverse quantization211De-quantized coefficients212Inverse transformation (scaling)213Inverse transformed block214Reconstruction (unit)215Reconstructed block216(Line) buffer217Reference samples220Loop filter (in loop filter)221Filtered block230Decoded picture buffer (DPB)231Decoded picture232Output (port/interface)244Inter prediction (inter frame/picture prediction)245Inter prediction block254Intra prediction (intra frame/picture prediction)255Intra prediction block260Mode selection265Prediction block (inter prediction block245or intra prediction block255)FIG.3300Coding system310Source device312Picture Source313(Raw) picture data314Pre-processor/Pre-processing unit315Pre-processed picture data318Communication unit/interface320Destination device322Communication unit/interface326Post-processor/Post-processing unit327Post-processed picture data328Di splay device/unit330transmitted/received/communicated (encoded) picture dataFIG.4401coding block402coding block403block edge404pixel line405pixel line406pixel line407pixel line408pixel row409pixel row410pixel row411pixel row412pixel row413pixel row414pixel row415pixel rowFIG.5501image processing device502filterFIG.6600encoder601image processing device602filterFIG.7700decoder701image processing device702filterFIG.8800block edgeFIG.91000first step1001second step1002third step

Additional details of this disclosure are presented in Appendix A.

While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented.

In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.

Given below is a listing of specific embodiments. Reference numbers in parentheses are to be construed as exemplary, not as limiting.

Embodiment 1. An image processing device (501,601,701) for use in an image encoder (600) and/or an image decoder (700), for deblocking a block edge (403,800) between a first coding block (401) and a second coding block (402) of an image encoded with a block code, wherein the image processing device (501,601,701) comprises a filter (502,602,702) for filtering the block edge (403,800), configured to, for at least some of the pixels to be filtered, within a deblocking range from the block edge (403,800), the deblocking range being perpendicular to the block edge (403,800):determine a filtered pixel value from an original pixel value of the pixel and at least one further pixel value,determine a clipping value of the pixel, dependent upon a distance of the pixel from the block edge (403,800), andclip the filtered pixel value, using the clipping value, resulting in a deblocked pixel value.

Embodiment 2. The image processing device (501,601,701) of embodiment 1, wherein the clipping value is a maximum allowed amount of change between the original pixel value and the deblocked pixel value.

Embodiment 3. The image processing device (501,601,701) of embodiment 1 or 2, wherein the clipping of the filtered pixel value, using the clipping value, resulting in the deblocked pixel value, comprises:setting the deblocked pixel value to the filtered pixel value, if the absolute value of the difference between the filtered pixel value and the deblocked pixel value does not exceed the clipping value of the pixel,
setting the deblocked pixel value to the original pixel value plus the clipping value of the pixel, if the filtered pixel value exceeds the original pixel value plus the clipping value, and setting the deblocked pixel value to the original pixel value minus the clipping value of the pixel, if the filtered pixel value is lower than the original pixel value minus the clipping value.

Embodiment 4. The image processing device (501,601,701) of any of the embodiments 1 to 3, wherein the filter (502,602,702) is adapted to determine the clipping value of the pixel dependent upon a distance of the pixel from the block edge (403,800), by using a function or a lookup table.

Embodiment 5. The image processing device (501,601,701) of any of the embodiments 1 to 3, wherein the filter (502,602,702) is adapted to determine the clipping value of the pixel dependent upon a distance of the pixel from the block edge (403,800), by using a function, which monotonically decreases with increasing distance of the pixel from the block edge (403,800).

Embodiment 6. The image processing device (501,601,701) of embodiment 5, wherein the function is an exponential function.

Embodiment 7. The image processing device (501,601,701) of embodiment 6, wherein the function is tc′=tc+(tc>>i), wherein tc′ is the clipping value, wherein tc is a constant value, wherein i is the distance of the pixel from the block edge (403,800), and wherein >> signifies a right shift.

Embodiment 8. The image processing device (501,601,701) of embodiment 5, wherein the function is a linear function.

Embodiment 9. The image processing device (501,601,701) of embodiment 8, wherein the function is tc′=tc+(tc−(i*x), wherein tc′ is the clipping value, wherein tc is a constant value, wherein i is the distance of the pixel from the block edge (403,800), and wherein x is a constant value.

Embodiment 10. The image processing device (501,601,701) of any of the embodiments 1 to 9, wherein the filter (502,602,702) is adapted to, for each pixel to be filtered, within the deblocking range from the block edge (403,800), the deblocking range being perpendicular to the block edge (403,800):

determine the filtered pixel value from the original pixel value of the pixel and the at least one further pixel value, determine the clipping value of the pixel dependent upon the distance of the pixel from the block edge (403,800), and clipping the filtered pixel value, using the clipping value, resulting in the deblocked pixel value.

Embodiment 11. The image processing device (501,601,701) of any of the embodiments 1 to 9, wherein the filter (502,602,702) is adapted to, determine if a block edge (403,800) needs to be filtered, based upon a number of decision pixel lines being lower than a number of pixel lines in the blocks surrounding the block edge (403,800), in case of a vertical block edge (403,800), and upon a number of decision pixel rows, being lower than a number of pixel rows in the blocks surrounding the block edge (403,800), in case of a horizontal block edge (403,800), wherein the filter (502,602,702) is adapted to, for each pixel to be filtered, not in a decision pixel row or decision pixel line, within a deblocking range from the block edge (403,800), the deblocking range being perpendicular to the block edge (403,800):

determine the filtered pixel value from the original pixel value of the pixel and the at least one further pixel value,

determine the clipping value of the pixel dependent upon the distance of the pixel from the block edge (403,800),

clipping the filtered pixel value, using the clipping value, resulting in the deblocked pixel value, and

wherein the filter (502,602,702) is adapted to, for each pixel to be filtered, in a decision pixel row or decision pixel line, within a deblocking range from the block edge (403,800), the deblocking range being perpendicular to the block edge (403,800):determine the filtered pixel value from the original pixel value of the pixel and the at least one further pixel value, and
clipping the filtered pixel value, using a constant clipping value, resulting in the deblocked pixel value.

Embodiment 12. The image processing device (501,601,701) of any of the embodiments 1 to 11, wherein the filter (502,602,702) has a filter tap length of 1, or at least two, or at least three, or at least four, or at least five, or at least six, or at least seven, or at least eight, or at least nine, or at least ten, or at least eleven, or at least twelve, or at least thirteen, or at least fourteen, or at least fifteen, or at least sixteen pixels.

Embodiment 13. An encoder for encoding an image, comprising an image processing device (501,601,701) of any of the embodiments 1 to 12.

Embodiment 14. A decoder for decoding an image, comprising an image processing device (501,601,701) of any of the embodiments 1 to 12.

Embodiment 15. A deblocking method for deblocking a block edge (403,800) between a first coding block and a second coding block of an image encoded with a block code, wherein the method comprises, for at least some of the pixels to be filtered, within a deblocking range from the block edge (403,800), the deblocking range being perpendicular to the block edge (403,800):

determining (1000) a filtered pixel value from an original pixel value of the pixel and at least one further pixel value,

determining (1001) a clipping value of the pixel, dependent upon a distance of the pixel from the block edge (403,800), and clipping (1002) the filtered pixel value, using the clipping value, resulting in a deblocked pixel value.

Embodiment 16. An encoding method for encoding an image, comprising a deblocking method of embodiment 15.

Embodiment 17. A decoding method for decoding an image, comprising a deblocking method of embodiment 15.

Embodiment 18. A computer program product comprising a program code for performing the method according to any of the embodiments 15 to 17 when the computer program runs on a computer.