Method and device for picture encoding and decoding using position-dependent intra-prediction combination
The introduction of a post-processing stage for position-dependent intra-prediction combination in video coding systems addresses blocking artifacts, improving computational efficiency and maintaining compression performance by smoothing discontinuities at block boundaries.
Patent Information
- Application Number
- JP2024189712
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-06-20
- Filing Date
- 2024-10-29
- Publication Date
- 2025-11-28
- Estimated Expiration
- 2040-06-15
AI Technical Summary
Existing video coding systems face challenges in efficiently addressing blocking artifacts at block boundaries due to significant differences in predicted values, particularly in high-quality video encoding, which can lead to reduced compression efficiency and increased computational complexity.
Implement a post-processing stage of position-dependent intra-prediction combination (PDPC) that modifies predicted sample values based on a weighting between left and above reference samples, determined by the intra-prediction angle, to smooth discontinuities at block boundaries.
Improves computational efficiency and maintains compression performance by reducing blocking artifacts while simplifying computational operations, thus enhancing video encoding and decoding processes.
Smart Images

Figure 0007777652000005 
Figure 0007777652000006 
Figure 0007777652000007
Abstract
Description
[Technical Field]
[0001] Technical Field At least one of the present embodiments relates generally to video coding systems, and more particularly to post-processing stages of position dependent intra prediction combination. [Background technology]
[0002] Background technology To achieve high compression efficiency, image and video coding schemes typically use prediction and transform to exploit spatial and temporal redundancy in video content. Typically, intra- or inter-prediction is used to exploit intra- or inter-frame correlation, and then the difference between the original and predicted image block, often referred to as the prediction error or prediction residual, is transformed, quantized, and entropy coded. During encoding, the original image block is typically partitioned / split into sub-blocks, possibly using, for example, quad-tree partitioning. To reconstruct the video, the compressed data is decoded by the inverse process corresponding to prediction, transform, 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 reference sample or an above reference sample and a weighting between the obtained predicted values for the sample, and the left reference sample or the above reference sample is 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, includes 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, wherein 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 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 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 device 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 device includes a decoder configured to, for each sample of a block of 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 embodiments also provide a computer program product including instructions for performing at least a portion of any one of the above methods. [Brief explanation 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; [Figure 2] 1 illustrates a block diagram of an example system in which various aspects and embodiments may be implemented. [Figure 3A] 1 shows notations related to angular intra prediction. [Figure 3B] 1 shows notations related to angular intra prediction. [Figure 4] 10 shows a position-dependent intra-prediction combination for the bottom-left mode (mode 66). [Figure 5A] An angular mode adjacent to mode 66 is shown. [Figure 5B] An angular mode adjacent to mode 2 is shown. [Figure 6] 10 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] 10 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] An example of a PDPC for vertical diagonal mode 66 is shown where the target pixel for the left reference sample is unavailable. [Figure 9] 1 shows an example flowchart according to a first embodiment of a modified PDPC process. [Figure 10] 10 shows an example flowchart according to a second embodiment of a modified PDPC process. [Figure 11] 1 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 flowchart in accordance with various embodiments described in this disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0011] Detailed Description Various embodiments relate to a method for post-processing predicted values of samples of a block of an image, in which the values are predicted according to an intra-prediction angle and modified after the 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.
[0012] Additionally, although the present aspects describe principles related to particular drafts of the VVC (Versatile Video Coding) or HEVC (High Efficiency Video Coding) specifications, they 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 indicated otherwise 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 envisioned, but for the sake of clarity, this encoder 100 will be described below without describing all possible variations. Before being encoded, a video sequence may undergo a pre-encoding process (101), such as applying a color transformation to an input color picture (e.g., from RGB 4:4:4 to YCbCr 4:2:0) or performing a remapping of the input picture components to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color 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, with a prediction mode flag. For example, a prediction residual is calculated 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 also 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. Quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. Image blocks are reconstructed by combining (155) the decoded prediction residual and the predicted block. For example, an in-loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / Sample Adaptive Offset (SAO) and adaptive loop filter (ALF) filtering 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, a bitstream is decoded by decoder elements, as described below. The video decoder 200 typically performs a decoding pass, which is the inverse of the encoding pass, as described in FIG. 18. The encoder 100 also typically performs video decoding as part of encoding video data. Specifically, the decoder's input 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. Picture partition information indicates how the picture is partitioned. Thus, the decoder divides the picture according to the decoded picture partitioning information (235). To decode the prediction residual, the transform coefficients are dequantized (240) and inverse transformed (250). Image blocks are reconstructed by combining (255) the decoded prediction residual and the predicted block. The predicted block (270) can be obtained 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 an inverse color transform (e.g., 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 system in which various aspects and embodiments can be implemented. System 1000 can 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. Elements of system 1000, singly or in combination, can be implemented on a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed across multiple ICs and / or discrete 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., a volatile memory device and / or a non-volatile memory device). 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 example, internal storage devices, attached storage devices (including removable and non-removable storage devices), and / or network-accessible storage devices.
[0021] System 1000 includes an encoder / decoder module 1030 configured to process data to provide, for example, encoded or decoded video, and the encoder / decoder 1030 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 encoding and decoding modules. Additionally, the encoder / decoder module 1030 may be implemented as a separate element of 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 internal to 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 may be the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory may be, for example, memory 1020 and / or 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 television's operating system. In at least one embodiment, 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 various input devices, shown in block 1130. Such input devices include, without limitation, (i) a radio frequency (RF) section that receives, for example, an RF signal transmitted wirelessly by a broadcaster, (ii) a component (COMP) input terminal (or 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 that performs various of these functions, including down-converting a received signal to a relatively lower frequency (e.g., an intermediate frequency or a frequency near 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, downconverting, 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] Additionally, the USB and / or HDMI terminals may include respective interface processors for connecting system 1000 to other electronic devices across the USB and / or HDMI connections. For example, 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 within processor 1010, as desired. Similarly, aspects of USB or HDMI interface processing may also be implemented in a separate interface IC or within processor 1010, as desired. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including processor 1010 and encoder / decoder 1030, operating in combination with memory and storage elements, to process the data stream as desired for presentation on an output device.
[0027] The various elements of system 1000 may be provided within an integrated housing in which the various elements may be interconnected and data may be transmitted therebetween using a suitable connection arrangement 1140, such as an internal bus known in the art, including, for example, an Inter-IC (I2C) bus, wiring, and printed circuit boards.
[0028] System 1000 includes a communication interface 1050 that enables communication with other devices over a communication channel 1060. Communication interface 1050 may include, without limitation, a transceiver configured to transmit and receive data over communication channel 1060. Communication interface 1050 may include, without limitation, a modem or a network card, and communication channel 1060 may be implemented, for example, within a wired and / or wireless medium.
[0029] In various embodiments, data is streamed or otherwise provided to system 1000 using a wireless network, such as a Wi-Fi network, e.g., an IEEE 802.11 (IEEE stands for Institute of Electrical and Electronics Engineers) network. In these embodiments, the Wi-Fi signal is received over communication channel 1060 and communication interface 1050, which are adapted for Wi-Fi communication. In these embodiments, communication channel 1060 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 system 1000 by using a set-top box that provides data over the HDMI connection of input block 1130. Still other embodiments provide streamed data to system 1000 by using the RF connection of input block 1130. As noted above, various embodiments provide data in a non-streaming manner. In addition, various embodiments use wireless networks other than Wi-Fi, such as, for example, a cellular network or a Bluetooth network.
[0030] System 1000 can provide output signals to various output devices, including a display 1100, speakers 1110, and other peripherals 1120. Display 1100 in various embodiments includes, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. Display 1100 may be for a television, a tablet, a laptop, a cell phone, or other device. 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). Other peripherals 1120, in various example embodiments, include one or more of a standalone digital video disc (or digital versatile disc) (DVR, for both terms), 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 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 system 1000 and display 1100, speakers 1110, or other peripheral devices 1120 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable inter-device control with or without user intervention. Output devices can be communicatively coupled to system 1000 via dedicated connections through individual interfaces 1070, 1080, and 1090. Alternatively, output devices can be connected to system 1000 using communication channel 1060 via communication interface 1050. Display 1100 and speakers 1110 can be integrated with other components of system 1000 in a single unit, for example, in an electronic device such as a television. In various embodiments, display interface 1070 includes a display driver, for example, a timing controller (T Con) chip.
[0032] Display 1100 and speakers 1110 may alternatively be separate from one or more of the other components, for example, if the RF portion of input 1130 is part of a separate set-top box. In various embodiments in which 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, by way of non-limiting examples, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 1010 may be of any type suitable for the technical environment and may include, by way of 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 to all intra frames and intra blocks of inter frames. A target block, called a coding unit (CU), is spatially predicted from causal neighboring blocks in the same frame: the blocks above and to the right, the blocks to the left and to the left, and the block at the top left. Based on the decoded pixel values of these blocks, the encoder constructs different predictions of the target block and selects the one that yields 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 angular modes. The angular modes may include only normal angular prediction modes, modes 2 to 66, or may also include wide-angle modes, defined beyond the normal angular range of 45 degrees to -135 degrees for rectangular blocks.
[0035] Depending on the prediction mode, the predicted samples may further undergo post-processing stages such as position-dependent intra-prediction combination (PDPC). PDPC aims to smooth discontinuities at block boundaries for a particular prediction mode to improve the prediction of the target block. DC and PLANAR prediction modes, as well as some angular 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 edge 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 prediction at the target block boundaries in a graceful manner so that the intensity changes at the target block boundaries are somewhat gradual. However, PDPC achieves this with considerable complexity: the predicted samples are combined with reference samples from the top and left reference arrays as a weighted average with multiplication 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 does not exist in the same slice or the current CU is located on a frame boundary, a method called reference sample substitution is performed, in which the missing samples are copied from 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 as refMain and refSide, respectively. Array refMain has 2*W+1 pixels, indexed as refMain[0] to refMain[2W], where refMain[0] corresponds to the top-left reference pixel. Similarly, array refSide has 2*H+1 pixels, indexed as refSide[0] to refSide[2H], where refSide[0] again corresponds 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 will 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 lie between the 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 component.
[0039] Mode 2 corresponds to a prediction direction at a 45-degree angle 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 matches 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 modes, and Figure 3B shows the corresponding intraPredAngle values.
[0041] Figure 4 shows the position-dependent intra-prediction combination for bottom-left mode (mode 66). The top and left reference samples are located diagonally opposite. 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, along with the height and width of the target block, are swapped.
[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 in the lower - right corner of the target block that does not undergo PDPC.
[0044] For mode 2, the PDPC process is exactly the same as for mode 66, if the top and left reference arrays are swapped along with the height and width of the target block.
[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 can 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 is the case in the situations 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 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 nearest reference pixel must 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 exemplary mode indexes to inverse angle parameters 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 P 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] at a 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 a smaller integer neighborhood refSide[deltay], and if deltaFrac is 32 or greater, then P left is the larger integer neighborhood refSide[deltay+1].
[0054] P pred If (x,y) denotes the initial prediction, then 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 unavailable. In this case, the target pixel is not subjected to the above-mentioned modifications, and the first predicted value of the pixel remains unchanged. That is, in this case, PDPC post-processing is not applied.
[0056] For horizontal prediction modes around 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 wL=0 when wL=0. From equation (2), we see that if wL=0, the left reference pixel does not affect the weighted sum. In this case, there is no need for PDPC operation on the considered target pixel. Due to the above property 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] 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 the reference arrays refMain and refSide when the mode is horizontal (i.e., when the mode index is <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 the mode index is equal to 2 or one of its adjacent modes. Thus, in these cases, the parameters wL, wT, P left , P top are actually parameters wT, wL, P top , P leftThis process involves multiple tests (steps 710, 730) and multiple multiplications required in each of the calculations (steps 743 and 753). First, if intraPredAngle is not greater than or equal to 12, then at the "no" branch of step 710, intra prediction is terminated and PDPC post-processing is not applied. If intraPredAngle is equal to 32, then at the "yes" branch of step 730, wT and wL are calculated at step 741, and P is calculated at step 742. top and P left is obtained, after which PDPC post-processing is applied in step 743. This 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, 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 Figure 3, the predicted value of any target pixel is equal to the reference pixel above that pixel, i.e., P pred P top is equal to P top By substituting the value 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 can be seen, wT is also a function of 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 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 actually serves no useful purpose. In early PDPC proposals, deltaFrac was included because the position of the left reference sample was linearly interpolated based on the value of deltaFrac. In further proposals, linear interpolation was replaced by nearest neighbor. However, this makes the computation of the deltaFrac term rather redundant, as will be 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 can 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 for the availability of the left reference pixel. As mentioned above, 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 unchanged.
[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 length 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 to see 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 interpolation, a pair of refSide[deltay] and refSide[deltay+1] is needed. Here, nearest neighbor is used instead of interpolation, so 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 right hand side term is just a recursive sum, so 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 due to rounding. This avoids calculating the parameter deltaFrac. As a result, to know if the left reference sample is unavailable, we only need to check if deltay>2*H, which is identical to the check when PDPC is applied to mode 2 or mode 66.
[0077] A secondary effect of this simplification is 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 that location to 2H and P left 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 the same predicted value of the target pixel as in VTM5.0.
[0078] Therefore, equation (3) can be simplified if it is observed 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 multiplication by (64-wL), which does not need to be a power of 2. As already understood, wL can only have non-negative values. If wL>0, it is also a power of 2. Therefore, the only multiplication in the above equation can be done using bit shifts, as shown in equation (4).
[0081] In at least one embodiment, the video coding or decoding includes a post-processing stage using PDPC, where the prediction operation uses equation (4) below: 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 suggestion corresponds to VTM5.0 code using an 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, given the above coordinate adjustments, the proposed PDPC simplification for 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 denotes the reference array above the target block, and P top denotes the reference pixel on the reference array obtained by intersection with the extension of the prediction direction.
[0086] 9 shows an example flowchart 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 angular mode, in which two different prediction operations are integrated 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 the first simplification and described above. As can be seen in the right branch of FIG. 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), the post-processing includes, in the "yes" branch of step 910, calculating, for the pixel, a weighting value wL in step 951; obtaining a left reference pixel by extending the prediction direction to the left reference array in step 952; and calculating, in step 953, the weighting value wL in step 951: P(x,y)=Clip(((64-wL) * P pred (x,y)+wL*P left +32)>>6) Calculating post-processed values of the predicted pixels according to (3).
[0088] That is, the predicted pixel is modified based on a weighting between its predicted value and 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 a mode index value instead of the intraPredAngle value, but in that case more than one comparison would be required to check whether 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 indices of 10 and 58, but other values of comparison may be used and would 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 indices of 18 and 50. In another embodiment, intraPredAngle is tested for fixed values in the ranges of 0 to 12, which correspond to mode indices of 10 to 18 and 50 to 58.
[0090] 10 shows an example flowchart according to a second embodiment of a modified PDPC process following an implementation example based on VTM5.0. In this second embodiment, video coding or decoding includes a post-processing stage using PDPC in angular mode, in which two different prediction operations are integrated 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 FIG. 9 and described above as a second simplification. As can be seen in FIG. 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 (for example, 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 a 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 post-processed values for the predicted pixels according to:
[0092] That is, the predicted pixel is modified based on a weighting between its predicted 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, intraPredAngle is tested against a fixed value of 12, but other values of 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 The 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 neighbors, prediction directions, 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 on 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 size differences between the VTM5.0 codec and the proposed embodiment for the Y, U, and V components of the original video, respectively. Thus, these columns 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 time relative to the encoding and decoding time of VTM5.0, respectively. A comparison of the time required for encoding and decoding indicates the compression efficiency of the proposed embodiment compared to the VTM5.0 implementation. FIG. 11 shows the overall improvement in encoding and decoding time. FIG. 12 shows the overall improvement in terms of encoding and decoding time, as well as encoding size.
[0105] 13 shows an example flowchart according to various embodiments described in this disclosure. This flowchart is initiated when PDPC post-processing can be performed and is iteratively applied to 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, PDPC post-processing is not performed and the predicted sample is not changed.
[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 deemed 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 containing 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 computed in a simple manner as previously described under the name deltay.
[0109] In step 1307, a sample value is determined according to the acquired and calculated parameters. Equations 3 and 4 above provide different formulas for calculating the sample value. These equations, especially Equation 4, have the advantage of requiring at least fewer calculations than conventional techniques. 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 for further simplification of the calculation. Another reason is that one more angle test is discarded. The determination of the sample value in step 1307 can also be understood as correcting, modifying, or post-processing the previously predicted sample.
[0110] The operations of step 1301 may be performed once per block. However, the operations of steps 1303-1307 of Figure 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., coded.
[0111] This application describes various aspects, including tools, features, embodiments, models, methods, and the like. Many of these aspects are described with technicality and in a manner that may be construed as limiting, to at least indicate their individual characteristics. However, this is for ease of explanation and does not limit the applicability or scope of the aspects. In fact, all of the different aspects can be combined and interchanged to provide additional aspects. Furthermore, aspects can likewise be combined and interchanged with aspects described in prior applications.
[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 descriptions in these figures are not intended to limit the breadth of implementations. At least one aspect relates generally to video encoding and decoding, and at least one other aspect relates generally to transmitting generated or encoded bitstreams. These and other aspects can be implemented as methods, apparatus, computer-readable storage media having stored thereon instructions for encoding or decoding video data according to any of the described methods, and / or computer-readable storage media having stored thereon a bitstream generated according to any of the described methods.
[0113] Various methods are described herein, each of which comprises one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for the 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 this application can be used to modify modules such as, for example, the motion compensation and motion estimation modules (170, 175, 275) of video encoder 100 and decoder 200 as shown in Figures 1A and 1B. Furthermore, the aspects are not limited to VVC or HEVC but can be applied, for example, to other standards and recommendations, whether existing or developed in the future, and extensions of any such standards and recommendations (including VVC and HEVC). Unless indicated otherwise or technically precluded, the aspects described in this application can be used individually or in combination.
[0115] Various numerical values are used in this application. The particular values are for illustrative purposes and the described aspects are not limited to these particular values.
[0116] Various implementations involve decoding. As used herein, "decoding" may encompass all or part of the processes performed on a received encoded sequence to generate a final output suitable for display, for example. 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 may include processes performed by the decoders of the various implementations described herein.
[0117] As a further example, in one embodiment, "decoding" refers to entropy decoding only, in another embodiment, "decoding" refers to differential decoding only, and in another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or to refer generally to the relatively broad decoding process will be clear based on the context of the particular description and is believed to be well understood by those skilled 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, for example, generate 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 may include processes performed by the encoders of the various implementations described herein.
[0119] As a further example, in one embodiment, "encoding" may refer only to entropy encoding, in another embodiment, "encoding" may refer only to differential encoding, and in another embodiment, "encoding" may refer 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 refer generally to the broader encoding 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.
[0120] It should be noted that the syntax elements used herein are descriptive terms, and therefore do not preclude 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. Specifically, the encoding process typically considers a balance or trade-off between rate and distortion, often subject to computational complexity constraints. Rate-distortion optimization is usually formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. Different approaches exist for solving the rate-distortion optimization problem. For example, an approach may be based on a collective examination of all encoding options, including all considered modes or coding parameter values, with a full evaluation of their coding costs and associated distortions on the reconstructed signal after coding and decoding. Also, relatively fast approaches can be used to reduce the coding complexity, particularly involving the computation of approximate distortion based on a predicted or prediction residual signal rather than a reconstructed one. A hybrid of these two approaches can also be used, for example, by using approximate distortion for only some of the possible encoding options and full distortion for other 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 optimization is not necessarily a complete assessment of both the coding cost and the associated distortion.
[0123] This application describes various aspects, including tools, features, embodiments, models, methods, and the like. Many of these aspects are described with technicality and in a manner that may be construed as limiting, to at least indicate their individual characteristics. However, this is for ease of explanation and does not limit the applicability or scope of the aspects. In fact, all of the different aspects can be combined and interchanged to provide additional aspects. Furthermore, aspects can likewise be combined and interchanged with aspects described in prior applications.
[0124] Implementations and aspects described herein may be implemented in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even if only a single form of implementation is described (e.g., only a method), the described implementation of the features may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented in, for example, 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, for example, communication devices such as 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 information may include, for example, one or more of estimating information, calculating information, predicting information, or retrieving information from 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 memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or inferring information.
[0128] Additionally, the application may refer to "receiving" various pieces of information. Receiving, like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from memory). Furthermore, "receiving" typically involves, in one manner or another, an action such as storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or inferring 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 listed alternative (A), or the selection of only the second listed 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 listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be extended for as many items as are listed, as will be apparent to those skilled 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 parameter to the decoder so that the decoder can use the same particular parameter (explicit signaling). Conversely, if the decoder already has the particular parameter as well as others, signaling can be used without transmission to simply allow the decoder to know and select the particular parameter (implicit signaling). By avoiding the 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 to signal information to a corresponding decoder in various embodiments. 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 those 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 bitstream 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 carried by the signal 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 containing 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 the 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 containing 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 the 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 predicted value obtained for the sample, and 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 is 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 is 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; determining the values of the samples as follows: the intra prediction angle is a diagonal top right to bottom left direction corresponding to prediction mode 66; P(x,y) = Ppred(x,y) + ((((Pleft - Ppred(x,y)) << log2(wL)) + 32) >> 6) determining where Ppred(x,y) is the obtained predicted value of the sample, x and y are the position of the sample, wL is a weighting, Pleft is determined as refSide[1 + x + y], and refSide is an array of values of samples in the column to the left of the block; A method comprising:
2. The method of claim 1 , wherein if the position of Pleft exceeds the length of refSide, the last reference sample of refSide is used for Pleft.
3. The method according to claim 1 or 2, wherein the method is also applied to an intra-prediction angle adjacent in the diagonal direction from the upper right to the lower left corresponding to prediction mode 66.
4. The method according to any one of claims 1 to 3, wherein said method is also applied to intra prediction angles corresponding to prediction modes included in prediction modes 58 to 72.
5. 1. A method of encoding a block video, comprising the steps of: For each sample of the block of the video, performing intra prediction of said samples; Modifying the value of the sample according to the method of any one of claims 1 to 4; encoding said block; A method comprising:
6. 1. A method of decoding a block video, comprising the steps of: For each sample of the block of the video, performing intra prediction of said samples; Modifying the value of the sample according to the method of any one of claims 1 to 4; Decrypting the block; A method comprising:
7. 1. An apparatus including an encoder for encoding picture data, the encoder comprising: For each sample of the block of the video, performing intra prediction of said samples; Modifying the value of the sample according to the method of any one of claims 1 to 4; encoding said block; The apparatus is configured to:
8. 1. An apparatus including a decoder for decoding picture data, the decoder performing, for a block of video: For each sample of the block of the video, performing intra prediction of said samples; Modifying the value of the sample according to the method of any one of claims 1 to 4; Decrypting the block; The apparatus is configured to:
9. 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 6 when executed by a processor.
10. A computer program comprising program code instructions for implementing the steps of the method according to at least one of claims 1 to 6 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