Patent ID: 12244795

DETAILED DESCRIPTION OF EMBODIMENTS

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 application or specific aspects in which embodiments of the present application may be used. It is understood that embodiments of the application 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 application 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 video images 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 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 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 an encoder100, a decoder200and a coding system300for implementing embodiments of the application are described based onFIGS.1to3, before describing the embodiments of the application in more detail based onFIGS.4to11.

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

The source device310comprises an encoder or encoding unit100, and may additionally comprise a picture source312, a pre-processing unit314, e.g., a picture pre-processing unit, 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”, unless specifically described otherwise, while the previous explanations with regard to the term “picture” covering “video pictures”, “video images”, “still images”, 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 RBG 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 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 or an encoded picture data memory.

The communication interface318and the communication interface322may be configured to transmit 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.

Both, communication interface318and communication interface322may 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 data or 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 data or the decoded picture231, to obtain post-processed picture data or 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, or 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 just example embodiments of the application and embodiments of the application 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, and may use no or any kind of operating system.

Encoder & Encoding Method

FIG.1shows a schematic/conceptual block diagram of an embodiment of an encoder100, e.g., a picture encoder, 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 buffer116, a loop filter120, a decoded picture buffer (DPB)130, a prediction unit160(including 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 buffer116, 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 encoder100is 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).

Residual Calculation

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.

Transformation

The transformation unit106is configured to apply a transformation, e.g., a spatial frequency transform or a linear spatial (frequency) 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, trade-off 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.

Quantization

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 (e.g., small quantization step sizes) and large quantization parameters may correspond to coarse quantization (e.g., large quantization step sizes) or vice versa. The quantization may include division by a quantization step size and corresponding inverse dequantization, e.g., by inverse quantization110, or 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 dequantization to restore the norm of the residual block, which might get modified because of the scaling used in the fixed point approximation of the equation for quantization step size and quantization parameter. In an embodiment, the scaling of the inverse transform and dequantization may be combined. Alternatively, customized quantization tables may be used and signaled from an encoder to a decoder, e.g., in a bitstream. The quantization is a lossy operation, where 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 dequantized 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 dequantized coefficients111may also be referred to as dequantized 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 dequantized 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 buffer116), e.g., a line buffer, is configured to buffer or store the reconstructed block and the respective sample values, for example for intra-estimation and/or intra-prediction. In some embodiments, the encoder100may be configured to use unfiltered reconstructed blocks and/or the respective sample values stored in buffer unit116for any kind of estimation and/or prediction.

The loop filter unit120(or loop filter120), 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.

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 application 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.

Motion Estimation and Prediction

The prediction unit160, also referred to as block prediction unit, 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.

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 unit160) and 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.

Additional 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 unit, 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”). For example, 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 (e.g., 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 typically comprises calculating an/the inter-prediction block, i.e. the or a “kind of” inter-prediction152), e.g., by testing all possible or a predetermined subset of possible interprediction 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(e.g., 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 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 typically 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 application, as explained further below with respect to the device500(FIG.5) and method800(FIG.8) according to embodiments of the application may be applied at this position of the encoder100. That is, the device500may be or be part of the encoder100, specifically the intra-prediction unit154.

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 bitstream171.

FIG.2shows an example video decoder200configured to receive encoded picture data (e.g., encoded bitstream)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(including an inter-prediction unit244, and an intra-prediction unit254), a mode selection unit262and 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 unit262are 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 filter120(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 intra-prediction unit254, wherein the inter-prediction unit144may be identical in function to the inter-prediction unit244, and the intra-prediction unit154may be identical in function to the intra-prediction unit254. 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 application, as explained further below with respect to the device500(seeFIG.5) and method800(seeFIG.8) according to embodiments of the application may be applied at this position of the decoder200. That is, the device500may be or be part of the decoder200, specifically the intra-prediction unit154.

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

With reference toFIGS.15and16,FIG.4illustrates more specifically in (a) the source of discontinuities that can be removed by the embodiments of the application. In particular, the reason for these discontinuities is that two vertically adjacent prediction samples401in a prediction block400(e.g., PU or TU) may be predicted from reference samples403that are not adjacent to each other due to an acute intra-prediction angle, which is an interpolation flaw. While this flaw may partially be reduced by applying a reference samples smoothing filter or an intra-interpolation filter with a length Nf, a fixed length may not be large enough in the case of an intra-prediction angle of significantly less than 45°. The filtering process can reduce discontinuity effects by convoluting the reference samples403shown inFIG.4during the filtering process. However, discontinuities may still occur, if the reference samples403selected for the vertically adjacent prediction samples401are too far apart. An example of such discontinuities, which can be visually observed e.g., for the case of synthesized reference (the upper row), is shown in (b).

FIG.5shows schematically a device500according to an embodiment, which configured to intra-predict a prediction block400of a video image in an improved manner, namely is able to eliminate the above-described source of the discontinuities shown inFIG.4. The device500may be or be part of the encoder100or decoder200shown inFIG.1orFIG.2, respectively, specifically the intra-prediction units154or254.

The device500is configured to perform several functions, for instance, implemented by means of a processor or other kind of processing circuitry. In an embodiment, the device500is configured to select a directional intra-prediction mode501afrom a set of directional intra-prediction modes501, wherein each directional intra-prediction mode501corresponds to a different intra-prediction angle. These directional intra-prediction modes501may include the directional/angular intra-prediction modes shown inFIG.9(and as defined in the standard), and may include extended directional intra-prediction modes, corresponding to further intra-prediction angles, as shown e.g., inFIG.14. In particular, for rectangular prediction blocks400, the directional intra-prediction modes501may include modes that relate to acute intra-prediction angles (angels smaller than 45°). The intra-prediction angle bases on the direction of intra-predicting a prediction sample401from a reference sample403. For instance, the angle is defined between this intra-prediction direction and an upper edge (horizontal edge) of the prediction block400.

Further, the device500is configured to select a filter402afrom a set of filters402based on the selected directional intra-prediction mode501a. In particular, the device500may be configured to determine a filter length based on the selected directional intra-prediction mode401a, and select as the filter402aone filter402from the set having at least the determined filter length.

The device500is further configured to determine, for a given prediction sample401of the prediction block400, a reference sample403afrom a set of reference samples403based on the selected directional intra-prediction mode501a, and apply the selected filter402ato the determined reference sample403a. The device500may particularly be configured to proceed in this way for each prediction sample401of the prediction block400. That is, for each prediction sample401, the device500may determine a reference sample403afrom the reference samples403, and may apply the selected filter402ato each reference sample403. In this way, the device500is able to intra-predict the entire prediction block400.

An example filter set, from which the device500is configured to select the filter402, is shown in the below table. The filter set particularly includes different filters402. For instance, the set of filters402may include filters402having different filter lengths Nf, particularly having filter lengths Nfthat span 1, 3 or 5 adjacent reference samples403. Further, each filter402in the set of filters402may perform a different smoothing over the determined reference sample403aand one or more adjacent reference samples403, when it is applied to the determined reference sample403a. This smoothing may be expressed as in the table by different coefficients, wherein the numbers of the coefficients indicate the relative weighting of the determined reference sample403ato the other adjacent reference samples (middle number for determined reference sample403ato respectively 0, 2 or 4 further numbers for adjacent reference samples403).

Index0123Coefficients[1][1, 2, 1][2, 3, 6, 3, 2][1, 4, 6, 4, 1]Filter length Nf1355

FIG.6shows an example flow-chart of a reference sample filter selection mechanism600, which the device500may be configured to carry out. The device500is particularly able to select the reference sample filter402adepending on the intra-prediction angle. It is assumed for the mechanism600that the filter set (here denoted F) is sorted by filter length Nfin ascending order.

At block601, the device500is configured to derive as input to the selection mechanism600, the intra-prediction angle ∝. The device500may be configured to determine the intra-prediction angle corresponding to the selected directional intra-prediction mode501.

At block602, the device500is then configured to derive a distance Δp∝(see e.g.,FIG.4) between the determined reference sample403aand a further reference sample403b, which may be specified for a further prediction sample401of the prediction block400from the set of reference samples403based on the selected directional intra-prediction mode501a.

At block603, the filter index is initialized to i=0. At block604a filter402with the current index i is taken from the filter set. For instance, the above table shows that filters402may be indexed from i=0-3.

At block605, the device500is configured to determine, whether the length Nfof the filter402taken from the set is smaller than the distance Δp∝. If not, the selection mechanism600is complete, and the currently taken filter402is selected as the filter402ato be applied to the determined reference sample403a.

Otherwise, the device500is configured to check at block606, whether the current filter index i is smaller than k, wherein k may be the highest possible filter index and/or indicate the number of filters402in the filter set. If not, the selection mechanism600is complete and the currently taken filter402, which in this case corresponds to the filter402with the largest filter length Nfassuming the set is sorted by filter length, is selected as the filter402ato be applied to the determined reference sample403a. Otherwise, the filter index is increase by 1 at block607, and the selection mechanism proceeds with block604(i.e. the next filter402in the set is taken).

As shown inFIG.7, the device500may also be configured to perform pre-processing of reference samples403. In particular, the device500may be configured to generate a transposed reference sample700afrom the determined reference sample403a, namely by interpolating the determined reference sample403abased on the selected intra-prediction mode501a. Then, the device500may be configured to intra-predict the given prediction sample401from the transposed reference sample700a, instead of directly from the determined reference sample403a.

A first step of the pre-processing is shown exemplarily in (a) ofFIG.7, and may consist in calculating a set of transposed reference samples700(denoted {tilde over (R)}) from a given top row of reference samples403(denoted R). An input to this step may be a set of reference samples403located to the top and top-right side of the block400to be predicted. These reference samples403can be filtered as described above depending on the intra-prediction angle. That is, the device500may be configured to select the filter402aas described above, and then apply the selected filter402ato the determined reference sample403abefore or during the generation of the transposed reference sample700a.

The first step is particularly performed by means of interpolation performed for two parts of R. One part of the set denoted RLis located to the left side of the top-right pixel of the block PTR. The reference sample403at position PTRis not altered during this first step, i.e. {tilde over (R)}(PTR)=R(PTR). Another part denoted RRis located to the right side of PTR. For both parts, interpolation is performed using the same mechanism as used to predict samples inside a block400to be predicted (denoted B). A prediction angle ∝ used for these two parts is the same, but the prediction direction is opposite.

A second step of the pre-processing is shown in (b) ofFIG.7and is to intra-predict prediction samples401of the block400to be predicted, namely by performing intra-prediction interpolation from the set of transposed reference samples700calculated in the first step show in (a). If the intra-prediction direction uses not the top row, i.e. the angle of intra-prediction direction ∝ is greater than 180 degrees, a block and corresponding reference samples are transposed (row indexes become column indexes and vice versa), and intra-prediction is performed as described above. The final result in this case is obtained by transposing back the calculated predicted block.

FIG.8shows a method800according to an embodiment. The method800is for intra-predicting a prediction block400of a video image, and may be carried out by the device500shown inFIG.5. In particular, the method800comprises a step801of selecting a directional intra-prediction mode501afrom a set of directional intra-prediction modes501, wherein each directional intra-prediction mode501corresponds to a different intra-prediction angle. Further, the method800comprises a step802of selecting a filter402afrom a set of filters402based on the selected directional intra-prediction mode501a. Then, the method800comprises a step803of determining, for a given prediction sample401of the prediction block400, a reference sample403afrom a set of reference samples403based on the selected directional intra-prediction mode501a, and a step804of applying the selected filter402ato the determined reference sample403a.

Note that this specification provides explanations for pictures (frames), but fields substitute as pictures in the case of an interlace picture signal.

Although embodiments of the application 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 person skilled in the art will understand that the “blocks” (“units”) of the various figures (method and apparatus) represent or describe functionalities of embodiments of the application (rather than necessarily individual “units” in hardware or software) and thus describe equally functions or features of apparatus embodiments as well as method embodiments (unit=step).

The terminology of “units” is merely used for illustrative purposes of the functionality of embodiments of the encoder/decoder and are not intended to limiting the disclosure.

In the several embodiments provided in the present application, it should be understood that the disclosed system, apparatus, and method may be implemented in other manners. For example, the described apparatus embodiment is merely exemplary. For example, the unit division is merely logical function division and may be other division in actual implementation. For example, a plurality of units or components may be combined or integrated into another system, or some features may be ignored or not performed. In addition, the displayed or discussed mutual couplings or direct couplings or communication connections may be implemented by using some interfaces. The indirect couplings or communication connections between the apparatuses or units may be implemented in electronic, mechanical, or other forms.

The units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one position, or may be distributed on a plurality of network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments.

In addition, functional units in the embodiments of the present application may be integrated into one processing unit, or each of the units may exist alone physically, or two or more units are integrated into one unit.

Embodiments of the application may further comprise an apparatus, e.g., encoder and/or decoder, which comprises a processing circuitry configured to perform any of the methods and/or processes described herein.

Embodiments of the encoder100and/or decoder200may be implemented as hardware, firmware, software or any combination thereof. For example, the functionality of the encoder/encoding or decoder/decoding may be performed by a processing circuitry with or without firmware or software, e.g., a processor, a microcontroller, a digital signal processor (DSP), a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or the like.

The functionality of the encoder100(and corresponding encoding method100) and/or decoder200(and corresponding decoding method200) may be implemented by program instructions stored on a computer readable medium. The program instructions, when executed, cause a processing circuitry, computer, processor or the like, to perform the steps of the encoding and/or decoding methods. The computer readable medium can be any medium, including non-transitory storage media, on which the program is stored such as a Blu-ray disc, DVD, CD, USB (flash) drive, hard disc, server storage available via a network, etc.

An embodiment of the application comprises or is a computer program comprising program code for performing any of the methods described herein, when executed on a computer.

An embodiment of the application comprises or is a computer readable medium comprising a program code that, when executed by a processor, causes a computer system to perform any of the methods described herein.

LIST OF REFERENCE SIGNS

FIG.1

100Encoder103Picture 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 picture
FIG.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 block262Mode 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 data328Display device/unit330transmitted/received/communicated (encoded) picture data
FIG.4400Prediction block401Prediction sample402Filter403Reference Sample
FIG.5402Filter402aSelected filter403Reference sample403aDetermined reference sample500Device501Directional intra-prediction modes501aSelected directional intra-prediction mode
FIG.6600Filter selection mechanism601-607Functional blocks of the mechanism
FIG.7400Prediction block401Prediction samples403Reference sample403aDetermined reference sample700Transposed reference samples700aTransposed reference sample
FIG.8800Method for intra-predicting a prediction block801Step of selecting an intra-prediction mode802Step of selecting a filter803Step of determining a reference sample for a given prediction sample804Step of applying the selected filter to the reference sample