Simplifying the derivation of filter coefficients for inter-component prediction
Simplifying filter coefficient derivation for CCCM prediction by limiting bit precision and CU size, and using non-downsampled luma samples addresses latency and overfitting issues, enabling efficient CCCM prediction in hardware coders.
Patent Information
- Application Number
- JP2025521135
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-10-13
- Filing Date
- 2022-12-16
- Publication Date
- 2025-10-15
AI Technical Summary
Current CCCM prediction techniques for inter-component prediction in video coding introduce significant latency and overfitting issues due to computationally expensive filter coefficient derivation and require downsampling, making them impractical for hardware coders.
Implement techniques to simplify filter coefficient derivation by limiting the dynamic range of filter coefficients to a defined bit range, restricting derivation based on CU size, and enabling direct derivation from non-downsampled luma samples, reducing latency and avoiding unnecessary computations.
The proposed techniques significantly reduce latency in hardware coders by simplifying filter coefficient derivation, allowing CCCM prediction to be performed efficiently without introducing excessive processing delays.
Smart Images

Figure 2025534504000001_ABST
Abstract
Description
[Background technology]
[0001] A digital video stream may represent a video using a series of frames or still images. Digital video can be used for a variety of applications, such as video conferencing, high-definition video entertainment, video advertising, or sharing user-generated videos. Digital video streams contain large amounts of data, and processing, transmitting, or storing the video data can consume significant computing or communication resources of a computing device. Various techniques, such as encoding or decoding techniques, have been proposed to reduce the amount of data in a video stream. Summary of the Invention
[0002] Disclosed herein are, among other things, systems and techniques for simplifying filter coefficient derivation for inter-component prediction.
[0003] A method for simplifying filter coefficient derivation for inter-component prediction according to an embodiment of the present disclosure includes determining filter coefficients for a current coding unit based on samples in a reference area of the current coding unit, reducing the bit precision of the filter coefficients to generate reduced filter coefficients, determining a predicted chroma sample for the current luma sample based on an input value for the current luma sample and based on the reduced filter coefficients, and encoding or decoding the predicted chroma sample.
[0004] In some implementations of the method, reducing the bit precision of the filter coefficients to generate the lowering filter coefficients includes reducing the number of bits used to store the values of the filter coefficients from a first number of bits to a second number of bits, and the values of the lowering filter coefficients are stored using the second number of bits.
[0005] In some implementations of the method, the values of the low pass filter coefficients are clipped using one or more thresholds.
[0006] In some implementations of the method, the method includes clipping the low pass filter coefficients according to a minimum clipping value and a maximum clipping value.
[0007] In some implementations of the method, the filter coefficient corresponding to the bias term is determined after all other filter coefficients have been determined.
[0008] In some implementations of the method, the filter coefficients are determined based on non-downsampled luma samples of the reference area.
[0009] In some implementations of the method, the filter coefficients are determined based on a current coding unit having a size greater than a threshold.
[0010] In some implementations of the method, the number of filter coefficients is limited when the size of the current coding unit is less than a threshold.
[0011] In some implementations of the method, the threshold corresponds to an 8x8 chroma sample unit.
[0012] In some implementations of the method, a first number of filter coefficients is determined based on a current coding unit having a size greater than a threshold, and a second number of filter coefficients less than the first number is determined based on a current coding unit having a size less than the threshold.
[0013] In some implementations of the method, determining the filter coefficients includes deriving at least a portion of the filter coefficients based on reconstructed chroma samples in a reference area.
[0014] In some implementations of the method, determining the filter coefficients includes decoding one or more syntax elements associated with the filter coefficients that are signaled in the bitstream.
[0015] In some implementations of the method, the predicted chroma samples are clipped based on the chroma values in the reference area using one or more thresholds.
[0016] In some implementations of the method, the method includes clipping the predicted chroma samples according to a minimum clipping value, a maximum clipping value, and a weighting factor.
[0017] An apparatus for simplifying filter coefficient derivation for inter-component prediction according to an embodiment of the present disclosure includes a memory and a processor configured to execute instructions stored in the memory, the instructions causing the apparatus to obtain samples in a reference area of a current coding unit, reduce bit precision of filter coefficients determined based on the samples to generate reduction filter coefficients, identify input values for a current luma sample, determine a predicted chroma sample for the current luma sample based on the input value and the reduction filter coefficients, and encode or decode the predicted chroma sample.
[0018] In some implementations of the apparatus, the processor is configured to execute instructions to clip the low pass filter coefficients according to a minimum clipping value and a maximum clipping value.
[0019] In some implementations of the apparatus, the processor is configured to execute instructions to clip the predicted chroma samples based on chroma values in the reference area.
[0020] In some implementations of the apparatus, when the autocorrelation matrix calculated in connection with determining the filter coefficients is singular, the average of the reconstructed chroma values within the reference area is used as the predicted chroma sample.
[0021] A non-transitory computer-readable storage device according to an embodiment of the present disclosure includes program instructions executable by one or more processors, which, when executed, cause the one or more processors to perform operations for simplifying filter coefficient derivation for inter-component prediction, the operations including reducing bit precision of filter coefficients determined for a current coding unit to generate reduced filter coefficients; identifying input values for a current luma sample; determining a predicted chroma sample for the current luma sample based on the input values and the reduced filter coefficients; and encoding or decoding the predicted chroma sample.
[0022] In some implementations of the non-transitory computer-readable storage device, the reduction filter coefficients are clipped according to minimum and maximum values, and the predicted chroma samples are clipped based on chroma values in a reference area that includes the samples used to determine the filter coefficients.
[0023] These and other aspects of the present disclosure are set forth in the following detailed description of the embodiments, the appended claims, and the accompanying drawings.
[0024] This description makes reference to the accompanying drawings, which are described below, in which like reference numerals refer to like parts throughout the several views. [Brief explanation of the drawings]
[0025] [Figure 1] 1 is a schematic diagram of an embodiment of a video encoding and decoding system; [Figure 2] FIG. 2 is a block diagram of an example of a computing device capable of implementing a sending station or a receiving station. [Figure 3] FIG. 2 is a diagram of an example in which a video stream is encoded and decoded. [Figure 4]FIG. 2 is a block diagram of an embodiment of an encoder. [Figure 5] FIG. 2 is a block diagram of an embodiment of a decoder. [Figure 6] FIG. 2 is an illustration of an example of a portion of a video frame. [Figure 7] 10 shows an example of a reference area for inter-component prediction. [Figure 8] 10 shows an example of a neighborhood of luma samples used to predict chroma samples. [Figure 9] 1 illustrates exemplary resolutions of luma and chroma blocks. [Figure 10] 10 shows an exemplary reference area used to derive inter-component prediction filter coefficients directly from non-downsampled luma samples. [Figure 11] FIG. 10 is a flowchart diagram of an embodiment of a technique for simplifying filter coefficient derivation for inter-component prediction. DETAILED DESCRIPTION OF THE INVENTION
[0026] A video compression scheme may include dividing each image or frame of a video stream into smaller portions, such as blocks or coding tree units (CTUs), and generating an encoded bitstream using a technique that limits the information included in each CTU of the frame. The bitstream may be decoded to recreate the source frame from the limited information. Encoding or decoding a CTU into or from the bitstream may include predicting pixel or CTU values based on similarities with other previously coded pixels or CTUs in the same frame. These similarities may be determined using intra-prediction, which attempts to predict pixel values of a coding unit (CU) of a CTU using pixels surrounding the CU (e.g., pixels in the same frame as the CU but outside the CU). During encoding, the result of an intra-prediction mode performed on a CU is a prediction unit (PU). A prediction residual may be determined based on the difference between pixel values of the CU and the PU. The prediction residual and the intra-prediction mode used to ultimately obtain the prediction residual may then be encoded into a bitstream. During decoding, the prediction residual is reconstructed into a CU using the PU generated based on the intra-prediction mode, and then included in the output video stream.
[0027] A CU includes a luminance component, also referred to as a luma component, and two color difference components, also referred to as chroma components. These luma and chroma components may sometimes be referred to as a luma block and a chroma block. For example, the luma component of a CU may be represented in the Y plane of the CU, and the chroma components may be represented either in the U and V planes or the Cr and Cb planes of the CU. It is understood that a luma component includes several luma samples, and each chroma component includes several chroma samples. In general, luma samples provide a measure of the overall brightness of a target CU and thus represent the structural quality of the video content of the target CU, while chroma samples provide a measure of the overall color of the target CU. For this reason, conventional video compression schemes often use more precise prediction techniques for predicting the luma component of a CU than for the chroma components of the CU. Such schemes may also use techniques aimed at predicting these chroma components from a predicted luma component.
[0028] One example of such a luma-based chroma prediction technique is the Cross-Component Linear Model (CCLM) prediction proposed for use with the H.266 codec, also known as Versatile Video Coding (VVC). It is used in intra-predicted CUs to predict chroma signals based on weighted luma signals. In CCLM prediction, chroma samples of a CU are predicted based on reconstructed luma samples of the same CU using a linear model represented as pred_C(i,j)=α*rec_L`(i,j)+β, where pred_C(i,j) represents the predicted chroma sample within the CU and rec_L`(i,j) represents the downsampled reconstructed luma sample of the same CU. The CCLM prediction parameters α and β are weights derived from up to four neighboring chroma samples and their corresponding downsampled luma samples using one or more lookup tables. Downsampling is used to match the resolution of the luma and chroma components of a CU. Specifically, if the resolutions of the luma and chroma components are already equal (e.g., 4:4:4), the downsampling operation may be omitted. However, if the resolutions of the luma and chroma components are unequal (e.g., 4:2:0), such that the chroma components are generally smaller than the luma components, one or more downsampling filters may be applied to the luma samples in the luma component in both the horizontal and vertical directions. Examples of downsampling filters may include Type-0, in which each chroma sample exists between two vertical luma samples across a CU, and Type-2, in which one chroma sample exists for each luma sample across a CU. Due to the high correlation between luma and chroma values, CCLM prediction is generally more efficient than traditional chroma space prediction techniques when a CU has high texture, especially high chroma texture.
[0029] While CCLM prediction offers advantages over traditional approaches to luma-based chroma prediction, opportunities may exist to further improve the accuracy and / or efficiency of CCLM prediction. One such opportunity relates to a newer approach to luma-based chroma prediction that builds on CCLM prediction and is called Convolutional Cross-Component Model (CCCM) prediction. CCCM prediction uses a 7-tap filter that includes a 5-tap spatial component, a 1-tap nonlinear term, and a 1-tap bias term. The spatial component includes C, the current luma sample, and four neighboring samples, called N, S, E, and W (e.g., the four neighboring samples are arranged in a plus, X, diamond, or other shape, with C in the center in any of these cases). The nonlinear term, P, is scaled to the sample value range of the content by a power of C, which is expressed as P=(C*C+midVal)>>bitDepth, where bitDepth represents the bit precision of the video content and midVal is the midpoint chroma value within that bit precision. For example, for 10-bit video content, bitDepth is equal to 10 and midVal is equal to 512. The bias term, B, represents a scalar offset between the input and output, similar to the offset term in CCLM prediction, and is set to the midpoint chroma value of the bit precision (e.g., 512 for 10-bit video content), and therefore B is equal to midVal.
[0030] The output of the CCCM prediction, which is the predicted chroma value based on the filter coefficients c i The predicted chroma value, predChromaVal, is calculated as the convolution between c0C+c1N+c2S+c3E+c4W+c5P+c6B (i = 0 to 6, inclusive) and the input value, clipped to the range of valid chroma samples. The filter coefficients c iis determined by minimizing the mean squared error (MSE) between predicted and reconstructed chroma samples in a reference area corresponding to one or more CTUs, including the current CTU containing the CU being predicted. In one example, the reference area may include N lines (e.g., 6 lines) of chroma samples above and to the left of the CU. Accordingly, the reference area may extend one CU width to the right of the CU boundary and one CU height below the CU boundary. The reference area is adjusted to include only available chroma samples. When such neighboring samples are unavailable, an extension of the reference area, represented by one sample surrounding the actual reference area boundary, may be provided to support chroma samples along the edges of the reference area. MSE minimization is performed by calculating the autocorrelation matrix of the luma input samples and the cross-correlation vector between the luma input samples and the predicted chroma output samples.
[0031] Although CCCM prediction offers many improvements over CCLM prediction alone, it is not without drawbacks. Specifically, CCCM introduces significant latency, which makes hardware coder implementations impractical or unfeasible. To ensure high prediction accuracy, the filter coefficients used in CCCM prediction are 22 bits. In CCCM prediction, the filter coefficients c iConsidering that deriving σ requires sequentially performing numerous 64-bit division operations by an arbitrary denominator, this derivation is computationally very expensive. Therefore, the latency introduced by CCCM prediction to derive the filter coefficients is typically long. This latency is particularly pronounced in hardware coders (i.e., combined hardware encoders and decoders, or separate hardware encoders and decoders), which are limited in the amount of processing per cycle and generally have a limited number of cycle budgets for small CUs. The latency introduced by CCCM prediction is further extended in scenarios where downsampling is required (e.g., for luma and chroma signals in formats other than 4:4:4). Another drawback of current CCCM prediction techniques relates to overfitting. Specifically, as mentioned above, the MSE minimization process performed to derive the filter coefficients for CCCM prediction uses neighboring samples. However, if these neighboring samples are very similar, the resulting matrix is singular, and the predicted value is generally unusably high or low.
[0032] Embodiments of the present disclosure address these and other issues using one or more filter coefficient derivation simplification techniques for CCCM prediction. The simplification techniques disclosed herein generally relate to limiting the dynamic range of filter coefficient derivation to a defined bit range, limiting the use of filter coefficient derivation, and therefore CCCM prediction, based on CU size, and / or enabling filter coefficient derivation directly from non-downsampled luma samples. Techniques aimed at limiting the dynamic range of filter coefficient derivation to a defined bit range use right shifts to reduce the bit precision required for derived filter coefficients, such as from 22 bits of accuracy to 6 or 8 bits of accuracy. Techniques aimed at limiting filter coefficient derivation based on CU size avoid introducing unnecessary latency by either preventing CCCM prediction for CUs smaller than a certain size (e.g., 8x8 chroma samples) or limiting the number of filter coefficients that can be derived by such a block (e.g., limiting it to 3 from 7). Techniques aimed at enabling direct filter coefficient derivation from downsampled luma samples enable CCCM prediction operations to avoid the downsampling process in situations where the video signal is not formatted in 4:4:4, thereby avoiding the latency typically caused by such downsampling. The filter coefficient derivation simplification techniques disclosed herein introduce meaningful limitations to the typically resource-intensive filter coefficient derivation process in CCCM prediction. The techniques disclosed herein therefore enable CCCM prediction to be performed in hardware coders, substantially reducing the latency of the coding process.
[0033] Although reference is made herein to exemplary CTUs, CUs, and PUs commonly used in video codecs such as H.265 and H.266, referred to as High-Efficiency Video Coding (HEVC), embodiments of the present disclosure may be used with other video coding structures. In one specific, non-limiting example, embodiments of the present disclosure may be used with superblocks, macroblocks, and blocks commonly used in video codecs such as VP9, AV1, and the currently under development AV2. Accordingly, references herein to specific video coding structures such as CTUs, CUs, and PUs should be considered as representations of non-limiting, example video coding structures in which embodiments of the present disclosure may be used.
[0034] Further details of techniques for simplifying filter coefficient derivation for inter-component prediction are described herein, first with reference to systems in which such techniques can be implemented. Figure 1 is a schematic diagram of an example video encoding and decoding system 100. The transmitting station 102 may be, for example, a computer having the hardware internal configuration illustrated in Figure 2. However, other implementations of the transmitting station 102 are possible. For example, the processing of the transmitting station 102 may be distributed across multiple devices.
[0035] The network 104 may connect the sending station 102 and the receiving station 106 for encoding and decoding of the video stream. Specifically, the video stream may be encoded at the sending station 102, and the encoded video stream may be decoded at the receiving station 106. The network 104 may be, for example, the Internet. The network 104 may also be a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), a cellular network, or any other means for transferring the video stream from the sending station 102 to the receiving station 106 in this embodiment.
[0036] Receiving station 106, in one embodiment, may be a computer having the internal hardware configuration illustrated in Figure 2. However, other suitable implementations of receiving station 106 are possible. For example, the processing of receiving station 106 may be distributed across multiple devices.
[0037] Other implementations of the video encoding and decoding system 100 are possible. For example, the network 104 may be omitted from an implementation. In other implementations, the video stream may be encoded and then stored for later transmission to the receiving station 106 or any other device having memory. In one implementation, the receiving station 106 receives the encoded video stream (e.g., via the network 104, a computer bus, and / or some other communication path) and stores the video stream for later decoding. In an exemplary implementation, the Real-time Transport Protocol (RTP) is used to transmit the encoded video over the network 104. In other implementations, a transport protocol other than RTP, such as the Hypertext Transfer Protocol (HTTP) video streaming protocol, may be used.
[0038] As described below, sending station 102 and / or receiving station 106 may include the capability to both encode and decode video streams, for example, when used in a videoconferencing system. For example, receiving station 106 may be a videoconference participant that receives, decodes, and displays encoded video bitstreams from a videoconference server (e.g., sending station 102), and also encodes and transmits its own video bitstreams to the videoconference server for decoding and display by other participants.
[0039] In some implementations, video encoding and decoding system 100 may instead be used to encode and decode data other than video data. For example, video encoding and decoding system 100 may be used to process image data. The image data may include blocks of data from an image (e.g., CTUs of a frame of a video stream). In such implementations, transmitting station 102 may be used to encode the image data, and receiving station 106 may be used to decode the image data.
[0040] Alternatively, receiving station 106 may represent a computing device that stores encoded image data for later use, for example, after receiving encoded or pre-encoded image data from transmitting station 102. As a further alternative, transmitting station 102 may represent a computing device that decodes image data, for example, prior to transmitting the decoded image data to receiving station 106 for display.
[0041] Figure 2 is a block diagram of an example computing device 200 capable of implementing a transmitting station or a receiving station. For example, computing device 200 may implement one or both of transmitting station 102 and receiving station 106 of Figure 1. Computing device 200 may be in the form of a computing system including multiple computing devices, or may be in the form of a single computing device, such as, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, or a desktop computer.
[0042] Processor 202 in computing device 200 may be a conventional central processing unit. Alternatively, processor 202 may be any other type of device or devices, now existing or later developed, capable of manipulating or processing information. For example, while embodiments of the present disclosure may be practiced with one processor (e.g., processor 202) as shown, advantages of speed and efficiency may be achieved by using multiple processors.
[0043] The memory 204 in the computing device 200 may, in embodiments, be a read-only memory (ROM) device or a random access memory (RAM) device. However, other suitable types of storage devices may be used as the memory 204. The memory 204 may include code and data 206 accessed by the processor 202 using a bus 212. The memory 204 may further include an operating system 208 and application programs 210, which include at least one program that enables the processor 202 to perform the techniques described herein. For example, the application programs 210 may include applications 1-N, which further include, among other things, encoding and / or decoding software that performs the enhanced multi-stage intra prediction described herein.
[0044] Computing device 200 may also include secondary storage 214, which may be, for example, a memory card used in a mobile computing device. Because a video communication session may contain a significant amount of information, all or portions of the information may be stored on secondary storage 214 and loaded into memory 204 as needed for processing.
[0045] Computing device 200 may also include one or more output devices, such as a display 218. In one example, display 218 may be a touch-sensitive display that combines a display with touch-sensing elements operable to sense touch input. Display 218 may be connected to processor 202 via bus 212. In addition to or instead of display 218, other output devices may be provided that allow a user to program or use computing device 200. When the output device is or includes a display, the display may be implemented in a variety of ways, including a liquid crystal display (LCD), a cathode-ray tube (CRT) display, or a light emitting diode (LED) display, such as an organic light emitting diode (OLED) display.
[0046] Computing device 200 may also include or communicate with image sensing device 220, such as a camera, or any other existing or later developed image sensing device 220, that can sense images, such as an image of a user operating computing device 200. Image sensing device 220 may be positioned to face a user operating computing device 200. In an embodiment, the position and optical axis of image sensing device 220 may be configured to include a field of view that includes an area immediately adjacent display 218 from which display 218 can be viewed.
[0047] Computing device 200 may also include or communicate with a voice sensing device 222, such as a microphone, or any other existing or later developed voice sensing device, that can sense sound near computing device 200. Voice sensing device 222 may be positioned to face a user operating computing device 200 and may be configured to receive sound, e.g., speech or other utterances, made by the user while the user is operating computing device 200.
[0048] 2, processor 202 and memory 204 of computing device 200 are shown as integrated into one unit, but other configurations may be utilized. The operations of processor 202 may be distributed across multiple machines (each machine may have one or more processors) that may be directly connected or connected via a local area network or other network. Memory 204 may be distributed across multiple machines, such as network-based memory or memory in multiple machines that perform the operations of computing device 200.
[0049] Although shown herein as a single bus, bus 212 of computing device 200 may be comprised of multiple buses. Additionally, secondary storage 214 may be directly connected to other components of computing device 200 or may be accessed over a network, and may comprise an integrated unit such as a memory card or multiple units such as multiple memory cards. Accordingly, computing device 200 may be implemented in a wide variety of configurations.
[0050] 3 is a diagram of an example of how a video stream 300 is encoded and decoded. The video stream 300 includes a video sequence 302. At the next level, the video sequence 302 includes multiple adjacent video frames 304. Although three frames are shown as adjacent frames 304, the video sequence 302 may include any number of adjacent frames 304. The adjacent frames 304 may then be further subdivided into individual video frames, such as frame 306.
[0051] At the next level, the frame 306 may be divided into a series of planes, slices, or segments 308. A segment 308 may be a subset of a frame that allows for parallel processing, for example. A segment 308 may also be a subset of a frame that may separate video data into distinct colors. For example, a frame 306 of color video data may include a luma plane and two chroma planes. The segments 308 may be sampled at different resolutions.
[0052] Regardless of whether the frame 306 is divided into segments 308, the frame 306 may be further subdivided into CTUs 310, which may contain data corresponding to, for example, N×M pixels (N and M may refer to the same or different integer values) within the frame 306. The CTUs 310 may also be arranged to contain data from one or more segments 308 of pixel data. The CTUs 310 may be of any suitable size, for example, 4×4 pixels, 8×8 pixels, 16×8 pixels, 8×16 pixels, 16×16 pixels, or up to a maximum size which may be 128×128 pixel size or other N×M pixel size.
[0053] Figure 4 is a block diagram of an example of an encoder 400. The encoder 400 may be implemented in the sending station 102, as described above, such as by providing a computer software program stored in a memory, such as memory 204. The computer software program may include machine instructions that, when executed by a processor, such as processor 202, cause the sending station 102 to perform encoding of video data in the manner described in Figure 4. The encoder 400 may also be implemented as dedicated hardware, such as included in the sending station 102. In some implementations, the encoder 400 is a hardware encoder.
[0054] The encoder 400 has the following stages in the forward path (shown by solid connecting lines) that perform various functions to generate an encoded or compressed bitstream 420 using the video stream 300 as input: an intra / inter prediction stage 402, a transform stage 404, a quantization stage 406, and an entropy encoding stage 408. The encoder 400 may also include a reconstruction path (shown by dotted connecting lines) that reconstructs frames for encoding future CTUs. In FIG. 4, the encoder 400 has the following stages in the reconstruction path that perform various functions: an inverse quantization stage 410, an inverse transform stage 412, a reconstruction stage 414, and a loop filtering stage 416. Other structural variations of the encoder 400 may be used to encode the video stream 300.
[0055] In some instances, performance of the functions by encoder 400 may occur after filtering of video stream 300. That is, before encoder 400 receives video stream 300, video stream 300 may undergo preprocessing in accordance with one or more embodiments of this disclosure. Alternatively, encoder 400 may perform such preprocessing on video stream 300 itself before proceeding to perform the functions described with respect to FIG. 4, e.g., before processing video stream 300 in intra / inter prediction stage 402.
[0056] After preprocessing, when the video stream 300 is presented for encoding, each adjacent frame 304, such as frame 306, may be processed by a CTU. At the intra / inter prediction stage 402, each CU of the CTU may be encoded using intra-frame prediction (also referred to as intra-prediction) or inter-frame prediction (also referred to as inter-prediction). In either case, a PU may be formed. In the case of intra-prediction, the PU may be formed from samples in a previously encoded and reconstructed current frame. In the case of inter-prediction, the PU may be formed from samples in one or more previously constructed reference frames.
[0057] Next, the intra / inter prediction stage 402 may subtract the PU from the CU to generate a prediction residual, also referred to as a residual. The transform stage 404 uses a block-based transform to transform the residual, for example, into transform coefficients in the frequency domain. The quantization stage 406 uses a quantization value or quantization level to transform the transform coefficients into discrete quantized values, also referred to as quantized transform coefficients. For example, the transform coefficients may be divided by the quantization value and rounded down.
[0058] The quantized transform coefficients are then entropy encoded by an entropy encoding stage 408. The entropy encoded coefficients are then output in a compressed bitstream 420 along with other information used to decode the CU (which may include, for example, syntax elements used to indicate the prediction type, transform type, motion vectors, or quantization values used). The compressed bitstream 420 may be formatted using a variety of techniques, such as variable length coding or arithmetic coding. The compressed bitstream 420 is also referred to as an encoded video stream or encoded video bitstream, and these terms are used interchangeably herein.
[0059] A reconstruction path (represented by a dotted connecting line) may be used to ensure that the encoder 400 and the decoder 500 (described below with reference to FIG. 5) use the same reference frame to decode the compressed bitstream 420. The reconstruction path performs functions similar to those performed during the decoding process (described below with reference to FIG. 5), including inverse quantization of the quantized transform coefficients at an inverse quantization stage 410 and inverse transforming the inverse quantized transform coefficients to generate differential prediction residuals (also referred to as differential residuals) at an inverse transform stage 412. At a reconstruction stage 414, the PU predicted at the intra / inter prediction stage 402 may be added to the differential residuals to create a reconstructed CU. A loop filtering stage 416 may apply an in-loop filter or other filter to the reconstructed CU to reduce distortions such as blocking artifacts. Examples of filters that may be applied at the loop filtering stage 416 include, but are not limited to, a deblocking filter, a directionality enhancement filter, and a loop restoration filter.
[0060] Other variations of the encoder 400 may be used to encode the compressed bitstream 420. In some implementations, a non-transform-based encoder may quantize the residual signal directly for a particular CU, CTU, or frame without using the transform stage 404. In some implementations, the encoder may combine the quantization stage 406 and the inverse quantization stage 410 into a common stage.
[0061] Figure 5 is a block diagram of an example decoder 500. The decoder 500 may be implemented in the receiving station 106, for example, by providing a computer software program stored in memory 204. The computer software program may include machine instructions that, when executed by a processor, such as processor 202, cause the receiving station 106 to perform decoding of the video data in the manner described in Figure 5. The decoder 500 may also be implemented in hardware, for example, included in the transmitting station 102 or the receiving station 106. In some implementations, the decoder 500 is a hardware decoder.
[0062] In one embodiment, the decoder 500 includes the following stages that perform various functions, similar to the reconstruction path of the previously described encoder 400, to generate an output video stream 516 from a compressed bitstream 420: an entropy decoding stage 502, an inverse quantization stage 504, an inverse transform stage 506, an intra / inter prediction stage 508, a reconstruction stage 510, a loop filtering stage 512, and a post filtering stage 514. Other structural variations of the decoder 500 may also be used to decode the compressed bitstream 420.
[0063] When the compressed bitstream 420 is presented for decoding, the data elements in the compressed bitstream 420 may be decoded by the entropy decoding stage 502 to generate a set of quantized transform coefficients. The inverse quantization stage 504 inverse quantizes the quantized transform coefficients (e.g., by multiplying the quantized transform coefficients by a quantization value), and the inverse transform stage 506 inverse transforms the inverse quantized transform coefficients to produce differential residuals that may be identical to those produced by the inverse transform stage 412 of the encoder 400. Using header information decoded from the compressed bitstream 420, the decoder 500 may use the intra / inter prediction stage 508 to create PUs that are identical to those produced by the encoder 400 (e.g., the intra / inter prediction stage 402).
[0064] In the reconstruction stage 510, the PU may be added to the differential residual to create a reconstructed CU. To reduce blocking artifacts, a loop filtering stage 512 may be applied to the reconstructed CU. Examples of filters that may be applied in the loop filtering stage 512 include, but are not limited to, a deblocking filter, a directionality enhancement filter, and a loop restoration filter. Other filtering may also be applied to the reconstructed CU. In this embodiment, a post-filter stage 514 may be applied to the reconstructed CU to reduce blocking artifacts, and the result is output as an output video stream 516. The output video stream 516 may also be referred to as a decoded video stream, and these terms are used interchangeably herein.
[0065] Other variations of the decoder 500 may be used to decode the compressed bitstream 420. In some implementations, the decoder 500 may generate the output video stream 516 without the post-filter stage 514 or may omit the post-filter stage 514.
[0066] 6 is a diagram of an example of a portion of a video frame 600, which may be, for example, frame 306 shown in FIG. 3. The video frame 600 includes several 64×64 CTUs, such as four 64×64 CTUs 610 in two rows and two columns, in a matrix or Cartesian plane. Each 64×64 CTU 610 may include up to four 32×32 CUs 620. Each 32×32 CU 620 may include up to four 16×16 CUs 630. Each 16×16 CU 630 may include up to four 8×8 CUs 640. Each 8×8 CU 640 may include up to four 4×4 CUs 650. Each 4×4 CU 650 may include 16 pixels, and in the Cartesian plane or matrix, the 16 pixels may be represented by four rows and four columns per CU.
[0067] In some implementations, video frame 600 may include CTUs larger than 64x64 and / or CUs smaller than 4x4. Depending on features within video frame 600 and / or other criteria, video frame 600 may be partitioned into various arrangements. While one arrangement of CUs is shown, any arrangement may be used. While FIG. 6 shows NxN CTUs and CUs, in some implementations, NxM CTUs and / or CUs may be used (N and M are different numbers). For example, 32x64 CTUs, 64x32 CTUs, 16x32 CUs, 32x16 CUs, or any other size may be used. In some implementations, Nx2N CTUs or CUs, 2NxN CTUs or CUs, or a combination thereof may be used.
[0068] A pixel may include information describing the image captured in video frame 600, such as luma information, color information, and position information. In some implementations, a block, such as the 16x16 pixel block shown, may include a luma block 660, which may include luma pixels 662, and two chroma blocks 670, 680, such as a U or Cb chroma block 670 and a V or Cr chroma block 680. The chroma blocks 670, 680 may include chroma pixels 690. For example, the luma block 660 may include 16x16 luma pixels 662, and each chroma block 670, 680 may include 8x8 chroma pixels 690, as shown.
[0069] In some implementations, coding of video frame 600 may include ordered block-level coding. Ordered block-level coding may include coding the CUs of video frame 600 in an order, such as raster scan order, where the CUs may be identified and processed by starting with a CTU in the upper left corner of video frame 600 or a portion of video frame 600 and proceeding from left to right along the rows and from top row to bottom row, identifying and processing each CU in turn. For example, the 64x64 CTU in the top row and left column of video frame 600 may be the first coding CTU, and the 64x64 CTU immediately to the right of the first CTU may be the second coding CTU. The next-to-top row may be the second coding row, and thus the 64x64 CTU in the left column of the second row may be coded after the 64x64 CTU in the right-most column of the first row.
[0070] In some implementations, coding the CTUs of video frame 600 may include using quadtree coding, which may include coding smaller CUs within the CTU in raster scan order. For example, the 64x64 CTU shown in the lower-left corner of a portion of video frame 600 may be coded using quadtree coding, with the upper-left 32x32 CU coded, then the upper-right 32x32 CU coded, then the lower-left 32x32 CU coded, then the lower-right 32x32 CU coded. Each 32x32 CU may be coded using quadtree coding, with the upper-left 16x16 CU coded, then the upper-right 16x16 CU coded, then the lower-left 16x16 CU coded, then the lower-right 16x16 CU coded. Each 16x16 CU may be coded using quad-tree coding, where the top-left 8x8 CU may be coded, then the top-right 8x8 CU, then the bottom-left 8x8 CU, then the bottom-right 8x8 CU. Each 8x8 CU may be coded using quad-tree coding, where the top-left 4x4 CU may be coded, then the top-right 4x4 CU, then the bottom-left 4x4 CU, then the bottom-right 4x4 CU. In some implementations, the 8x8 CU may be omitted in the 16x16 CU, and the 16x16 CU may be coded using quad-tree coding, where the top-left 4x4 CU may be coded, then the other 4x4 CUs in the 16x16 CU may be coded in raster scan order.
[0071] In some implementations, coding the video frame 600 may include encoding information contained in an original version of the image or video frame, such as by omitting some of the information in the original version of the image or video frame from the corresponding encoded image or video frame. For example, the coding may include reducing spectral redundancy, reducing spatial redundancy, or a combination thereof. Reducing spectral redundancy may include using a color model based on a luma component (Y) and two chrominance components (U and V or Cb and Cr); such a color model may be referred to as a YUV or YCbCr color model or color space. Using the YUV color model may include using a relatively large amount of information to represent the luma component of a portion of the video frame 600 and a relatively small amount of information to represent each corresponding chrominance component of the portion of the video frame 600. For example, a portion of a video frame 600 may be represented by a high-resolution luma component and two low-resolution chrominance components, where the luma component may include a 16x16 block of luma samples and each of the two chrominance components represents a portion of the image with an 8x8 block of chrominance samples. The samples may represent values, e.g., values in a range of 0 to 255, and may be stored or transmitted using, e.g., 8 bits. While this disclosure is described with reference to the YUV color model, other color models may be used. Reducing spatial redundancy may include transforming the CUs to the frequency domain, e.g., using a discrete cosine transform. For example, a unit of an encoder may perform a discrete cosine transform using transform coefficient values based on spatial frequency.
[0072] Although the description herein is provided with reference to matrix or Cartesian representations of video frame 600 for clarity, video frame 600 may be stored, transmitted, processed, or any combination thereof in a data structure in which pixel values and / or luma and chroma samples of video frame 600 can be efficiently represented. For example, video frame 600 may be stored, transmitted, processed, or any combination thereof in a two-dimensional data structure, such as the matrix shown, or in a one-dimensional data structure, such as a vector array. Furthermore, although the description herein is provided with reference to a chrominance subsampled image in which U and V have half the resolution of Y, video frame 600 may have a different configuration for this color channel. For example, still referring to the YUV color space, full resolution may be used for all color channels of video frame 600. In other embodiments, color spaces other than the YUV color space may be used to represent the resolution of the color channels of video frame 600.
[0073] FIG. 7 illustrates an example of a reference area 700 for inter-component prediction. The reference area 700 shows chroma samples corresponding to multiple CUs, certain of which are filled with patterns 702, 704, and 706. Specifically, the chroma samples filled with pattern 702 correspond to the current PU 708 for which prediction processing is being performed, the chroma samples filled with pattern 704 are reconstructed chroma samples available for predicting the chroma samples filled with pattern 702, and the chroma samples filled with pattern 706 represent padding areas used to extend the reference area to accommodate predictions of chroma samples located along the edges of the chroma samples filled with pattern 704. Because the chroma samples filled with pattern 706 are unavailable within the current CU itself or in immediately neighboring CUs, they may be understood to include (i.e., be set to) padding values. Although the PU 708 is shown as 8x4 in size, this disclosure is not limited to any particular PU size.
[0074] The reference area 700 may include a top region 710, which may include rows 1 through N (N>1) of pixels. The reference area 700 may include a top-right region 712, which may include rows 1 through N. The reference area 700 may include a left region 714, which may include columns 1 through M (M>1) of pixels. The reference area 700 may include a bottom-left region 716, which may include columns 1 through M (M>1) of pixels. In an embodiment, N=M. The reference area 700 may be based on a chroma color format. For example, for 4:4:4 content, the reference area 700 may also have a width of 4 samples, while for 4:2:0 or 4:2:2 color formats, the reference area 700 may have a width of 2 samples. In an embodiment, if the top-right region 712 is available, only the 4x4 luma block in the top-right is included in the reference area 700. Similarly, if the bottom-left region 716 is available, only the 4x4 luma block in the bottom-right is included in the reference area 700. The reference area 700 may be adjusted accordingly based on the chroma color format. In other embodiments, the top region 710 may always have a width of one sample for both luma and chroma, while the left region 714 may have a width of four samples for luma.
[0075] 8 shows an example of a neighborhood 800 of luma samples 802 used to predict chroma samples. Neighborhood 800 is shown as an example 3×3 neighborhood. In some cases, neighborhood 800 may be larger or smaller than 3×3, and / or neighborhood 800 may be a shape other than a square, such as a non-square rectangle or diamond. Luma sample 802 is located within the center of neighborhood 800. Luma sample 802, labeled C to indicate it is the current luma sample being processed, is surrounded by neighboring luma samples 804, 806, 808, and 810, which are used to predict the chroma samples of luma sample 802. In the illustrated example, luma samples 804, 806, 808, and 810 are labeled using directional designations N, S, E, and W (i.e., north, south, east, and west), respectively, relative to the location of luma sample 802. Luma sample 802 and neighboring luma samples 804, 806, 808, and 810 together have values of the 5-tap spatial components used in CCCM prediction to calculate the predicted chroma sample of luma sample 802, which is expressed as predChromaVal=c0C+c1N+c2S+c3E+c4W+c5P+c6B, and the filter coefficients c i may be derived using one or more of the simplification techniques disclosed herein.
[0076] 9 shows exemplary resolutions of luma blocks and chroma blocks. As mentioned above, to ensure that appropriate luma samples are used to predict chroma samples for a given CU 900, it may be desirable to downsample (i.e., reduce the resolution of) the luma blocks of the CU being processed so that the resolution of the luma blocks of the CU being processed is the same as the resolution of the chroma blocks of the CU. For example, downsampling may be performed when the resolutions of the luma blocks and chroma blocks are initially provided in a format such as 4:2:0. However, if the resolutions of the luma blocks and chroma blocks of a given CU are already the same (e.g., 4:4:4), the downsampling operation for the CU may be skipped.
[0077] FIG. 10 shows an exemplary reference area 1000 used to derive inter-component prediction filter coefficients directly from non-downsampled luma samples. As shown in FIG. 10, type-0 chroma positions in 4:2:0 format are used, with triangles representing chroma samples and circles representing luma samples, certain of which are filled with a solid pattern or a solid color. The luma samples filled with solid color 1002 (black) correspond to luma samples that surround the central chroma sample to be predicted and may therefore be used to predict that central chroma sample. The luma samples filled with pattern 1004, along with the luma samples filled with solid color 1002, comprise the region of the reference area 1000 that may be used for the current CU being processed. The luma samples filled with solid color 1006 (white) correspond to padding regions of the reference area 1000. In that the luma and chroma components are formatted in 4:2:0, these blocks are not identical in size.
[0078] A typical CCCM prediction process requires downsampling the luma components (e.g., resulting in 4:4:4 formatting) and then applying a filter to the downsampled luma samples to derive filter coefficients, as two separate operations. However, embodiments of the present disclosure combine the operations performed as part of downsampling and filter application into a single operation, thereby enabling the deriving of filter coefficients directly from non-downsampled luma samples, and thus without downsampling the luma samples. Specifically, because downsampling can be considered a type of filtering itself, the calculations used to change the resolution of the luma samples are integrated with the calculations used for the filter applied to the luma samples. Using reference area 1000 as an example, luma samples filled with solid color 1002 may be used to predict central chroma samples based on the identification of these luma samples resulting from the combined operation without downsampling, as described above.
[0079] Further details of a technique for simplifying filter coefficient derivation for inter-component prediction will now be described. Figure 11 is a flowchart diagram of an example embodiment of a technique 1100 for simplifying filter coefficient derivation for inter-component prediction. The technique 1100 may be performed, in whole or in part, in a prediction stage of an encoder used to encode a video stream (e.g., intra / inter prediction stage 402) or in a prediction stage of a decoder used to decode a bitstream (e.g., intra / inter prediction stage 508).
[0080] Technique 1100 may be implemented as a software program that may be executed by a computing device, such as transmitting station 102 or receiving station 106. For example, the software program may include machine-readable instructions that may be stored in a memory, such as memory 204 or secondary storage 214, which, when executed by a processor, such as processor 202, may cause the computing device to perform technique 1100. Technique 1100 may also be implemented using dedicated hardware or firmware. For example, a hardware component, such as a hardware coder, may be configured to perform technique 1100. As described above, some computing devices may include multiple memories or processors, and the operations described in technique 1100 may be distributed using multiple processors, multiple memories, or both. For simplicity of explanation, technique 1100 is depicted and described herein as a series of steps or operations. However, steps or operations according to the present disclosure may be performed in various orders and / or simultaneously. Additionally, other steps or operations not presented and described herein may be used. Moreover, not all illustrated steps or acts may be required to implement the techniques in accordance with this disclosed subject matter.
[0081] At 1102, luma samples are identified to predict chroma samples. The luma samples may be in their original format and therefore not downsampled, as described above with respect to Figure 10. Alternatively, the luma values may be downsampled, as described above with respect to Figure 9.
[0082] At 1104, the filter coefficients of the CU in which the luma sample is located are determined. The filter coefficients are the CCCM prediction filter coefficients (i.e., the filter coefficients c i ). Determining the filter coefficients may include deriving the filter coefficients based on one or more previously coded, spatially neighboring regions, identifying the filter coefficients using one or more syntax elements signaled within the bitstream, or both. Deriving the filter coefficients includes minimizing the MSE between predicted chroma samples and reconstructed chroma samples within a reference area, such as reference area 700 shown in FIG. 7 or reference area 1000 shown in FIG. 10. During encoding, the filter coefficients are derived; however, during decoding, the filter coefficients may be derived and / or signaled. For example, signaling the filter coefficients may include explicitly or implicitly signaling the filter coefficients within the bitstream, such as within an adaptation parameter set, slice header, frame header, block header, or other structure available for storing syntax elements for use in decoding the encoded video data from the bitstream. In some cases, some but not all of the filter coefficients of a CU may be signaled. In such cases, the remaining filter coefficients may be derived as described above. For example, in such a case, a first subset of filter coefficients may be signaled and a second subset of filter coefficients may be derived.
[0083] In some implementations, filter coefficients may not be determined for some CUs. For example, filter coefficients may not be determined for CUs smaller than a threshold size (e.g., 8x8). In such cases where the current CU is smaller than the threshold size, technique 1100 may terminate without further processing the CU using CCCM prediction. In some such implementations, the threshold size check for the current CU may be performed before luma samples are identified, as described above. In some implementations, rather than skipping CCCM prediction entirely for CUs smaller than the threshold size, a smaller number of filter coefficients, c, may be used instead of the seven filter coefficients disclosed herein. i For example, in such a case, three filter coefficients may be used, with a first filter coefficient corresponding to the current position within the CU, a second filter coefficient corresponding to the square of the current position within the CU, and a third filter coefficient corresponding to a bias term (e.g., the bias term B described above).
[0084] At 1106, the bit precision of the filter coefficients is reduced to generate reduced filter coefficients. Reducing the bit precision of the filter coefficients includes reducing the number of bits used to store the values of the filter coefficients from a first number of bits (e.g., 22 bits) to a second number of bits (e.g., 6 or 8 bits). In some cases, reducing the bit precision of the filter coefficients includes right-shifting the filter coefficients by a particular number of bits, such as 14 or 16 bits, after the filter coefficients are derived with their initial bit precision (e.g., 22-bit accuracy). In such cases, an offset may be added based on the number of bits after the shift to achieve a rounding effect before the shift occurs. In some cases, rather than reducing the bit precision of the filter coefficients, a reduced bit precision may be determined and used to derive the filter coefficients in the above-described manner. However, doing so may result in greater savings in processing costs, but is also likely to result in reduced accuracy.
[0085] In some implementations, to ensure that the dynamic range used for the filter coefficients remains within a desired quality range, the values of the lowering filter coefficients may be further clipped using one or more thresholds. For example, the one or more thresholds may include a maximum clipping value and a minimum clipping value. If the lowering filter coefficient is less than the minimum clipping value, the lowering filter coefficient may be rounded up to the minimum clipping value. Similarly, if the lowering filter coefficient exceeds the maximum clipping value, the lowering filter coefficient may be rounded down to the maximum clipping value.
[0086] In some implementations, when deriving the filter coefficients, the filter coefficient corresponding to the DC value of the prediction (i.e., the bias term, denoted herein as B) may be derived after all other filter coefficients have been derived. That is, if the calculation of that filter coefficient requires only a shift in that the bias term is squared, then the derivation of that filter coefficient may not be subject to the aforementioned constraint on dynamic range.
[0087] At 1108, a predicted chroma sample is determined based on input values and the decimation filter coefficients of the inter-component (e.g., CCCM) prediction. Input values are identified for the current luma sample to use to predict the predicted chroma sample. The input values include the current luma sample, several neighboring luma samples of the current luma sample, and the bit precision of the video data being encoded or decoded. For example, the input value may correspond to 7 taps of a 7-tap filter used for CCCM prediction, which includes the current luma sample C, four adjacent luma samples N, S, E, and W, a nonlinear term P, and a bias term B, where the nonlinear term P is expressed as a power of C and is scaled to the sample value range of the content based on the bit precision (e.g., P=(C*C+midVal)>>bitDepth, where bitDepth represents the bit precision of the video content and midVal is the midpoint chroma value within that bit precision), and the bias term B is expressed as a scalar offset between the input and output and is set to the midpoint chroma value of the bit precision, similar to the offset term in CCLM prediction. The predicted chroma sample, represented by predChromaVal, can therefore be determined by calculating predChromaVal=c0C+c1N+c2S+c3E+c4W+c5P+c6B, where C, N, S, E, W, P, and B are input values for the current luma sample, and c0, c1, c2, c3, c4, c5, and c6 are reduction filter coefficients.
[0088] The current luma sample and several neighboring luma samples are identified using a filter. In one embodiment, the filter may be applied to a 3x3 neighborhood within the CU containing the current luma sample, as shown in Figure 8. The filter may have a plus shape as used in the embodiment of Figure 8, so that the several neighboring luma samples include four neighboring luma samples labeled N, S, E, and W as shown in Figure 8, but other shape embodiments may be used, and neighborhoods of other sizes may be used. For example, an x-shaped filter may be used for a 3x3 neighborhood, a diamond-shaped filter may be used for a 5x5 neighborhood, etc. In some implementations, a filter with a number of coefficients below a threshold may be used for CUs less than a certain size (e.g., 8x8), and / or a filter with a number of coefficients above a threshold may be used for CUs above that certain size.
[0089] In some implementations, to improve prediction accuracy, after a predicted chroma sample is determined, adaptive clipping may be performed based on chroma values in a reference area. For example, the maximum and minimum reconstructed chroma values in the reference area may be obtained. Then, a valid range based on these maximum and minimum values may be determined. Once a predicted chroma sample is determined, the predicted chroma sample may be clipped based on the valid range so that the predicted chroma sample remains within the valid range. For example, if the maximum and minimum values are represented by C_max and C_min, the valid range may be represented by [C_min*(1-w),C_max*(1+w)], where the weighting factor w is predefined or signaled in the bitstream.
[0090] In some implementations, if the autocorrelation matrix calculated as part of the filter coefficient derivation process is singular, the average value of the reconstructed chroma values within the reference area may be used as the predicted chroma sample.
[0091] At 1110, the predictive chroma sample is encoded (e.g., into a bitstream) or decoded (e.g., for output in an output video stream) based on whether technique 1100 is performed during encoding or decoding. In some implementations, the predictive chroma sample may be reconstructed for use in predicting one or more other chroma samples within a region (e.g., within the same CU or PU where the current luma sample is located and to which the predictive chroma sample corresponds).
[0092] The encoding and decoding aspects described above illustrate some examples of encoding and decoding techniques, but it will be understood that the terms encoding and decoding as used in the claims may refer to compression, decompression, conversion, or any other data processing or modification.
[0093] The word "embodiment" is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as an "embodiment" should not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "embodiment" is intended to present a concept in a concrete manner. As used in this application, the term "or" is intended to mean an inclusive "or / or" rather than an exclusive "or / or." That is, unless otherwise indicated or clearly indicated by context, a statement such as "X includes A or B" is intended to refer to any of its natural inclusive permutations. That is, if X includes A, if X includes B, or if X includes both A and B, then "X includes A or B" is satisfied in each of the foregoing cases. Additionally, the articles "a" and "an," as used in this application and the appended claims, should generally be construed to mean "one or more" unless otherwise indicated or clearly indicated by context to refer to the singular form. Furthermore, throughout this disclosure, use of the term "embodiment" or "one embodiment" is not intended to refer to the same embodiment unless that embodiment is specifically described as such.
[0094] Implementations of the transmitting station 102 and / or receiving station 106 (and algorithms, methods, instructions, etc. stored on and / or executed by the transmitting station 102 and / or receiving station 106, and also executed by the encoder 400 and decoder 500, or other encoders or decoders disclosed herein) may be realized in hardware, software, or any combination thereof. Hardware may include, for example, computers, intellectual property (IP) cores, application specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers, microprocessors, digital signal processors, or any other suitable circuitry. In the claims, the term "processor" should be understood to include any of the foregoing hardware, alone or in combination. The terms "signal" and "data" are used interchangeably. Furthermore, portions of the transmitting station 102 and the receiving station 106 need not necessarily be implemented in the same way.
[0095] Furthermore, in one aspect, for example, the transmitting station 102 or the receiving station 106 may be implemented using a general-purpose computer or processor having a computer program that, when executed, performs any of the respective methods, algorithms, and / or instructions described herein. Additionally or alternatively, a special-purpose computer / processor may be utilized, which may include other hardware for performing any of the methods, algorithms, or instructions described herein.
[0096] The sending station 102 and the receiving station 106 may be implemented, for example, in computers within a videoconferencing system. Alternatively, the sending station 102 may be implemented in a server, and the receiving station 106 may be implemented in a device separate from the server, such as a handheld communication device. In this case, the sending station 102 may encode content to create an encoded video signal and transmit the encoded video signal to the communication device. The communication device may then decode the encoded video signal. Alternatively, the communication device may decode content stored locally on the communication device, e.g., content not transmitted by the sending station 102. Other suitable sending and receiving implementation schemes are also possible. For example, the receiving station 106 may be a typical fixed personal computer rather than a portable communication device.
[0097] Furthermore, all or part of the embodiments of the present disclosure may take the form of a computer program product accessible, for example, from a computer-usable or computer-readable medium. A computer-usable or computer-readable medium may be, for example, any device that can tangibly store, store, communicate, or transfer a program used by or in connection with any processor. The medium may include, for example, electronic, magnetic, optical, electromagnetic, or semiconductor devices. Other suitable media may also be used.
[0098] The foregoing embodiments and other aspects have been set forth to facilitate an understanding of the present disclosure and are not intended to limit the present disclosure. Rather, the present disclosure is intended to cover various modifications and equivalent structures that fall within the scope of the appended claims, which scope is to be accorded the broadest interpretation permitted by law so as to encompass all such modifications and equivalent structures.
Claims
1. 1. A method for simplifying filter coefficient derivation for inter-component prediction, comprising: determining filter coefficients for a current coding unit based on samples in a reference area of the current coding unit; reducing the bit precision of the filter coefficients to generate reduced filter coefficients; determining a prediction chroma sample for the current luma sample based on an input value for the current luma sample and based on the lowpass filter coefficients; encoding or decoding the predicted chroma samples; A method comprising:
2. Reducing the bit precision of the filter coefficients to generate the lowered filter coefficients comprises:
2. The method of claim 1, comprising reducing a number of bits used to store the values of the filter coefficients from a first number of bits to a second number of bits, wherein the values of the lowered filter coefficients are stored using the second number of bits.
3. The method of claim 2 , wherein the values of the low pass filter coefficients are clipped using one or more thresholds.
4. clipping the low pass filter coefficients according to a minimum clipping value and a maximum clipping value; The method of claim 3, comprising:
5. 5. The method of claim 1, wherein the filter coefficient corresponding to the bias term is determined after all other filter coefficients have been determined.
6. The method of claim 1 , wherein the filter coefficients are determined based on non-downsampled luma samples of the reference area.
7. The method of claim 1 , wherein the filter coefficients are determined based on the current coding unit having a size greater than a threshold.
8. The method of claim 1 , wherein the number of filter coefficients is limited when the size of the current coding unit is less than a threshold.
9. The method of claim 7 or 8, wherein the threshold value corresponds to an 8x8 chroma sample unit.
10. 5. The method of claim 1, wherein the first number of filter coefficients is determined based on the current coding unit having a size greater than a threshold, and the second number of filter coefficients, which is smaller than the first number, is determined based on the current coding unit having a size smaller than the threshold.
11. Determining the filter coefficients includes: The method of claim 1 , further comprising deriving at least a portion of the filter coefficients based on reconstructed chroma samples in the reference area.
12. Determining the filter coefficients includes:
5. The method of claim 1, 2, 3, or 4, comprising decoding one or more syntax elements related to the filter coefficients signaled in a bitstream.
13. The method of claim 1 , wherein the predicted chroma samples are clipped based on chroma values in the reference area using one or more thresholds.
14. clipping the predicted chroma samples according to a minimum clipping value, a maximum clipping value, and a weighting factor; 14. The method of claim 13, comprising:
15. 1. An apparatus for simplifying filter coefficient derivation for inter-component prediction, the apparatus comprising: Memory and Executing instructions stored in said memory, Get the samples in the reference area of the current coding unit, reducing the bit precision of filter coefficients determined based on the samples to generate reduced filter coefficients; Identifying an input value for the current luma sample; determining a predicted chroma sample for the current luma sample based on the input value and the lowpass filter coefficients; encoding or decoding the predicted chroma samples; and a processor configured to:
16. The processor executes the instructions to 16. The apparatus of claim 15, configured to clip the low pass filter coefficients according to a minimum clipping value and a maximum clipping value.
17. The processor executes the instructions to The apparatus of claim 15 , configured to clip the predicted chroma samples based on chroma values in the reference area.
18. The apparatus of claim 15 , wherein when an autocorrelation matrix calculated in connection with the determination of the filter coefficients is singular, an average of reconstructed chroma values within the reference area is used as the predicted chroma sample.
19. 1. A non-transitory computer-readable storage device comprising program instructions executable by one or more processors, the program instructions, when executed, causing the one or more processors to perform operations for simplifying filter coefficient derivation for inter-component prediction, the operations comprising: reducing the bit precision of the filter coefficients determined for the current coding unit to generate reduced filter coefficients; Identifying an input value for the current luma sample; determining a prediction chroma sample for the current luma sample based on the input value and the low pass filter coefficients; encoding or decoding the predicted chroma samples; a non-transitory computer-readable storage device,
20. 20. The non-transitory computer-readable storage device of claim 19, wherein the reduction filter coefficients are clipped according to minimum and maximum values, and the predicted chroma samples are clipped based on chroma values in a reference area that includes samples used to determine the filter coefficients.
Citation Information
Patent Citations
Cross-component adaptive loop filter for chroma
JP2022539656A
Apparatus, method, and computer program for video encoding and decoding
JP2025525513A
Systems and methods for reducing a reconstruction error in video coding based on a cross-component correlation
US20220248007A1
Cross-component adaptive loop filter for chroma
US20220312006A1
An apparatus, a method and a computer program for video coding and decoding
WO2024012761A1