Method and device for picture encoding and decoding using position-dependent intra prediction combination

Through the position-dependent intraprediction combination method, the predicted sample value during the video encoding process is adjusted, and the problems of block boundary discontinuity and low encoding efficiency in video encoding are solved, thereby achieving more efficient video compression.

JP2025020235AActive Publication Date: 2025-02-12INTERDIGITALCE PATENT HLDG SAS
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024189712
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-06-20
Filing Date
2024-10-29
Publication Date
2025-02-12
Estimated Expiration
2040-06-15

AI Technical Summary

Technical Problem

When existing video encoding technologies deal with spatial and temporal redundancy of video content, it is difficult to effectively utilize prediction and transformation to achieve efficient compression, especially when block effects and low encoding efficiency occur at edge prediction and block boundaries.

Method used

The position-dependent intraprediction combination method is adopted to adjust the predicted sample value and use the weighted average of the left or upper reference sample to improve the intraprediction steps in the video encoding and decoding process, reduce the discontinuity at the block boundary, and improve the encoding efficiency.

Benefits of technology

While maintaining the same compression performance, the computing efficiency is improved, the discontinuity at the block boundaries is reduced, and the overall efficiency of video encoding is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025020235000001_ABST
    Figure 2025020235000001_ABST
Patent Text Reader

Abstract

To provide an encoding method, a decoding method, an encoding device, and a decoding device based on a post-processing stage that achieves better computational efficiency while maintaining the same compression performance.SOLUTION: A video coding system includes a position-dependent intra-prediction combination (PDPC) post-processing step using position-dependent intra-prediction combination, which modifies a predicted sample on the basis of a weighting between a value of a left reference sample or an above reference sample and an obtained predicted value of the sample, and determines the left reference sample or the above reference sample on the basis of an intra-prediction angle.SELECTED DRAWING: Figure 13
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] Technical Field At least one of the present embodiments relates generally to video coding systems, and more particularly to a post-processing stage of position dependent intra prediction combination. [Background technology]

[0002] Background technology To achieve high compression efficiency, image and video coding schemes usually use prediction and transformation to exploit spatial and temporal redundancy in video content. In general, intra- or inter-prediction is used to exploit intra- or inter-frame correlation, and then the difference between the original and predicted image blocks, often denoted as prediction error or prediction residual, is transformed, quantized, and entropy coded. During encoding, the original image blocks are usually partitioned / split into sub-blocks, for example, possibly using quad-tree partitioning. To reconstruct the video, the compressed data is decoded by the inverse process corresponding to prediction, transformation, quantization, and entropy coding. Summary of the Invention

[0003] overview The video coding system includes a post-processing stage of position-dependent intra-prediction combination, in which a predicted sample is modified based on the value of a left or above reference sample and a weighting between the obtained predicted values ​​for the sample, the left or above reference sample being determined based on an intra-prediction angle, thereby providing better computational efficiency while maintaining the same compression performance. An encoding method, a decoding method, an encoding device and a decoding device based on this post-processing stage are proposed.

[0004] According to a first aspect of at least one embodiment, a method for determining a value of a sample of a block of an image, the value being intra predicted according to a value representing an intra prediction angle, comprises obtaining a predicted value of the sample, and if the intra prediction angle matches a reference, determining the value of the sample based on a value of a left reference sample or an above reference sample and a weighting between the obtained predicted value of the sample, where the left reference sample or the above reference sample is determined based on the intra prediction angle.

[0005] According to a second aspect of at least one embodiment, a video encoding method includes, for each sample of a block of a video, performing intra prediction of the sample, modifying values ​​of the sample according to the first aspect, and encoding the block.

[0006] According to a third aspect of at least one embodiment, a video decoding method includes, for each sample of a block of a video, performing intra prediction of the sample and modifying a value of the sample according to the first aspect.

[0007] According to a fourth aspect of at least one embodiment, a video encoding apparatus includes an encoder configured to, for each sample of a block of a video, perform intra prediction of the sample, modify values ​​of the sample according to the first aspect, and encode the block.

[0008] According to a fifth aspect of at least one embodiment, a video decoding apparatus includes a decoder configured to, for each sample of a block of a video, perform intra prediction of the sample and modify values ​​of the sample according to the first aspect.

[0009] One or more of the present embodiments also provide a non-transitory computer readable storage medium having stored thereon instructions for encoding or decoding video data according to at least a portion of any one of the above methods.One or more of the present embodiments also provide a computer program product including instructions for performing at least a portion of any one of the above methods. [Brief description of the drawings]

[0010] Drawing Overview [Figure 1A] 1 shows a block diagram of a video encoder according to one embodiment. [Figure 1B] 2 shows a block diagram of a video decoder according to one embodiment. [Diagram 2] FIG. 1 illustrates a block diagram of an example system in which various aspects and embodiments may be implemented. [Figure 3A] We present notations related to angular intra prediction. [Figure 3B] We present notations related to angular intra prediction. [Figure 4] 4 illustrates a position-dependent intra-prediction combination for the bottom-left mode (mode 66). [Figure 5A] Angle modes adjacent to mode 66 are shown. [Figure 5B] An angular mode adjacent to mode 2 is shown. [Figure 6] 1 shows an example of an angular mode of a PDPC where there is a mismatch between the projection of the direction and the reference pixel. [Figure 7] 13 shows an example flowchart of the PDPC process for diagonal (mode 2 and mode 66) and adjacent diagonal modes according to an example implementation of VTM5.0. [Figure 8] 1 shows an example of a PDPC for vertical diagonal mode 66 where the target pixel for the left reference sample is unavailable. [Figure 9] 4 illustrates an example flowchart according to a first embodiment of a modified PDPC process. [Figure 10] 13 shows an example flow chart according to a second embodiment of a modified PDPC process. [Figure 11] 4 shows the results of the implementation of the first embodiment. [Figure 12] 4 shows the results of the implementation of the second embodiment. [Figure 13] 1 illustrates an example flow chart in accordance with various embodiments described in this disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] Detailed Description Various embodiments relate to a method for post-processing a predicted value of a sample of a block of an image, the value of which is predicted according to an intra-prediction angle and modified after prediction such that the value of the sample is determined based on a weighting of the difference between the value of a left reference sample and the obtained predicted value of the sample, the left reference sample being determined based on the intra-prediction angle. Based on this post-processing method, an encoding method, a decoding method, an encoding device and a decoding device are proposed.

[0012] Additionally, the present aspects describe principles related to particular drafts of the VVC (Versatile Video Coding) or HEVC (High Efficiency Video Coding) specifications, but are not limited to VVC or HEVC, and may be applied, for example, to other standards and recommendations, whether existing or developed in the future, and to extensions of any such standards and recommendations (including VVC and HEVC).Unless otherwise indicated or technically precluded, the aspects described in this application may be used individually or in combination.

[0013] 1A shows a video encoder 100. Variations of this encoder 100 are envisaged, but for the sake of clarity, without describing all possible variations, the encoder 100 will be described below. Before being encoded, a video sequence may undergo a pre-encoding process (101), such as applying a colour transformation (e.g. from RGB 4:4:4 to YCbCr 4:2:0) to an input colour picture or performing a remapping of the input picture components, in order to obtain a signal distribution that is more resilient to compression (e.g. using a histogram equalisation of one of the colour components). Metadata may be associated with the pre-processing and may be attached to the bitstream.

[0014] In the encoder 100, a picture is coded by the encoder elements as described below. The picture to be coded is partitioned (102) and processed, for example, in units of CUs. Each unit is coded, for example, using intra or inter mode. When a unit is coded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) which of the intra or inter modes to use for coding the unit, and signals the intra / inter decision, for example, by a prediction mode flag. A prediction residual is calculated, for example, by subtracting (110) the predicted block from the original image block.

[0015] The prediction residual is then transformed (125) and quantized (130). To output a bitstream, the quantized transform coefficients as well as motion vectors and other syntax elements are entropy coded (145). The encoder can skip the transform and apply quantization directly to the untransformed residual signal. The encoder can bypass both the transform and quantization, i.e., the residual is coded directly without applying a transform or quantization process.

[0016] The encoder decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. An image block is reconstructed by combining (155) the decoded prediction residual and the predicted block. An in-loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / Sample Adaptive Offset (SAO), Adaptive Loop Filter (ALF) filtering, for example, to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).

[0017] FIG. 1B shows a block diagram of a video decoder 200. In the decoder 200, the bitstream is decoded by a decoder element, as described below. The video decoder 200 generally performs a decoding pass, which is the inverse of the encoding pass, as described in FIG. 18. The encoder 100 also generally performs video decoding as part of encoding the video data. Specifically, the input of the decoder includes a video bitstream, which may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other coded information. The picture partition information indicates how the picture is partitioned. Thus, the decoder divides the picture according to the decoded picture partition information (235). To decode the prediction residual, the transform coefficients are dequantized (240) and inverse transformed (250). An image block is reconstructed by combining (255) the decoded prediction residual and the predicted block. The predicted block can be obtained (270) from intra prediction (260) or motion compensated prediction (i.e., inter prediction) (275). An in-loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).

[0018] The decoded picture may further undergo a post-decoding process (285), such as, for example, an inverse color transform (e.g., from YCbCr 4:2:0 to RGB 4:4:4) or an inverse remapping that performs the inverse of the remapping process performed in the pre-encoding process (101). The post-decoding process may use metadata derived in the pre-encoding process and signaled in the bitstream.

[0019] FIG. 2 illustrates a block diagram of an example of a system in which various aspects and embodiments may be implemented. System 1000 may be implemented as a device including various components, described below, configured to perform one or more of the aspects described herein. Examples of such devices include, without limitation, various electronic devices, such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television sets, personal video recording systems, connected home appliances, and servers. The elements of system 1000, alone or in combination, may be implemented in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed across multiple ICs and / or separate components. In various embodiments, system 1000 is communicatively coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more of the aspects described herein.

[0020] The system 1000 includes at least one processor 1010 configured to execute instructions loaded therein to implement various aspects described herein, for example. The processor 1010 may include embedded memory, input / output interfaces, and various other circuitry known in the art. The system 1000 includes at least one memory 1020 (e.g., volatile and / or non-volatile memory devices). The system 1000 includes a storage device 1040, which may include non-volatile and / or volatile memory including, without limitation, Electrically Erasable Programmable Read Only Memory (EEPROM), Read Only Memory (ROM), Programmable Read Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), Flash, magnetic disk drives, and / or optical disk drives. Storage devices 1040 may include, by way of non-limiting examples, internal storage devices, attached storage devices (including removable and non-removable storage devices), and / or network-accessible storage devices.

[0021] The system 1000 includes an encoder / decoder module 1030 configured to process data to provide, for example, encoded or decoded video, which may include its own processor and memory. The encoder / decoder 1030 represents one or more modules that may be included within a device to perform encoding and / or decoding functions. As is known, a device may include one or both of an encoding and decoding module. Additionally, the encoder / decoder module 1030 may be implemented as a separate element of the system 1000 or may be incorporated within the processor 1010 as a combination of hardware and software, as is known to those skilled in the art.

[0022] Program code loaded onto the processor 1010 or the encoder / decoder 1030 to perform various aspects described herein may be stored in the storage device 1040 and later loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, one or more of the processor 1010, the memory 1020, the storage device 1040, and the encoder / decoder module 1030 may store one or more of various items during the operation of the processes described herein. Such stored items may include, without limitation, input video, decoded video or portions of decoded video, bitstreams, matrices, variables, and intermediate or final results resulting from the processing of expressions, formulas, operations, and operational logic.

[0023] In some embodiments, memory inside the processor 1010 and / or the encoder / decoder module 1030 is used to store instructions and provide working memory for processing required in encoding or decoding, although in other embodiments, memory external to the processing device (e.g., the processing device can be the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory can be, for example, the memory 1020 and / or the storage device 1040, such as dynamic volatile memory and / or non-volatile flash memory. In some embodiments, the external non-volatile flash memory is used to store, for example, the operating system of the television. In at least one embodiment, a high-speed external dynamic volatile memory such as RAM is used as working memory for video coding and decoding operations such as MPEG-2 (MPEG stands for Moving Picture Experts Group, MPEG-2 is also known as ISO / IEC 13818, 13818-1 is also known as H.222, and 13818-2 is also known as H.262), HEVC (HEVC stands for High Efficiency Video Coding, also known as H.265 and MPEG-H Part 2), or VVC (Versatile Video Coding, a new standard is being developed by the Joint Video Experts Team (JVET)).

[0024] Input to the elements of system 1000 can be provided through a variety of input devices, as shown in block 1130. Such input devices include, without limitation, (i) a radio frequency (RF) section that receives, for example, an RF signal transmitted over the air by a broadcaster, (ii) a component (COMP) input terminal (or a set of COMP input terminals), (iii) a universal serial bus (USB) input terminal, and / or (iv) a high definition multimedia interface (HDMI) input terminal. Other examples not shown in FIG. 18 include composite video.

[0025] In various embodiments, the input devices of block 1130 have associated individual input processing elements known in the art. For example, the RF section may be associated with elements suitable for (i) selecting a desired frequency (and selecting a signal or band-limiting a signal to a band of frequencies), (ii) down-converting the selected signal, (iii) band-limiting again to a narrow band of frequencies to select a signal frequency band, which in certain embodiments may be referred to as a channel (for example), (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired stream of data packets. The RF section of various embodiments includes one or more elements for performing these functions, such as, for example, a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner to perform various of these functions, including down-converting a received signal to a relatively low frequency (e.g., an intermediate frequency or a frequency close to baseband) or to baseband. In one set top box embodiment, the RF section and its associated input processing elements receive RF signals transmitted over a wired (e.g., cable) medium and perform frequency selection by filtering, down-converting, and filtering again to a desired frequency band. Various embodiments rearrange the above (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions. Adding elements may include, for example, inserting elements between existing elements, such as inserting amplifiers and analog-to-digital converters. In various embodiments, the RF section includes an antenna.

[0026] In addition, the USB and / or HDMI terminals may include respective interface processors for connecting the system 1000 to other electronic devices across the USB and / or HDMI connections. It should be understood that various aspects of input processing, such as Reed-Solomon error correction, may be implemented in a separate input processing IC or in the processor 1010, as desired. Similarly, aspects of USB or HDMI interface processing may be implemented in a separate interface IC or in the processor 1010, as desired. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including the processor 1010 and the encoder / decoder 1030, operating in combination with memory and storage elements, to process the data stream as desired for presentation on an output device, as desired.

[0027] The various elements of the system 1000 may be provided within a unified housing in which the various elements may be interconnected and data may be transmitted therebetween using any suitable connection arrangement 1140, such as an internal bus as known in the art, including, for example, an Inter-IC (I2C) bus, wiring, and printed circuit boards.

[0028] The system 1000 includes a communication interface 1050 that enables communication with other devices over a communication channel 1060. The communication interface 1050 may include, without limitation, a transceiver configured to transmit and receive data over the communication channel 1060. The communication interface 1050 may include, without limitation, a modem or a network card, and the communication channel 1060 may be implemented, for example, in a wired and / or wireless medium.

[0029] Data is streamed or otherwise provided to the system 1000 in various embodiments using a wireless network, such as a Wi-Fi network, for example, an IEEE 802.11 (IEEE stands for Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these embodiments is received over a communication channel 1060 and communication interface 1050 adapted for Wi-Fi communication. The communication channel 1060 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, that allow streaming applications and other over-the-top communications. Other embodiments provide streamed data to the system 1000 by using a set-top box that provides data over an HDMI connection in the input block 1130. Still other embodiments provide streamed data to the system 1000 by using an RF connection in the input block 1130. As mentioned above, various embodiments provide data in a non-streaming manner. In addition, various embodiments also use wireless networks other than Wi-Fi, such as, for example, a cellular network or a Bluetooth network.

[0030] The system 1000 can provide output signals to various output devices, including a display 1100, speakers 1110, and other peripherals 1120. The display 1100 in various embodiments includes one or more of a touch screen display, an organic light emitting diode (OLED) display, a curved display, and / or a foldable display, for example. The display 1100 may be for a television, a tablet, a laptop, a cell phone, or other device. The display 1100 may also be integrated with other components (e.g., as in a smartphone) or may be separate (e.g., an external monitor for a laptop). The other peripherals 1120 in various example embodiments include one or more of a standalone digital video disc (or digital versatile disc) (for both terms, a DVR), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripherals 1120 to provide functionality based on the output of the system 1000. For example, a disc player performs the function of playing the output of the system 1000 .

[0031] In various embodiments, control signals are communicated between the system 1000 and the display 1100, speaker 1110, or other peripheral device 1120 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that allow inter-device control with or without user intervention. The output devices may be communicatively coupled to the system 1000 via dedicated connections through individual interfaces 1070, 1080, and 1090. Alternatively, the output devices may be connected to the system 1000 using a communication channel 1060 through the communication interface 1050. The display 1100 and speaker 1110 may be integrated with other components of the system 1000 in a single unit, for example, in an electronic device such as a television. In various embodiments, the display interface 1070 includes a display driver, for example, a timing controller (T Con) chip.

[0032] The display 1100 and speakers 1110 may instead be separate from one or more of the other components, for example if the RF portion of the input 1130 is part of a separate set-top box. In various embodiments in which the display 1100 and speakers 1110 are external components, the output signal may be provided via a dedicated output connection including, for example, an HDMI port, a USB port, or a COMP output.

[0033] The embodiments may be performed by computer software implemented by the processor 1010, by hardware, or by a combination of hardware and software. As a non-limiting example, the embodiments may be implemented by one or more integrated circuits. The memory 1020 may be of any type suitable for the technical environment and may be implemented using any suitable data storage technology, such as, as non-limiting examples, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memories, and removable memories. The processor 1010 may be of any type suitable for the technical environment and may include, as non-limiting examples, one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.

[0034] In versatile video coding (VVC), intra prediction is applied in all intra frames and in intra blocks of inter frames, where a target block, called a coding unit (CU), is spatially predicted from its causal neighbor blocks in the same frame, i.e., the upper and upper right blocks, the left and lower left blocks, and the upper left block. Based on the decoded pixel values ​​of these blocks, the encoder constructs different predictions of the target block and selects the one that results in the best rate-distortion (RD) performance. These predictions are tested for 67 prediction modes, including one PLANAR mode (indexed as mode 0), one DC mode (indexed as mode 1), and 65 angle modes. The angle modes may include only normal angle prediction modes from mode 2 to mode 66, or may also include wide angle modes defined beyond the normal angle range of 45 degrees to -135 degrees for rectangular blocks.

[0035] Depending on the prediction mode, the predicted samples may further undergo a post-processing stage such as position-dependent intra-prediction combination (PDPC). PDPC aims to smooth discontinuities at block boundaries for a particular prediction mode in order to improve the prediction of the target block. DC and PLANAR prediction modes, as well as some angle prediction modes such as strictly vertical (mode 50), strictly horizontal (mode 18), diagonal mode 2, and VDIA_IDX (mode 66), as well as all other positive angle modes (including wide angle modes), may result in predicted values ​​at one side of the target block that are significantly different from the reference samples on the adjacent reference array. Without any kind of post-filtering, the subsequent residual signal would cause blocking artifacts, especially at higher QP values. The purpose of PDPC is to prevent these blocking artifacts by smoothing the predictions at the target block boundaries in a graceful way so that the intensity changes at the target block boundaries are somewhat gradual. However, PDPC achieves this with significant complexity: the predicted samples are combined with reference samples from the top and left reference arrays as a weighted average with multiplications and clipping.

[0036] For a given target block to be intra predicted, the encoder or decoder first constructs two reference arrays, one above and the other to the left. The reference samples are taken from the decoded samples of the decoded blocks above, above-right, left, below-left, and above-left. If some of the samples above or to the left are unavailable, such as because the corresponding CU is not in the same slice or the current CU is located on a frame boundary, a method called reference sample replacement is performed, in which the missing samples are copied from the available samples in a clockwise direction. Then, the reference samples are filtered using a specified filter according to the current CU size and prediction mode.

[0037] For the sake of generality, assume a rectangular target block with a width of W pixels and a height of H pixels. Denote the top and left reference arrays by refMain and refSide, respectively. The array refMain has 2*W+1 pixels, which are indexed as refMain[0] to refMain[2W], with refMain[0] corresponding to the top-left reference pixel. Similarly, the array refSide has 2*H+1 pixels, which are indexed as refSide[0] to refSide[2H], with refSide[0] again corresponding to the top-left reference pixel. For the special case of a square block with N pixels on each side, both reference arrays have 2N+1 pixels. Horizontal prediction modes (i.e., diagonal mode DIA_IDX or modes with indices less than mode 34) can be implemented by swapping the top and left reference arrays (also the height and width of the target block). This is possible thanks to the symmetry of the vertical (horizontal) modes with respect to the full vertical (horizontal) direction. Throughout this specification, for horizontal prediction mode, it is assumed that refMain and refSide denote the top and left reference arrays after being swapped. Furthermore, since PDPC only applies to some positive vertical and positive horizontal directions (except for PLANAR and DC modes, and the no-angle cases of full vertical and full horizontal modes), in this disclosure, we limit the discussion to only the positive prediction direction.

[0038] For any target pixel, the reference sample on refMain is called its predictor. For a given angular prediction mode, the predictor samples on refMain are replicated along the corresponding direction in the target PU. Some predictor samples may have integer locations, in which case they match the corresponding reference samples, while other predictor locations have fractional parts indicating that their locations are between two reference samples. In the latter case, the predictor samples are interpolated using a 4-tap cubic or 4-tap Gaussian filter for the luma component, and linearly interpolated for the chroma components.

[0039] Mode 2 corresponds to a prediction direction at an angle of 45 degrees from bottom left to top right, and mode 66 (also called mode VDIA_IDX) corresponds to the opposite direction. For both of these modes, all target pixels of the current block have predictors at integer positions on refMain. That is, each predicted sample always coincides with a unique reference sample thanks to the 45 degree angle. For each target pixel, the PDPC finds two reference pixels (one on each reference array) along the prediction direction and then combines their values ​​with the predicted value.

[0040] Figures 3A and 3B show notations related to angular intra prediction: Figure 3A shows the numbering of the modes and Figure 3B shows the corresponding intraPredAngle values.

[0041] Figure 4 shows a position-dependent intra-prediction combination for the bottom-left mode (mode 66). The top and left reference samples are located diagonally opposite to each other. Target pixels for which the left reference sample is unavailable are not treated in PDPC. It shows two reference pixels for mode 66. The same diagram can be obtained for mode 2, assuming that the top and left references are swapped, along with the height and width of the target block.

[0042] First, regarding mode 66, assume that the target pixel P has coordinates (x, y), where 0 ≤ x < W and 0 ≤ y < H. PDPC finds the reference pixels on refMain and refSide by extending the prediction direction. P top and P left are assumed to represent the values of the upper reference pixel and the left reference pixel corresponding to the target pixel P. In that case: P top = refMain[c + 1]; P left = refSide[c + 1]; where c = 1 + x + y. P pred If (x, y) represents a predicted value, the final predicted value at pixel P is P(x, y) = Clip(((64 - wT - wL) * P pred (x, y)+ wT * P top + wL * P left + 32) >> 6), (1) and is obtained as, where the weights wT and wL are calculated as follows: wT = 16 >> min(31, ((y << 1) >> scale)) wL = 16 >> min(31, ((x << 1) >> scale)) scale is scale = ((log2(W) - 2 + log2(H) - 2 + 2) >> 2) and is pre - calculated as such.

[0043] For a certain target pixel, if the second reference sample on refSide is located beyond its length, this pixel is considered unavailable. In this case, this target pixel does not undergo the above - mentioned changes, and the first predicted value of the pixel remains unchanged. Figure 3 shows the gray pixel at the lower - right of the target block that does not receive PDPC.

[0044] For mode 2, if the top and left reference arrays are swapped along with the height and width of the target block, the PDPC process is exactly the same as for mode 66.

[0045] FIG. 5A shows angular modes adjacent to mode 66, and FIG. 5B shows angular modes adjacent to mode 2. In practice, angular modes adjacent to mode 2 and mode 66 may also benefit from PDPC. Specifically, eight normal modes adjacent to mode 2 and mode 66, respectively, are considered for PDPC. In addition, all wide-angle modes are also considered for PDPC. Thus, for an example flat rectangular block with W=2*H as shown in FIG. 4, modes 58-65 and wide-angle modes 67-72 undergo PDPC. Similarly, for an example tall rectangular block with H=2*W as shown in FIG. 5, modes 3-10 and wide-angle modes -1--6 undergo PDPC. For a given target block, the number of applicable wide-angle modes is a function of its aspect ratio, i.e., the ratio of width to height. In some implementations, all valid wide-angle modes may be considered for PDPC, regardless of the shape of the target block. This corresponds to the situation shown in Figures 4 and 5 where the extreme angle modes 72 and -6, respectively, are valid because the required reference pixels are available. For rectangular blocks with W=2H or H=2W, the number of wide angle modes is 6.

[0046] Figure 6 shows an example of an angular mode of the PDPC where there is a mismatch between the projection of the direction and the reference pixel. In fact, in this example of mode 68, the left reference pixel does not coincide with an integer sample location, so the closest reference pixel needs to be selected. More precisely, the nearest neighbor of the intersection point is selected as the left reference pixel.

[0047] In VVC, the index of the reference pixel is calculated as follows: Δ x Let denote the horizontal displacement of the first reference sample from the target pixel location:

number

[0048] Table 1 shows an example mapping of mode indexes to the VVC angular parameter A for the vertical direction. The mapping for the horizontal direction can be inferred by swapping the vertical and horizontal indices.

[0049] [Table 1]

[0050] A similar process is applied to derive the left reference pixel. Let invAngle denote the inverse angle parameter corresponding to the prediction mode considered for PDPC. The invAngle value depends on the mode parameter and can be inferred from intraPredAngle. Table 2 shows an example mapping of an exemplary mode index to the inverse angle parameter of VVC for the vertical direction. The mapping for the horizontal direction can be inferred by swapping the vertical and horizontal indices.

[0051] [Table 2]

[0052] P left Let denote the value of the left reference pixel corresponding to the target pixel P with coordinates (x,y). left is obtained as follows: deltaPos = ((1+x)invAngle + 2) >> 2; deltaInt = deltaPos >> 6; deltaFrac = deltaPos & 63; deltay = 1 + y + deltaInt; P left = refSide[deltay + (deltaFrac >> 5)]

[0053] In the above, deltaPos is the distance P from the reference pixel refSide[1+y] in the resolution of (1 / 64). left deltaInt is the integer part of deltaPos in a resolution of 1, and deltaFrac is the remaining fractional part in a resolution of 1 / 64 (in other words, deltaPos = (deltaInt << 6) + deltaFrac). If deltaFrac is less than 32, P left is the smaller integer neighborhood refSide[deltay], and if deltaFrac is 32 or more, then P left is the larger integer neighborhood refSide[deltay+1].

[0054] P pred If (x,y) denotes the initial prediction, the final prediction at pixel P is P(x,y)=Clip(((64-wL) * P pred (x,y)+wL*P left +32)>>6) (2) where the weight wL is computed as wL=32>>min(31,((x<<1)>>scale)) and scale is pre-computed as scale = ((log2(W) - 2 + log2(H) - 2 + 2) >> 2).

[0055] For a target pixel, if the left reference sample on refSide is located beyond its length, the pixel is considered as unavailable. In this case, the target pixel is not subjected to the above modification, and the first predicted value of the pixel remains unchanged, that is, no PDPC post-processing is applied in this case.

[0056] For horizontal prediction modes near mode 2, subject to PDPC, the process is similar, with the top and left reference arrays swapped along with the height and width of the target block.

[0057] Note that wL is a non-negative decreasing function of x. n If wL=0, then x>x n From equation (2), we see that if wL=0, the left reference pixel has no effect on the weighted sum. In this case, there is no need for PDPC operation for the considered target pixel. Due to the above properties of wL, there is no need to apply PDPC to the remaining target pixels on the same row of the block. Therefore, the current PDPC tool terminates the PDPC operation on a row as soon as wL becomes 0.

[0058] FIG. 7 shows an example flowchart of the PDPC process for diagonal (mode 2 and mode 66) and adjacent diagonal modes according to an example implementation of VTM5.0. This flow graph does not include PDPC for PLANAR, DC, fully vertical, and fully horizontal intra prediction modes. VTM5.0 swaps reference arrays refMain and refSide when the mode is horizontal (i.e., when mode index < 34 (but not equal to 0 or 1)), so that refMain represents the left reference array and refSide represents the reference array above the current CU when mode index is equal to 2 or any of its adjacent modes. Thus, in these cases, the parameters wL, wT, P left , P top are actually parameters wT, wL, P top , P left, etc. This process includes multiple tests (steps 710, 730) and multiple multiplications required in each of the calculations (steps 743 and 753). In this process, first, if intraPredAngle is not greater than or equal to 12, then in the "no" branch of step 710, intra prediction is terminated and PDPC post-processing is not applied. If intraPredAngle is equal to 32, then in the "yes" branch of step 730, wT and wL are calculated in step 741, and P is calculated in step 742. top and P left is obtained, after which PDPC post-processing is applied in step 743. The process is repeated for the next pixel until all rows have been processed in step 744. If intraPredAngle is not equal to 32, then in the "no" branch of step 730, wL is calculated in step 751 and P is calculated in step 752. left is obtained, after which PDPC post-processing is applied in step 753. The process is repeated for the next pixel until all rows have been processed in step 754.

[0059] The embodiments described below are designed with the above in mind.

[0060] The encoder 100 of FIG. 1A, the decoder 200 of FIG. 1B, and the system 1000 of FIG. 2 are adapted to implement at least one of the following embodiments.

[0061] In at least one embodiment, the video coding or decoding includes a post-processing stage of position-dependent intra-prediction combination in which the computations are simplified to provide better computational efficiency while maintaining the same compression performance.

[0062] First simplification Referring to FIG. 3, the predicted value of any target pixel is equal to the reference pixel above that pixel. That is, P pred P top Equivalent to P top By substituting the values ​​of into equation (1), P(x,y)=Clip(((64-wT-wL) * P pred (x,y)+wT*P pred x,y)+wL*P left +32)>>6) is obtained.

[0063] term wT*P pred Eliminating (x,y), the above expression becomes: P(x,y)=Clip(((64-wL) * P pred (x,y)+wL*P left +32)>>6) (3) where wL = 16 >> min(31,((x << 1) >> scale));

[0064] This expression is identical to equation (2) except for the value of the weight wL. As will be seen, wT also depends on the term P top (Consequently, the term wT*P top This simplification allows the PDPC cases for modes 2 and 66 to be combined with the PDPC cases for other angular modes. In this case: wL = wLmax >> min(31,((x << 1) >> scale)); wLmax = 16 if predMode = 2 or predMode = 66; = 32, otherwise It is.

[0065] Since predMode is equal to 2 or 66 if and only if the angle parameter intraPredAngle is equal to 32, the above expression for wL becomes: wL = wLmax >> min(31,((x << 1) >> scale)); wLmax = 16 if intraPredAngle = 32; = 32, otherwise This can be rephrased as follows.

[0066] Note also that the position of the left reference sample for mode 2 or mode 66 does not change when the two cases are combined.

number

[0067] As can be seen, this is the same value as computed for modes 2 and 66, as before. The above integration therefore produces the same result as the conventional implementation, but requires fewer operations to be performed and is therefore based on a formula that is more efficient in terms of computational requirements.

[0068] In fact, the term deltaFrac does not actually serve any useful purpose. It was included because in early PDPC proposals, the position of the left reference sample was linearly interpolated based on the value of deltaFrac. In further proposals, the linear interpolation was replaced by nearest neighbor. However, this makes the computation of the deltaFrac term rather redundant, as shown in the next embodiment.

[0069] Second simplification As calculated above, the deltay term yields the smaller value of the pair of adjacent integers between which the left reference sample may occupy. The value of deltaFrac determines the mapping of the left reference pixel to refSide[deltay] or refSide[deltay+1] depending on whether deltaFrac<32 or deltaFrac≧32, respectively. This process affects the check of the availability of the left reference pixel. As mentioned before, PDPC does not apply to target pixels whose left reference pixel is located beyond the length of the left reference array. In this case, the left reference pixel is considered unavailable and the initial prediction value is not changed.

[0070] FIG. 8 shows an example of a PDPC for vertical diagonal mode 66 where the target pixel for the left reference sample is unavailable.

[0071] Recalling that the left reference array refSide has a length of 2H+1, with the first sample at index 0 (refSide[0]) and the last sample at index 2H (refSide[2H]), using PDPC, deltay is checked if deltay>(2*H-1) to determine if the left sample is unavailable. This formulation allows the left pixel to be interpolated (if deltaFrac is not null). For the interpolation, a pair of refSide[deltay] and refSide[deltay+1] is needed. Now, since nearest neighbor is used instead of interpolation, the tool chooses one pixel of the pair depending on the value of deltaFrac. However, for PDPC for modes 2 and 66, since the left reference sample is located at an integer location (refSide[c+1]=refSide[2+x+y]), the tool checks c≧2*H to determine if the left reference sample is unavailable. This introduces some ambiguity.

[0072] As mentioned before, deriving the left reference sample involves computing the distance deltaPos: deltaPos = ((1 + x)invAngle + 2) >> 2;

[0073] The terms on the right hand side are just recursive sums. Therefore, deltaPos can be computed as follows to eliminate the multiplication by x: invAngleSum[-1] = 2; For 0 <= x < W invAngleSum[x] = invAngleSum[x-1] + invAngle; deltaPos = invAngleSum[x] >> 2; deltaInt = deltaPos >> 6; deltaFrac = deltaPos & 63; deltay = 1 + y + deltaInt; P left = refSide[deltay + (deltaFrac >> 5)]

[0074] In at least one embodiment, we propose to modify the process as follows. invAngleSum[-1] = 128; For 0 <= x < W invAngleSum[x] = invAngleSum[x-1] + invAngle; deltay = 1 + y + (invAngleSum[x] >> 8), P left = refSide[deltay]

[0075] Notice that in the above simplification, we've combined the following three steps into one: deltaPos = invAngleSum[x] >> 2; deltaInt = deltaPos >> 6; deltay = 1 + y + deltaInt;

[0076] We initialized invAngleSum with 128 instead of 2 so that the bit shift operation (invAngleSum >> 8) yields the nearest integer by rounding. This avoids computing the parameter deltaFrac. As a result, to know if the left reference sample is unavailable, we only need to check if deltay>2*H. This is identical to the check when PDPC is applied to mode 2 or mode 66.

[0077] A secondary effect of this simplification is a better use of the last reference pixel of refSide, i.e. refSide[2H]. If the actual location of a reference sample lies between 2H and 2H+1 and is closer to refSide[2H], the process maps the location to 2H and P left Use pixel refSide[2H] as deltay. In a conventional PDPC implementation, this case may simply be skipped as deltay>2H, so that the initial predicted value of the current pixel remains unchanged. Except for this special case, the proposed simplification results in a predicted value of the target pixel that is identical to VTM5.0.

[0078] Therefore, equation (3) can be simplified with the observation that the weighted sum does not require clipping. P(x,y)=(((64-wL) * P pred (x,y)+wL*P left +32)>>6) for 0 ≦ x < W, 0 ≦ y < H;

[0079] This formula can be further simplified as follows: P(x,y)=(64*P pred (x,y)-wL*P pred (x,y)+wL*P pred +32)>>6) = P pred(x,y)+((wL*(P left - P pred (x,y))+32)≫6)

[0080] This simplification avoids the multiplication by (64-wL), which does not need to be a power of 2. As already understood, wL has only non-negative values. If wL>0, it is also a power of 2. Therefore, the only multiplication in the above formula can be done using bit shifts, as shown in formula (4).

[0081] In at least one embodiment, the video coding or decoding includes a post-processing stage using PDPC, whose prediction operation uses the following equation (4): P(x,y) = P pred (x,y)+((((P left -P pred (x,y))≪ log2(wL))+32)≫6) (4)

[0082] Those skilled in the art will recognize that the above simplification suggestions correspond to the VTM5.0 code with the iterative loop and initialization of invAngleSum outside the loop to avoid multiplications. The same can be equivalently written as: for 0 <= x < W deltay=1+y+(((1+x)*invAngle+128)>>8) P left =refSide[deltay]

[0083] Note that the refSide reference array has its 0th coordinate at the top left pixel, i.e., at the coordinate (-1,-1) of the reconstructed sample. Otherwise, if it is initialized at coordinate (-1,0), the above formula is modified as follows: for 0 <= x < W deltay=y+(((1+x)*invAngle+128)>>8) P left =refSide[deltay]

[0084] Therefore, with the above coordinate adjustments, the proposed PDPC simplification for the vertical mode 66 and its adjacent modes is: for 0 <= x < W deltay=y+(((1+x)*invAngle+128)>>8) P left =refSide[deltay] P(x,y)=P pred (x,y)+((wL*(P left -P pred (x,y))+32)>>6) wL=wLmax>>min(31,((x<<1)>>scale)) wLmax=16 if mode=66,else wLmax=32

[0085] Similarly, for horizontal prediction mode 2 and adjacent modes of mode 2, the proposed PDPC changes are as follows: for 0 <= y < H deltax=x+(((1+y)*invAngle+128)>>8) P top =refMain[deltax] P(x,y)=P pred (x,y)+((wT*(P top -P pred (x,y))+32)>>6) wT=wTmax>>min(31,((y<<1)>>scale)) wTmax=16 if mode=2,else wTmax=32 where refMain represents the reference array above the target block, and P top Denote the reference pixel on the reference array obtained by intersection with the extension of the prediction direction.

[0086] Figure 9 shows an example flow chart according to a first embodiment of a modified PDPC process following an implementation example based on VTM5.0. In this modified process, video coding or decoding includes a post-processing stage using PDPC in an angular mode, where two different prediction operations are merged and at least one pixel of a block of a picture is reconstructed according to its predicted value and the reference value of a neighboring block weighted according to the angular direction, as shown in and described above as a first simplification. As seen in the right branch of Figure 7, refSide represents the reference array above the current CU when the prediction mode is horizontal. Thus, when the mode index is equal to 2 or any of its neighboring modes, the parameters wL, wLMax, P left are actually parameters wT, wTMax, P top etc. respectively.

[0087] In this embodiment, if the angle parameter intraPredAngle is greater than 12 (thus corresponding to a mode index of 58 or greater or 10 or less, as shown in Table 1 and FIGS. 3A and 3B ), then in the “yes” branch of step 910, for the pixel, the weighting value wL is calculated in step 951; in step 952, the left reference pixel is obtained by extending the prediction direction to the left reference array; and in step 953, the weighting value wL is calculated by using equation (3): P(x,y)=Clip(((64-wL) * P pred (x,y)+wL*P left +32)>>6) Calculating post-processing values ​​of the predicted pixels according to (3).

[0088] That is, the predicted pixel is modified based on its prediction value and a weighting between a reference pixel selected from the column to the left of the block based on the angle of the angular prediction mode.

[0089] It should be noted that the test performed in step 201 could be performed on the mode index value instead of the intraPredAngle value, but in that case more than one comparison would be required to check if the predicted angle is within a value range (the range could correspond to a set of vertical modes or a set of horizontal modes). In this embodiment, intraPredAngle is tested for a fixed value of 12, which corresponds to mode indexes of 10 and 58, but other values ​​of comparison may be used and comply with the principles of this first embodiment. For example, in another embodiment, intraPredAngle is tested for a fixed value of 0, which corresponds to mode indexes of 18 and 50. In another embodiment, intraPredAngle is tested for fixed values ​​in the ranges 0 to 12, which correspond to mode indexes of 10 to 18 and 50 to 58.

[0090] Figure 10 shows an example flow chart according to a second embodiment of a modified PDPC process following an implementation example based on VTM5.0. In this second embodiment, the video coding or decoding includes a post-processing stage using PDPC in an angular mode, where two different prediction operations are merged and at least one pixel of a block of a picture is reconstructed according to its predicted value and a reference value of a neighboring block weighted according to the angular direction, as shown in Figure 9 and as explained above as a second simplification. As seen in Figure 9, refSide represents the reference array above the current CU when the prediction mode is horizontal. Thus, when the mode index is equal to 2 or any of its neighboring modes, the parameters wL, wLMax, P left are actually parameters wT, wTMax, P top etc. respectively.

[0091] In this embodiment, the post-processing includes, for a pixel, if the angle parameter intraPredAngle is greater than a predetermined value (e.g., 12), calculating a weighting value wL in step 1003, obtaining a left reference pixel by extending the prediction direction to the left reference array in step 1004, and calculating the weighting value wL in step 1005 by using equation (4): P(x,y) = P pred (x,y)+((((P left -P pred (x,y))≪ log2(wL))+32)≫6) (4) and computing a post-processed value of the predicted pixel according to:

[0092] That is, the predicted pixel is modified based on a weighting between its prediction value and a reference pixel selected from the column to the left of the block containing said pixel based on the angle of the angular prediction mode.

[0093] While a conventional PDPC uses multiple checks and several multiplications, the second embodiment uses only one check, as well as shift, add, and subtract operations that are much more efficient than multiplication operations in terms of computational requirements.

[0094] In this embodiment, the intraPredAngle is tested against a fixed value of 12, but other values ​​for comparison may be used and still adhere to the principles of this first embodiment.

[0095] Third embodiment The third embodiment is based on the first or second embodiment, where, regardless of the value of intraPredAngle, for a target pixel at (x,y), the left reference sample is always refSide[c+1], where c=1+x+y.

[0096] Fourth embodiment A fourth embodiment is based on one of the above embodiments, where the position of the left reference sample is located beyond the length of refSide, and instead of ending the PDPC at the current target pixel on the row, the last reference sample refSide[2H] is used.

[0097] Fifth embodiment The fifth embodiment is based on one of the above embodiments, where in addition to the four fixed modes of PLANAR (mode 0), DC (mode 1), fully vertical (mode 50), and fully horizontal (mode 18), the eligible modes of the PDPC include all positive vertical and horizontal directions.

[0098] Sixth embodiment The sixth embodiment is based on one of the above embodiments, where any non-negative and decreasing function is used to derive the weight wL. As an example, the weight can be derived based on the prediction direction as follows: wL = wLmax >> ((x << 1) >> scale); wLmax = 16*((intraPredAngle+32)≫5)

[0099] Seventh embodiment The seventh embodiment is based on one of the above embodiments, where the RD performance with and without PDPC for eligible modes is checked. The use of PDPC is signaled to the decoder as a 1-bit PDPC flag at the CU level. The flag can be context coded, where the context can be a fixed value, or can be inferred from the neighborhood, prediction direction, etc.

[0100] Eighth embodiment The eighth embodiment is based on one of the above embodiments, where PDPC is performed on all CUs in a slice, and the application of such PDPC is signaled to the decoder using a one-bit flag in the slice header.

[0101] Ninth embodiment A ninth embodiment is based on one of the above embodiments, where PDPC is performed for all CUs in a slice, and the application of such PDPC is signaled to the decoder using a one-bit flag in the picture parameter set (PPS) header.

[0102] Tenth embodiment A tenth embodiment is based on one of the above embodiments, where PDPC is performed on any frame of a sequence, and the application of such PDPC is signaled to the decoder using a one-bit flag in the sequence parameter set (SPS) header.

[0103] result Experiments were performed using the VTM5.0 codec in an All-INTRA (AI) configuration with all required test conditions.

[0104] FIG. 11 shows the results of the implementation of the first embodiment, and FIG. 12 shows the results of the implementation of the second embodiment. These figures show the BD-rate performance of the proposed simplification compared to that of the VTM5.0 anchor. In these tables, the lines represent different classes of content that are encoded or decoded corresponding to samples of the original video content. The first column lists these classes. Columns 2, 3 and 4, labeled Y, U and V respectively, show the difference in size between the VTM5.0 codec and the proposed embodiment for the Y, U and V components of the original video, respectively. These columns therefore show the difference in compression efficiency compared to VTM5.0. Columns 5 and 6, labeled EncT and DecT respectively, show the difference in encoding and decoding times with respect to the encoding and decoding times of VTM5.0, respectively. A comparison of the times required for encoding and decoding represents the compression efficiency of the proposed embodiment compared to the VTM5.0 implementation. FIG. 11 shows the overall improvement in terms of encoding and decoding times. FIG. 12 shows the overall improvement in terms of encoding and decoding time, as well as encoding size.

[0105] FIG. 13 shows an example of a flowchart according to various embodiments described in the present disclosure. This flowchart is activated when PDPC post-processing may be performed and is iterated over the samples of a block of samples. First, in step 1301, information representing a prediction angle is tested to determine whether it matches a criterion. This angle corresponds to the angle used to perform intra prediction and thus generate the current sample. This test can be performed based on the angle value, for the intra prediction mode, for the value of the intraPredAngle parameter, or for any value representing a prediction angle. If the angle is incorrect, in branch 1302, no PDPC post-processing is performed and the predicted sample is not modified.

[0106] In at least one embodiment, the angle is considered correct when the intraPredAngle parameter is equal to or greater than 12. In one variant, the angle is considered correct when the intra prediction mode is within the range of -6 to 10, or 58 to 72. Those skilled in the art will recognize that these two different matching criteria correspond to the same angle range for angular intra prediction.

[0107] If the angle is considered to be correct, a weighting is calculated in step 1303. This weighting makes it possible to balance the amount of correction, and therefore the value of the resulting sample, between the predicted value of the sample and the reference sample.

[0108] In step 1305, a reference sample is obtained. In at least one embodiment, the reference sample is obtained from a left reference array that contains the values ​​of samples in the column to the left of the block by extending the angular intra-prediction direction to the column to the left of the block, and selecting the sample from the left reference array that is closest to the intersection of the angular intra-prediction direction and the column to the left of the block. An index into this array can be calculated in a simple manner as previously described under the name deltay.

[0109] In step 1307, the sample value is determined according to the obtained and calculated parameters. The above equations 3 and 4 provide different formulas for calculating the sample value. These equations, especially equation 4, have the advantage that at least less calculations are required than in the prior art. One reason for this is that the reference sample from the upper reference array is not taken into account, since it has already been taken into account to determine the predicted value of the sample. At least another reason is that the fractional part is no longer taken into account, thus allowing further simplification of the calculations. Another reason is that one more angle test is truncated. The determination of the sample value by step 1307 can also be understood as a correction, modification, or post-processing of the previously predicted sample.

[0110] The operations of step 1301 may be performed once per block. However, the operations of steps 1303-1307 of Fig. 13 need to be performed for each sample of the block, since the parameters involved depend on the position and / or value of the sample. Once all samples of a block have been processed, the block may then be processed, e.g., encoded.

[0111] This application describes various aspects, including tools, features, embodiments, models, methods, and the like. Many of these aspects have been described with technicality and in a manner that may be interpreted as limiting, at least to indicate their individual characteristics. However, this is for ease of explanation and does not limit the applicability or scope of the aspects. Indeed, all of the different aspects can be combined and interchanged to provide further aspects. Furthermore, aspects can be combined and interchanged with aspects described in prior applications as well.

[0112] The aspects described and contemplated in this application can be implemented in many different forms. While Figures 1A, 1B, and 2 provide some embodiments, other embodiments are contemplated, and the description of these figures is not intended to limit the breadth of implementations. At least one of the aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmission of generated or encoded bitstreams. These and other aspects can be implemented as a method, an apparatus, a computer-readable storage medium having stored thereon instructions for encoding or decoding video data according to any of the described methods, and / or a computer-readable storage medium having stored thereon a bitstream generated according to any of the described methods.

[0113] Various methods are described herein, each of which has one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be varied or combined.

[0114] Various methods and other aspects described in the present application may be used to modify modules, such as, for example, the motion compensation and motion estimation modules (170, 175, 275) of the video encoder 100 and decoder 200 as shown in Figures 1A and 1B. Moreover, the aspects are not limited to VVC or HEVC, but may be applied to, for example, other standards and recommendations, whether existing or developed in the future, and extensions of any such standards and recommendations (including VVC and HEVC). Unless otherwise indicated or technically precluded, the aspects described in the present application may be used individually or in combination.

[0115] Various numerical values ​​are used in this application. The specific values ​​are for illustrative purposes and the described aspects are not limited to these specific values.

[0116] Various implementations involve decoding. As used herein, "decoding" may encompass all or a portion of the processes performed on a received encoded sequence to generate a final output suitable for, for example, display. In various embodiments, such processes include one or more of the processes typically performed by a decoder. Additionally or alternatively, in various embodiments, such processes include processes performed by the decoders of the various implementations described herein.

[0117] As a further example, in one embodiment, "decoding" refers to only entropy decoding, while in another embodiment, "decoding" refers to only differential decoding, while in another embodiment, "decoding" refers to a combination of entropy and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or generally to the broader decoding process will be clear based on the context of the particular description and is believed to be well understood by one of ordinary skill in the art.

[0118] Various implementations involve encoding. Similar to the above description of "decoding," "encoding" as used herein may encompass all or a portion of the processes performed on an input video sequence to generate, for example, an encoded bitstream. In various embodiments, such processes include one or more of the processes typically performed by an encoder. Additionally or alternatively, in various embodiments, such processes include processes performed by an encoder in the various implementations described herein.

[0119] As a further example, in one embodiment, "encoding" refers to only entropy encoding, in another embodiment, "encoding" refers to only differential encoding, and in another embodiment, "encoding" refers to a combination of differential and entropy encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or to the broader encoding process generally will be clear based on the context of the particular description and is believed to be well understood by one of ordinary skill in the art.

[0120] It should be noted that the syntax elements used in this specification are descriptive terms, and therefore they do not exclude the use of other syntax element names.

[0121] When a figure is presented as a flow diagram, it should be understood that this also provides a block diagram of the corresponding apparatus, and similarly, when a figure is presented as a block diagram, it should be understood that this also provides a flow diagram of the corresponding method / process.

[0122] Various embodiments refer to rate-distortion optimization. In particular, in the encoding process, a balance or trade-off between rate and distortion is usually considered, often subject to a computational complexity constraint. Rate-distortion optimization is usually formulated as minimizing the rate-distortion function, which is a weighted sum of rate and distortion. There are different approaches to solving the rate-distortion optimization problem. For example, the approach may be based on a collective test of all encoding options including all considered modes or coding parameter values, with a full evaluation of their coding costs and associated distortions of the reconstructed signal after coding and decoding. Also, relatively fast approaches can be used to reduce the coding complexity, especially with the computation of approximate distortions based on a prediction or prediction residual signal, rather than a reconstructed one. Also, a mixture of these two approaches can be used, for example, by using approximate distortions for only some of the possible encoding options or full distortions for the other encoding options. Other approaches evaluate only a subset of the possible encoding options. More generally, many schemes utilize any of a variety of techniques to perform optimization, but the optimization is not necessarily a complete assessment of both the coding cost and the distortion involved.

[0123] This application describes various aspects, including tools, features, embodiments, models, methods, and the like. Many of these aspects have been described with technicality and in a manner that may be interpreted as limiting, at least to indicate their individual characteristics. However, this is for ease of explanation and does not limit the applicability or scope of the aspects. Indeed, all of the different aspects can be combined and interchanged to provide further aspects. Furthermore, aspects can be combined and interchanged with aspects described in prior applications as well.

[0124] The implementations and aspects described herein may be implemented, for example, in a method or process, an apparatus, a software program, a data stream, or a signal. Even if only described in the context of a single form of implementation (e.g., described only as a method), the implementation of the described features may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented, for example, in appropriate hardware, software, and firmware. For example, a method may be implemented in a processor, which generally refers to a processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, tablets, smartphones, cell phones, portable / personal digital assistants, and other devices that facilitate communication of information between end users.

[0125] Reference to "one embodiment" or "an embodiment" or "one implementation" or "an implementation," as well as other variations thereof, means that a particular feature, structure, characteristic, etc. described in connection with an embodiment is included in at least one embodiment. Thus, the appearances of the phrases "in one embodiment" or "in one embodiment" or "in one implementation" or "in one implementation" in various places throughout this application, as well as any other variations thereof, are not necessarily all referring to the same embodiment.

[0126] Additionally, the application may refer to "determining" various pieces of information. Determining the information may include, for example, one or more of estimating the information, calculating the information, predicting the information, or retrieving the information from a memory.

[0127] Additionally, the application may refer to "accessing" various pieces of information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or inferring information.

[0128] In addition, the application may refer to "receiving" various pieces of information. Receiving is intended to be a broad term, similar to "accessing." Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Moreover, "receiving" typically involves, in one manner or another, an action such as, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.

[0129] In this application, the terms "reconstructed" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image," "picture," "frame," "slice," and "tile" may be used interchangeably. Typically, but not necessarily, the term "reconstructed" is used on the encoder side and "decoded" is used on the decoder side.

[0130] For example, it should be understood that the use of any of " / ", "and / or", and "at least one of" in the cases of "A / B", "A and / or B", and "at least one of A and B" is intended to encompass the selection of only the first enumerated alternative (A), or the selection of only the second enumerated alternative (B), or the selection of both alternatives (A and B). As a further example, in the cases of "A, B, and / or C" and "at least one of A, B, and C", such phrases are intended to encompass the selection of only the first enumerated alternative (A), or the selection of only the second enumerated alternative (B), or the selection of only the third enumerated alternative (C), or the selection of only the first and second enumerated alternatives (A and B), or the selection of only the first and third enumerated alternatives (A and C), or the selection of only the second and third enumerated alternatives (B and C), or the selection of all three alternatives (A and B and C). This can be extended for as many items as are listed, as will be apparent to those of ordinary skill in this and related arts.

[0131] Also, as used herein, the term "signal" means, among other things, to inform a corresponding decoder of something. For example, in a particular embodiment, an encoder signals a particular one of the illumination correction parameters. As a result, in one embodiment, the same parameters are used at both the encoder and decoder sides. Thus, for example, the encoder can transmit the particular parameters to the decoder so that the decoder can use the same particular parameters (explicit signaling). Conversely, if the decoder already has the particular parameters as well as others, signaling can be used without transmission to simply allow the decoder to know and select the particular parameters (implicit signaling). By avoiding transmission of any actual function, bit savings are realized in various embodiments. It should be understood that signaling can be realized in various ways. For example, one or more syntax elements, flags, etc. are used in various embodiments to signal information to a corresponding decoder. While the above relates to the verb form of the term "signal", the term "signal" can also be used herein as a noun.

[0132] As will be apparent to one skilled in the art, implementations can generate a variety of signals formatted to carry information that can be, for example, stored or transmitted. Information can include, for example, instructions for performing a method or data generated by one of the described implementations. For example, a signal can be formatted to carry a bit stream of the described embodiments. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using a high frequency portion of the spectrum) or as a baseband signal. Formatting can include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information the signal is carrying can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.

[0133] In a first variation of the first aspect, the intra-prediction angle is considered to match the angle criterion when it is less than or equal to a first value or greater than or equal to a second value, the first value being less than the second value. In one variation of the first variation, the first value is 10 and the second value is 58.

[0134] In a second variant of the first aspect, the intraPredAngle value representing the intra prediction angle is deemed to match the angle criterion when it is equal to or greater than a certain value. In one variant of the first variant, the intraPredAngle value representing the intra prediction angle is deemed to match the angle criterion when it is equal to or greater than 12.

[0135] In a further variation of the first aspect, for the vertical angular direction, the left reference sample is determined from a left reference array that includes values ​​of samples in a column to the left of the block, where the left reference sample is determined by extending the vertical angular intra-prediction direction to the column to the left of the block and selecting a sample from the left reference array that is closest to an intersection of the vertical angular intra-prediction direction with the column to the left of the block, and for the horizontal angular direction, the top reference sample is determined from a top reference array that includes values ​​of samples in a row above the block, where the top reference sample is determined by extending the horizontal angular intra-prediction direction to the row above the block and selecting a sample from the top reference array that is closest to an intersection of the horizontal angular intra-prediction direction with the row above the block.

[0136] In a further variation of the first embodiment, the sample values ​​P(x,y) are such that for the vertical direction, P(x,y) = P pred (x,y) + ((((P left - P pred (x,y)) << log2(wL)) + 32) >> 6), and for the horizontal direction, P(x,y) = P pred (x,y) + ((((P top - P pred (x,y)) << log2(wT)) + 32) >> 6), where P pred (x,y) is the obtained predicted value of the sample, P left Or P top is the value of the left or top reference sample, and wL or wT is a weighting.

[0137] In a further variant of the first embodiment, the value P of the left reference sample with respect to the vertical angular direction is left , P left = refSide[deltay], where refSide is the array of values ​​of the samples in the column to the left of the block, and deltay = y + (((1+x) * invAngle + 128) >> 8), and the value of the top reference sample P top , P top= refMain[deltax], where refMain is the array of values ​​of the samples in the row above the block, and deltax = x + (((1+y) * invAngle + 128) >> 8), where invAngle is the inverse of the angle parameter corresponding to the prediction angle.

[0138] In a further variation of the first aspect, the weights are determined according to wL = wLmax >> min(31, ((x << 1) >> scale)), where wLmax = 16 when intraPredAngle is equal to 32, or wLmax = 32 otherwise, and wT = wTmax >> min(31, ((y << 1) >> scale)), where wTmax = 16 when intraPredAngle is equal to 32, or wTmax = 32 otherwise, and scale is equal to ((log2(W) -2 + log2(H) -2 + 2) >> 2).

Claims

1. 1. A method for determining sample values ​​for a block of an image, comprising the steps of: obtaining predicted values ​​of the samples, the values ​​being intra predicted according to a value representing an intra prediction angle; If the intra prediction angle matches a reference (1301), determining (1307) the value of the sample based on a weighting (1303) between a value of a left reference sample for a vertical angle mode or a top reference sample for a horizontal angle mode and the obtained predicted value of the sample, the left reference sample or the top reference sample being determined based on the intra prediction angle (1305); A method comprising:

2. The method of claim 1 , wherein the intraPredAngle value representing the intra prediction angle is considered to match the angle criterion if it is greater than or equal to a value to be matched.

3. The method of claim 2 , wherein the value to match is 12.

4. The method of claim 2 , wherein the value to match is zero.

5. the angle criterion is considered to be matched if the mode value representing the intra-prediction angle is less than or equal to a first mode value for a horizontal angle mode or greater than or equal to a second mode value for a vertical angle mode, the first value being less than the second value, and the mode value is different from 0 or 1; The method of claim 1 , wherein a mode value of 34 or greater indicates a vertical mode and a mode value of less than 34 indicates a horizontal mode.

6. The method of claim 5 , wherein the first value is 10 and the second value is 58.

7. The method of claim 6 , wherein the first value is 18 and the second value is 50.

8. For a vertical angular direction, the left reference sample is determined from a left reference array that includes values ​​of the samples in a column to the left of the block, and the left reference sample is determined by extending the vertical angular intra-prediction direction to the column to the left of the block and selecting from the left reference array the sample that is closest to an intersection of the vertical angular intra-prediction direction and the column to the left of the block; 8. The method of claim 1, wherein for a horizontal angle direction, the top reference sample is determined from an above reference array containing values ​​of the samples of a row above the block, and the top reference sample is determined by extending the horizontal angle intra-prediction direction to the row above the block and selecting from the above reference array the sample that is closest to an intersection of the horizontal angle intra-prediction direction and the row above the block.

9. The value P(x,y) of the sample is In terms of the vertical direction, P(x,y) = P pred (x,y) + ((((P left - P pred (x,y)) << log2(wL)) + 32) >> 6), and In the horizontal direction, P(x,y) = P pred (x,y) + ((((P top - P pred (x,y)) << log2(wT)) + 32) >> 6), In the formula, P pred (x, y) is the obtained prediction value of the sample, and P left Or P top The method according to any one of claims 1 to 8, wherein wL or wT is the value of the left or top reference sample and wL or wT is the weighting.

10. In the vertical direction, the value P of the left reference sample left but, P left = refSide[deltay], where refSide is the array of values ​​of samples in the column to the left of the block, and deltay = y + (((1+x) * invAngle + 128) >> 8), In the horizontal direction, the value P of the upper reference sample top but, P top = refMain[deltax], where refMain is the array of values ​​of samples in the row above the block, and deltax = x + (((1+y) * invAngle + 128) >> 8), The method according to any one of claims 1 to 9, wherein invAngle is the inverse of the angle parameter corresponding to the predicted angle.

11. The weighting is determined according to: For the vertical direction, wL = wLmax >> min(31, ((x << 1) >> scale)), where wLmax = 16 if intraPredAngle is equal to 32, or wLmax = 32 otherwise; For the horizontal direction, wT = wTmax >> min(31, ((y << 1) >> scale)), where wTmax = 16 if intraPredAngle is equal to 32, or wTmax = 32 otherwise; 11. The method of claim 1, wherein and scale is equal to ((log2(W) - 2 + log2(H) -2 + 2) >> 2).

12. 1. A method for coding block video, comprising the steps of: For each sample of the block of video, performing intra prediction of said samples; Modifying the values ​​of the samples according to a method according to any one of claims 1 to 11; encoding said block; A method comprising:

13. 1. A method for decoding a block video, comprising the steps of: For each sample of the block of video, performing intra prediction of said samples; Modifying the values ​​of the samples according to a method according to any one of claims 1 to 11; A method comprising:

14. An apparatus (1000) comprising an encoder (1030) for encoding picture data, the encoder performing, for a block of video: For each sample of the block of video, performing intra prediction of said samples; Modifying the values ​​of the samples according to a method according to any one of claims 1 to 11; encoding said block; The apparatus is configured to:

15. An apparatus (1000) including a decoder (1030) for decoding picture data, the decoder performing, for a block of video: For each sample of the block of video, performing intra prediction of said samples; Modifying the values ​​of the samples according to a method according to any one of claims 1 to 11; The apparatus is configured to:

16. A non-transitory computer readable medium comprising program code instructions for implementing the steps of the method according to at least one of claims 1 to 13 when executed by a processor.

17. A computer program comprising program code instructions for implementing the steps of the method according to at least one of claims 1 to 13, when the computer program is executed by a processor.

Citation Information

Patent Citations

  • Position dependent intra prediction combination extended with angular modes

    WO2019195283A1

  • Wide angle intra prediction and position dependent intra prediction combination

    WO2020018207A1

  • Unified position dependent prediction combination process

    WO2020251791A1