Method, apparatus, and computer program product for video encoding and decoding

By transforming autocorrelation matrices into triangular form and applying back-substitution, the method addresses computational inefficiencies in determining filter parameters for cross-component prediction, enhancing video encoding and decoding efficiency and accuracy.

JP2025539647APending Publication Date: 2025-12-05NOKIA TECHNOLOGIES OY
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2025535118
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-15
Filing Date
2023-11-09
Publication Date
2025-12-05

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies face challenges in efficiently determining filter parameters for cross-component prediction, particularly in large autocorrelation matrices, which can lead to numerical instability and computational inefficiencies.

Method used

A method is introduced to determine filter parameters by generating a mixing matrix combining an autocorrelation matrix with cross-correlation vectors, reducing it to a triangular form using row-wise matrix operations, and applying back-substitution to solve for filter coefficients, with mechanisms to prevent division by zero and control dynamic range.

Benefits of technology

This approach enhances computational efficiency and stability in determining filter parameters, improving the accuracy and speed of video encoding and decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025539647000001_ABST
    Figure 2025539647000001_ABST
Patent Text Reader

Abstract

The present embodiment relates to a method for encoding and a technical apparatus for implementing the method, which includes: processing an input video / image (310); determining a set of filter coefficients (320), where the method includes determining a mixing matrix including an autocorrelation matrix and at least one cross-correlation vector (330); modifying the determined mixing matrix into a triangular formula by determining at least one scale parameter between a source row and a destination row in the mixing matrix (340); determining the modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row (350); determining a set of filter parameters from the triangular formula of the mixing matrix (360); and using the set of filter coefficients in a filter (370).
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present solution relates generally to video encoding and decoding, and more particularly to determining a set of filter parameters to be used in encoding / decoding. [Background technology]

[0002] This section is intended to provide a background or context for the invention(s) recited in the claims. The description herein may include concepts that could be pursued, but not necessarily those previously conceived or pursued. Therefore, unless otherwise indicated herein, nothing described in this section is prior art to the description and claims of this application, and no admission of prior art is made by inclusion in this section.

[0003] A video coding system may include an encoder that converts input video into a compressed representation suitable for storage / transmission, and a decoder that can restore the compressed video representation to a viewable form. The encoder may discard some information in the original video sequence to represent the video in a more compact form, for example, to allow storage / transmission of the video information at a lower bitrate than would otherwise be necessary. Summary of the Invention

[0004] The scope of protection sought for various embodiments of the invention is set out in the independent claims. Any embodiments and features described herein that do not fall within the scope of the independent claims should be interpreted as useful examples for understanding various embodiments of the invention.

[0005] Various aspects include a method, an apparatus, and a computer-readable medium with a computer program stored thereon, which are characterized by what is set forth in the independent claims. Various embodiments are disclosed in the dependent claims.

[0006] According to a first aspect, there is provided an apparatus comprising: means for processing an input video / image; and means for determining a set of filter coefficients, wherein a mixing matrix including an autocorrelation matrix and at least one cross-correlation vector is determined, the determined mixing matrix is ​​modified into a triangular formula by determining at least one scale parameter between a source row and a destination row in the mixing matrix, the modified destination row in the mixing matrix is ​​determined by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row, and the set of filter parameters is determined from the triangular formula of the mixing matrix, wherein the apparatus comprises means for using the set of filter coefficients in a filter.

[0007] According to a second aspect, there is provided a method comprising: processing an input video / image; determining a set of filter coefficients, the set of filter coefficients comprising determining a mixing matrix comprising an autocorrelation matrix and at least one cross-correlation vector; modifying the determined mixing matrix into a triangular formula by determining at least one scale parameter between a source row and a destination row in the mixing matrix; determining the modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; determining the set of filter parameters from the triangular formula of the mixing matrix; and using the set of filter coefficients in a filter.

[0008] According to a third aspect, there is provided an apparatus including at least one processor and a memory including computer program code, wherein the memory and the computer program code are configured, using the at least one processor, to cause the apparatus to at least: process an input video / image; determine a set of filter coefficients, the set of filter coefficients including determining a mixing matrix including an autocorrelation matrix and at least one cross-correlation vector; modifying the determined mixing matrix into a triangular formula by determining at least one scale parameter between source rows and destination rows in the mixing matrix; determining the modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; determining the set of filter parameters from the triangular formula of the mixing matrix; and using the set of filter coefficients in a filter.

[0009] According to a fourth aspect, there is provided a computer program product comprising computer program code configured, when executed on at least one processor, to cause a device or system to process an input video / image; determine a set of filter coefficients, the set of filter coefficients comprising: determining a mixing matrix comprising an autocorrelation matrix and at least one cross-correlation vector; modifying the determined mixing matrix into a triangular formula by determining at least one scale parameter between source rows and destination rows in the mixing matrix; determining the modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; determining the set of filter parameters from the triangular formula of the mixing matrix; and using the set of filter coefficients in a filter.

[0010] According to an embodiment, the mixing matrix is ​​modified by respective means by scaling at least one value of the determined row using a scaling parameter, a rounding parameter, and a bit shifting parameter, the scaling parameter, the rounding parameter, and the bit shifting parameter being determined from the diagonal elements of the mixing matrix of the determined row.

[0011] According to an embodiment, the set of filter coefficients is used in a convolutional cross-component prediction, where luma samples (luminance samples) are used as input and predicted chroma samples (color difference samples) are used as output.

[0012] According to an embodiment, the mixing matrix is ​​determined to include two cross-correlation vectors, a first cross-correlation vector associated with the cross-correlation between the luma samples and the first chroma samples and a second cross-correlation vector associated with the cross-correlation between the luma samples and the second chroma samples.

[0013] According to an embodiment, a set of filter parameters is determined from the triangular expression of the mixing matrix using a backsubstitution process.

[0014] According to an embodiment, the back substitution involves at least one of the filter parameters being set equal to an element in the mixing matrix.

[0015] According to an embodiment, when the determined mixing matrix is ​​modified into a triangular form, for at least one diagonal sample, it is checked whether the value of the diagonal sample or the absolute value of the diagonal sample is less than a predetermined threshold, and if so, the value of the diagonal sample is set equal to the predetermined threshold.

[0016] According to an embodiment, when the determined mixing matrix is ​​modified into a triangular form, for at least one diagonal sample, it is checked whether the value of the diagonal sample or the absolute value of the diagonal sample is less than a predetermined threshold, and if it is less than the predetermined threshold, the modifying process is terminated and the filter coefficients are set to a set of predetermined values.

[0017] According to an embodiment, the processing is encoding or decoding.

[0018] According to an embodiment, a computer program product is embodied on a non-transitory computer-readable medium.

[0019] Various embodiments will now be described in more detail with reference to the accompanying drawings. [Brief explanation of the drawings]

[0020] [Figure 1] FIG. 1 illustrates an encoding process according to an embodiment. [Figure 2] FIG. 1 illustrates a decoding process according to an embodiment. [Figure 3] 1 is a flowchart illustrating a method according to an embodiment. [Figure 4] 1 illustrates an apparatus according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0021] The following description and drawings are illustrative and should not be construed as unnecessarily limiting. Specific details are provided for a thorough understanding of the disclosure. However, in certain instances, well-known or conventional details are not described so as not to obscure the description. Reference to one or embodiments of the present disclosure may, but need not, refer to the same embodiment, and such reference means at least one of the embodiments.

[0022] Reference herein to "one embodiment" or "embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure.

[0023] In the following, some embodiments are described in the context of one video encoding configuration. However, it should be noted that the embodiments are not necessarily limited to this particular configuration. The embodiments relate to cross-component filter parameter calculation using row-based matrix operations.

[0024] The Advanced Video Coding standard (which may be abbreviated as AVC or H.264 / AVC) was developed by the Joint Video Team (JVT) of the Video Coding Experts Group (VCEG) of the Telecommunications Standardization Sector of the International Telecommunication Union (ITU-T) and the Moving Picture Experts Group (MPEG) of the International Organization for Standardization (ISO) / International Electrotechnical Commission (IEC). The H.264 / AVC standard was published by both parent standardization organizations and is also known as ITU-T Recommendation H.264 and ISO / IEC International Standard 14496-10, also known as MPEG-4 Part 10 Advanced Video Coding (AVC). Multiple versions of the H.264 / AVC standard exist, each incorporating new extensions or features. These extensions include scalable video coding (SVC) and multiview video coding (MVC).

[0025] The High Efficiency Video Coding standard (which may be abbreviated as HEVC or H.265 / HEVC) was developed by VCEG and the MPEG Joint Video Coding Team (JCT-VC). The standard was published by both parent standardization organizations and is referred to as ITU-T Recommendation H.265 and ISO / IEC International Standard 23008-2, also known as MPEG-H Part 2 High Efficiency Video Coding (AVC). Extensions to H.265 / HEVC include scalable, multiview, 3D, and fidelity range extension, which may be referred to as SHVC, MV-HEVC, 3D-HEVC, and REXT, respectively. References in this description to H.265 / HEVC, SHVC, MV-HEVC, 3D-HEVC, and REXT are made for the purposes of understanding definitions, and structures or concepts in these standard specifications should be understood to refer to the latest versions of these standards that were available prior to the filing date of this application, unless otherwise indicated.

[0026] Versatile Video Coding (VVC, H.266, or H.266 / VVC) is a video compression standard developed as a successor to HEVC. VVC is specified in ITU-T Recommendation H.266, or equivalently in ISO / IEC 23090-3, also known as MPEG-I Part 3.

[0027] The specifications for the AV1 bitstream format and decoding process were developed by the Alliance of Open Media (AOM), which published the AV1 specification in 2018. AOM is reportedly working on the AV2 specification.

[0028] Some important definitions, bitstream and coding structures, and concepts of H.264 / AVC, HEVC, VVC, and / or AV1, as well as some of their extensions, are described in this section as examples of video encoders, decoders, encoding methods, decoding methods, and bitstream structures on which embodiments may be implemented. Although aspects of various embodiments are not limited to H.264 / AVC, HEVC, VVC, and / or AV1, or their extensions, the description is provided for one possible basis on which the embodiments may be partially or fully realized.

[0029] A video codec may include an encoder that converts input video into a compressed representation suitable for storage / transmission, and a decoder that can restore the compressed video representation to a viewable form. The compressed representation may be called a bitstream or video stream. The video encoder and / or video decoder may also be separate from each other, i.e., they need not form a codec. The encoder may discard some information in the original video sequence to represent the video in a more compact form (i.e., at a lower bitrate). The term "(de)coder" refers to the encoder and / or decoder.

[0030] Hybrid video codecs, such as ITU-T H.263, H.264 / AVC, and HEVC, may encode video information in two stages. First, pixel values ​​within a certain picture region (or "block") are predicted, for example, by motion compensation (finding and indicating an area in one of the previously coded video frames that closely corresponds to the block being coded) or by spatial (using pixel values ​​surrounding the block being coded in a specified manner). Then, the prediction error, i.e., the difference between the predicted block of pixels and the original block of pixels, is coded. This may be done by transforming the pixel value difference using a specified transform (e.g., a discrete cosine transform (DCT) or a variant thereof), quantizing the coefficients, and entropy coding the quantized coefficients. By varying the fidelity of the quantization process, an encoder can control the balance between the precision of the pixel representation (picture quality) and the size of the resulting coded video representation (file size or transmission bit rate). An encoding process according to an embodiment is shown in FIG. 1.

[0031] Figure 1 shows the image to be encoded (I n ), the predicted representation of the image block (P' n ), prediction error signal (D n ), the reconstructed prediction error signal (D' n ), the preliminary reconstructed image (I' n ), the final reconstructed image (R' n ), transformation (T) and inverse transformation (T -1 ), quantization (Q) and dequantization (Q -1 ), entropy coding (E), reference frame memory (RFM), inter prediction (P inter ), intra prediction (P intra ), mode selection (MS) and filtering (F).

[0032] In some video codecs, such as H.265 / HEVC, a video picture is divided into coding units (CUs) that cover an area of ​​the picture. A CU consists of one or more prediction units (PUs), which define a prediction process for samples within the CU, and one or more transform units (TUs), which define a prediction error coding process for samples within the CU. A CU may consist of a square block of samples with a size selectable from a predefined set of possible CU sizes. A CU with the largest allowable size may be referred to as an LCU (Largest Coding Unit) or CTU (Coding Tree Unit), and a video picture is divided into non-overlapping CTUs. A CTU may be further divided into combinations of smaller CUs, for example, by recursively dividing the CTU and the resulting CU. Each resulting CU may have at least one PU and at least one TU associated with it. Each PU and TU may be further divided into smaller PUs and TUs to improve the granularity of the prediction and prediction error coding processes, respectively. Each PU has prediction information associated with it (e.g., motion vector information for an inter-predicted PU and intra-prediction direction information for an intra-predicted PU) that defines what type of prediction should be applied to the pixels within that PU. Similarly, each TU is associated with information describing the prediction error decoding process for samples within the TU (e.g., including DCT coefficient information). Whether prediction error coding is applied to each CU may be signaled at the CU level. If there is no prediction error residual associated with a CU, it may be considered that there is no TU for the CU. The division of an image into CUs and the division of a CU into PUs and TUs may be signaled in the bitstream to enable a decoder to reproduce the intended structure of these units.

[0033] The basic unit of input to an encoder and output of a decoder is, in most cases, a picture. A picture provided as input to an encoder may also be called a source picture, and a picture decoded by a decoder may also be called a decoded picture or a reconstructed picture.

[0034] The source picture and the decoded picture each consist of one or more sample arrays, such as one of the following sets of sample arrays: - Luma (Y) only (monochrome) - Luma and two chroma (YCbCr or YCgCo) - Green, Blue, and Red (GBR, also known as RGB) - Arrays representing other unspecified monochrome or tristimulus color samplings (e.g., YZX, also called XYZ)

[0035] In the following, these arrays may be referred to as luma (i.e., L or Y) and chroma, and the two chroma arrays may be referred to as Cb and Cr, regardless of the actual color representation method in use. The actual color representation method in use may be indicated, for example, in the encoded bitstream, for example, using HEVC's Video Usability Information (VUI) syntax or the like. A component may be defined as an array or a single sample from one of the three sample arrays (luma and two chroma), or a single sample of the arrays that make up a picture in monochrome format.

[0036] A picture may be defined to be either a frame or a field. A frame contains a matrix of luma samples and possibly corresponding chroma samples. A field is a set of alternating sample rows of a frame and may be used as an encoder input if the source signal is interlaced. The chroma sample array may be absent (and thus monochrome sampling may be used), or the chroma sample array may be subsampled compared to the luma sample array.

[0037] The decoder reconstructs the output video by applying prediction means similar to the encoder to form a predictive representation of pixel blocks (using motion or spatial information created by the encoder and stored in the compressed representation), and prediction error decoding (the inverse operation of prediction error encoding, which restores the quantized prediction error signal in the spatial pixel domain). After applying the prediction and prediction error decoding means, the decoder sums the prediction and prediction error signals (pixel values) to form an output video frame. The decoder (and encoder) may also apply additional filtering means to improve the quality of the output video before passing the output video for display and / or storing it as a predictive reference for upcoming frames in the video sequence. The decoding process according to an embodiment is shown in Figure 2.

[0038] Figure 2 shows the predicted representation of an image block (P' n ), the reconstructed prediction error signal (D' n ), the preliminary reconstructed image (I' n ), the final reconstructed image (R' n ), inverse transformation (T -1 ), inverse quantization (Q -1 ), entropy decoding (E -1 ), Reference Frame Memory (RFM), Prediction (either Inter or Intra) (P), and Filtering (F).

[0039] Instead of or in addition to techniques that use sample value prediction and transform coding to indicate coded sample values, color palette-based coding may be used. Palette-based coding refers to a family of techniques in which a palette, i.e., a set of colors and associated indices, is defined, and the value of each sample in a coding unit is represented by indicating its index in the palette. Palette-based coding can achieve good coding efficiency for coding units with a relatively small number of colors (e.g., image regions representing computer screen content such as text or simple graphics). To improve the coding efficiency of palette coding, different types of palette index prediction techniques may be used, or palette indices may be run-length coded to enable efficient representation of larger homogeneous image regions. Also, escape coding may be used when a CU contains sample values ​​that do not rotate within the CU. Escape-coded samples are transmitted without reference to any palette index. Instead, their values ​​are indicated independently for each escape-coded sample.

[0040] Motion information may be indicated using a motion vector associated with each motion-compensated image block in a video codec. Each of these motion vectors represents the displacement of an image block in a picture to be coded (at the encoder side) or decoded (at the decoder side) and a predicted source block in one of the previously coded or decoded pictures. To efficiently represent motion vectors, the motion vector may be coded differently for the block to which the predicted motion vector belongs. The predicted motion vector may be created in a predefined manner, for example, by calculating the median of the encoded or decoded motion vectors of neighboring blocks. Another way to create a motion vector prediction is to generate a list of candidate predictions from neighboring and / or co-located blocks in a temporal reference picture and signal the selected candidate as the motion vector predictor. In addition to predicting a motion vector value, a reference index of a previously coded / decoded picture may be predicted. The reference index may be predicted from neighboring and / or co-located blocks in a temporal reference picture. Furthermore, high-efficiency video codecs may employ an additional motion information encoding / decoding mechanism, often called a merging / merge mode, in which all motion field information, including a motion vector and corresponding reference picture index for each available reference picture list, is predicted and used without any modification / correction. Similarly, predicting motion field information is performed using motion field information of neighboring blocks and / or co-located blocks in a temporal reference picture, and the used motion field information is signaled between a list of motion field candidate lists filled with the motion field information of the available neighboring blocks / co-located blocks.

[0041] A bitstream may be defined as a sequence of bits or a sequence of syntax structures. A bitstream format may constrain the order of syntax structures within a bitstream.

[0042] A syntax element may be defined as an element of data represented in a bitstream. A syntax structure may be defined as zero or more syntax elements present together in a bitstream in a specified order.

[0043] In some encoding formats or standards, the bitstream may be in the form of a Network Abstraction Layer (NAL) unit stream or byte stream, which forms a representation of coded pictures and associated data that form one or more coded video sequences.

[0044] A NAL unit may be defined as a syntactic structure containing bytes containing an indication of the type of data that follows and that data in the form of RBSPs, interspersed with start code emulation prevention bytes if necessary. A Raw Byte Sequence Payload (RBSP) may be defined as a syntactic structure containing an integer number of bytes encapsulated in a NAL unit. An RBSP has the form of a string of data bits containing syntax elements that are either empty or followed by an RBSP stop bit and followed by zero or more trailing bits equal to 0.

[0045] A NAL unit includes a header and a payload. The NAL unit header indicates, among other things, the type of the NAL unit.

[0046] In some encoding formats, such as AV1, a bitstream may contain a sequence of open bitstream units (OBUs). An OBU contains a header and a payload, where the header identifies the type of the OBU. Furthermore, the header may contain the size of the payload in bytes.

[0047] The phrase "along the bitstream" (e.g., "indicating along the bitstream") or "along the coding unit of the bitstream" (e.g., "indicating along the coding tile") may be used in the claims and described embodiments to refer to transmission, signaling, or storage in a manner in which "out-of-band" data is associated with, but not included in, the bitstream or coding unit, respectively. The phrase "decoding" along the bitstream or along the coding unit of the bitstream or the like may refer to decoding referenced out-of-band data (which may be obtained from out-of-band transmission, signaling, or storage) associated with the bitstream or coding unit, respectively. For example, the phrase "along the bitstream" may be used when the bitstream is included in a container file, such as a file conforming to the ISO Base Media File Format, and specific file metadata is stored in the file in a manner that associates the metadata with the bitstream, such as a box in a sample entry for the track that includes the bitstream, a sample group for the track that includes the bitstream, or a timed metadata track associated with the track that includes the bitstream.

[0048] The video codec may support motion-compensated prediction from one source image (uni-prediction) and two sources (bi-prediction). In the case of uni-prediction, a single motion vector is applied, and in the case of bi-prediction, two motion vectors are signaled, and the motion-compensated predictions from the two sources are averaged to create the final sample prediction. In the case of weighted prediction, the relative weights of the two predictions may be adjusted, or a signaled offset may be added to the prediction signal.

[0049] In addition to applying motion compensation for inter-picture prediction, a similar approach can be applied to intra-picture prediction, where a displacement vector indicates where blocks of samples can be copied from the same picture to form a prediction of the block being coded or decoded. This type of intra-block copying method can significantly improve coding efficiency when repetitive structures, such as text or other graphics, are present in a frame.

[0050] The prediction residual after motion compensation or intra prediction may first be transformed with a transform kernel (such as a DCT) and then encoded. The reason for this is that there is often still some correlation between the residuals, and transforms can often help to reduce this correlation and provide more efficient coding.

[0051] A video encoder may utilize a Lagrangian cost function to find an optimal coding mode, e.g., a desired macroblock mode and associated motion vector. This type of cost function uses a weighting factor λ to combine the (exact or estimated) image distortion caused by a lossy coding method with the (exact or estimated) amount of information needed to represent pixel values ​​in an image region. C=D+λR (formula 1) where C is the Lagrangian cost to be minimized, D is the image distortion (e.g., mean squared error) using the modes and motion vectors considered, and R is the number of bits required to represent the data necessary to reconstruct the image block at the decoder (including the amount of data to represent the candidate motion vectors).

[0052] Scalable video coding refers to a coding structure in which a single bitstream can contain multiple representations of content at different bit rates, resolutions, or frame rates. In these cases, the receiver can extract the desired representation depending on its characteristics (e.g., the resolution that best matches the display device). Alternatively, a server or network element can extract a portion of the bitstream sent to the receiver depending on, for example, the network characteristics or the receiver's processing capabilities. A scalable bitstream may consist of a "base layer" that provides the lowest quality video available and one or more enhancement layers that, when received and decoded together with lower layers, enhance the video quality. To improve coding efficiency for an enhancement layer, the coded representation of that layer may depend on lower layers. For example, motion and mode information for an enhancement layer may be predicted from lower layers. Similarly, pixel data from lower layers may be used to create predictions for the enhancement layer.

[0053] A scalable video codec for quality scalability (also called signal-to-noise ratio or SNR) and / or spatial scalability may be implemented as follows: For the base layer, a conventional non-scalable video encoder and decoder are used. The reconstructed / decoded picture of the base layer is included in a reference picture buffer for the enhancement layer. In H.264 / AVC, HEVC, and similar codecs that use reference picture lists for inter prediction, the base layer decoded picture may be inserted into a reference picture list to encode / decode an enhancement layer picture similar to the decoded reference picture of the enhancement layer. As a result, the encoder may choose the base layer reference picture as the inter-prediction reference and may indicate its use, for example, in a reference picture index in the coded bitstream. The decoder decodes, for example, from a reference picture index, from the bitstream that the base layer picture is used as the inter-prediction reference for the enhancement layer. When a decoded base layer picture is used as a prediction reference for the enhancement layer, it is called an inter-layer reference picture.

[0054] In addition to quality scalability, the following scalability modes exist: ● Spatial scalability: Base layer pictures are coded at a lower resolution than enhancement layer pictures. ● Bit depth scalability: Base layer pictures are coded at a lower bit depth (eg, 8 bits) than enhancement layer pictures (eg, 10 or 12 bits). ● Chroma format scalability: Enhancement layer pictures provide higher chroma fidelity (eg, encoded in 4:4:4 chroma format) than base layer pictures (eg, 4:2:0 format).

[0055] In all of the above scalability cases, base layer information can be used to encode the enhancement layer to minimize additional bitrate overhead.

[0056] Scalability can be enabled in two basic ways: either by introducing a new coding mode to perform pixel value or syntax prediction from lower layers of the scalable representation, or by placing lower layer pictures in a higher layer reference picture buffer (decoded picture buffer, DPB). The first approach is more flexible and therefore may offer better coding efficiency in most cases. However, the second, reference frame-based scalability approach can be implemented very efficiently with minimal changes to a single-layer codec while still achieving most of the available coding efficiency improvements. A reference frame-based scalability codec can be implemented by simply handling DPB management by external means and utilizing the same hardware or software implementation for all layers.

[0057] To be able to take advantage of parallel processing, an image may be divided into independently codable and decodable image segments (slices or tiles). In this description, a "slice" may refer to an image segment consisting of a number of elementary coding units that are processed in a default encoding or decoding order, and a "tile" may refer to an image segment that is defined, at least to some extent, as a rectangular image area that is processed as an individual frame.

[0058] Video may be encoded in YUV or YCbCr color spaces, as these color spaces are found to reflect some properties of the human visual system and allow for lower quality representation of the Cb and Cr channels, as human perception is less sensitive to the chrominance fidelity that these channels represent.

[0059] Some video encoding tools perform filtering operations. The filtering operation, for example, convolves a set of reference samples with a set of filter parameters to output a predicted value for a certain sample in a picture. In some cases, the filter parameters may be predetermined or signaled in the bitstream. In other cases, such as when cross-component linear model (CCLM) or cross-component convolutional model (CCCM) prediction is used, the parameters are calculated using a set of reference samples at both the encoder and the decoder. Generally, calculating such filter parameters involves the inversion of an autocorrelation matrix, which is a computationally difficult operation. Also, when there are many filter parameters to be determined, the size of the autocorrelation matrix becomes large, which may cause numerical stability issues (overflow or underflow).

[0060] Filter parameters for filters used in video coding are calculated in different ways. For example, CCLM in VVC / H.266 calculates its parameters by identifying two luma sample values ​​and corresponding chroma sample values ​​and then using those two sample pairs to determine the sloe and offset parameters. A different variant of CCLM is used in Enhanced Compression Model 6 (ECM6), where a least mean squares method is used to find the parameters. For CCCM prediction in ECM6, an autocorrelation matrix is ​​generated and decomposed into a triangular matrix using a method similar to LDL decomposition, followed by solving for the filter coefficients through a sequence involving two backsubstitution and scaling steps.

[0061] This embodiment aims to determine a set of filter parameters by generating a mixing matrix that combines an autocorrelation matrix with one or more cross-correlation vectors, and reducing the generated mixing matrix to a diagonal form using row-wise matrix operations. The process is completed with a single set of back-substitution operations for each set of filter parameters being solved. In addition, a pre-emptive mechanism is disclosed that is applied after one iteration of the row-wise matrix operations to avoid division by zero during further iterations and during the back-substitution stage.

[0062] In the method, according to the present embodiment, the above set of filter parameters may be used, for example, by a cross-component prediction filter of a video and image codec. It should be understood that the set of parameters may also be used to determine parameters for other types of filters, such as filters used in motion compensated prediction or filters used to refine sample values ​​on sample block boundaries.

[0063] The determined filter parameters may be represented by a vector x. x=[x0 x N-1 ] T

[0064] The filter parameters may be convolved with an input vector z, which may include, for example, luma input samples, and may be written as: z=[z0 z N-1 ] T

[0065] The resulting value p may represent, for example, a predicted sample value in one of the chrominance channels and may be calculated using the filter parameters x and input samples z as follows:

[0066]

number

[0067] The input vector z may be configured to include, for example, luminance sample values, a function of luminance sample values ​​or a constant, or a combination thereof. Including a constant in the input vector z corresponds to adding a constant to the output of the filter p. Such a constant may be referred to as a bias term or bias parameter and may be used to represent an offset between the input and output values.

[0068] The filter parameters x may generally be calculated by finding a solution to a set of equations that may be expressed in matrix form as follows: Ax=y where A represents the autocorrelation matrix of the determined set of input reference samples or "training" samples used in the process, and y represents the cross-correlation vector between the input training samples and the corresponding output training samples. The items in the autocorrelation matrix A (size N x N) and the cross-correlation vector vector y with N values ​​can be calculated, for example, as follows:

[0069]

number

[0070] To solve the equation Ax=y for the filter parameters x, a mixing matrix B containing elements of both the autocorrelation matrix A and the cross-correlation vector y can be created as follows:

[0071]

number

[0072] This can be triangularized (also called "diagonalized") using methods such as Gaussian elimination by multiplying the elements of a particular row and subtracting the resulting value of another row until the mixing matrix B is reduced to its upper triangular form B', where all elements below the main diagonal are zero.

[0073]

number

[0074] By creating a mixing matrix containing multiple cross-correlation vectors, the parameters of two or more filters can be calculated simultaneously. This can be useful when calculating luma for chroma cross-component prediction filters for two chroma sample blocks when both of those chroma sample blocks use the same luma reference sample. This allows the same autocorrelation matrix A to be used in both cases, and thus a single mixing matrix may reduce the row-wise operations required for the mixing matrix triangulation process by half. In such cases, the mixing matrix C is calculated using the luma-based autocorrelation matrix A and the cross-correlation vectors y for each of the color channels Cb and Cr. cb and y cr can be constructed using the following:

[0075]

number

[0076] After triangulation,

number

[0077] Since the mixing matrix C has been reduced to its upper triangular form, its submatrix A has been reduced to its upper triangular form A', and the two filters x cb and x cr The filter coefficients for can be solved with back substitution using two trigonometric systems. A'x cb =y' cb A'x cr =y' cr

[0078] A mixing matrix of dimensions N × N+2 (N rows correspond to the rows of the autocorrelation matrix A, N+2 columns correspond to the N columns of the autocorrelation matrix A, and two additional columns correspond to the two cross-correlation vectors y cb and y crThe triangulation corresponding to (e.g.,) can be calculated using the following exemplary pseudocode. for(i = 0; i < N - 1; i++) { for(j = i + 1; j < N; j++) { scale = divide(a[j][i], a[i][i]) for(k = i + 1; k < N + 2; k++) { a[j][k] -= multiply(scale, a[i][k]) } } }

[0079] The division and multiplication functions can be implemented in various ways considering, for example, floating-point, fixed-point, or integer embodiments, or mixtures thereof. For example, multiplication may be implemented using a fixed-point embodiment, and the division operation may be implemented using the approximated fixed-point technique proposed in the JVET document JVET-AB0174.

[0080] For the sake of brevity, row-direction pointers src and dst can be used to explain the row-based nature of the process. In the following example, src points to the i-th row of the mixing matrix, and dst points to each of the rows below it in turn. For each destination j indicated by dst, a scale value can be calculated based on the ratio of the i-th elements of the destination and source rows. By multiplying the source row by the scale and subtracting the result from the destination j, the i-th element of the j-th row is pushed to 0. To reduce the number of computational operations used in the process, the calculation of that element can be omitted since the result is determined to be zero. Similarly, for all values of k < i, since it has already been determined that they are zero in both the source row i and the destination row j, there is no need to calculate any element of k < i in the j-th destination row. for(i = 0; i < N - 1; i++) { src = a[i] for(j = i + 1; j < N; j++) { dst=a[j] scale=divide(dst[i],src[i]) for(k=i+1;k <N+2;k++) { dst[k]-=multiply(scale,src[k]) } } } That is, Iterate over the rows of the confusion matrix (the source rows) { Iterate over the rows below the source row (destination rows) { Calculate the scale between the destination and source rows Multiply the source row by the scale Subtract the multiplied source rows from the destination rows } }

[0081] To avoid division by zero and to keep the diagonal values ​​of the autocorrelation matrix A positive even after triangularization, different approaches can be used: As shown below, a check for the diagonal elements of the next processing row can be made after iterating over the rows below the current source row. for(i=0;i <N-1;i++) { for(j=i+1;j <N;j++) { scale=divide(a[j][i],a[i][i]) for(k=i+1;k <N+2;k++) { a[j][k]-=multiply(scale,a[i][k]) } } a[i+1][i+1]=a[i+1][i+1] <zeroThr?zeroThr:a[i+1][i+1] } That is, Iterate over the rows of the confusion matrix (the source rows) { Iterate over the rows below the source row (destination rows) { Calculate the scale between the destination and source rows Multiply the source row by the scale Subtract the multiplied source rows from the destination rows } Set the diagonal elements of the next source row to a value not less than zeroThr }

[0082] This ensures that the diagonal elements a[i+1][i+1] of the next source row i+1 have a value of at least zeroThr, which may be determined to be, for example, 1, or some other positive number greater than zero. As another example, the absolute values ​​of the diagonal elements of the next source row may be used for comparison with the threshold value zeroThr.

[0083] In some embodiments, during triangularization, it may be desirable to know whether the autocorrelation matrix A is degenerate (or non-invertible) and whether a solution to the simultaneous equations does not exist. At any point during triangularization, if the rows of the autocorrelation matrix A are all zero (or equivalently, each element of the row is less than zeroThr) and each element of the cross-correlation vector is non-zero (or greater than zeroThr), the autocorrelation matrix A can be considered degenerate and elimination can be terminated early. In such a case, a fixed set of filter coefficients (e.g., all zeros) can be output. Similarly, if the diagonal elements of the autocorrelation matrix A are zero or negative, the matrix can be considered degenerate and elimination can be terminated early.

[0084] After the mixing matrix is ​​reduced to a triangular form, the filter parameters x cb and x cr A backsubstitution operation can be used to solve for . This can be done, for example, as shown by the following pseudocode: x[N-1]=divide(a[N-1][col],a[N-1][N-1]) for(i=N-2;i>=0;i--) { val=a[i][col] for(j=i+1;j <N;j++) { val-=multiply(a[i][j],x[j]) } x[i]=divide(val,a[i][i]) }

[0085] As shown above, if all division operations use the diagonal elements a[i][j] of the triangularized mixing matrix as denominators and are done during the triangularization stage as suggested above, no additional checks for zero-valued denominators need to be made. The column parameter col determines which column of the triangularized mixing matrix is ​​used as the target vector in the backsubstitution process. Making the above example selection, the cross-correlation vector y cb is the N-th column of the mixing matrix, and the cross-correlation vector y cr as the N+1-th column of the mixing matrix, col is the x filter used for sample prediction of the first color component Cb. cb When solving for the coefficients, N can be set, and col is the x filter used to predict the samples of the second color component, Cr. cr It can be set to N+1 when solving for coefficients.

[0086] During the triangulation process, the dynamic range of intermediate values ​​in the mixing matrix may be controlled in different ways. For example, values ​​in a particular row of the mixing matrix may be shifted up or down to avoid overflow, which can occur when the scale parameter becomes large due to the difference between the values ​​in source row i and destination row j. An example of such a control mechanism is given in the following pseudocode. In this example, the log2 operation refers to the base 2 logarithm of the input and may also include truncating the output value to an integer value. The difference between the source row scale srcScale and the destination row scale dstScale is used to determine the effective scale value used in the row-wise multiplication. Also, before the multiplication operation, the kth value of destination row j (a[j][k]) is updated by shifting it down by difScale bits to compensate for the modified scale value. for(i=0;i <N-1;i++) { for(j=i+1;j <N;j++) { dstScale=log2(a[j][i]<0?-a[j][i]:a[j][i]) srcScale=log2(a[i][i]<0?-a[i][i]:a[i][i]) difScale=dstScale-srcScale>0?dstScale-srcScale:0 difRound=difScale?1<<(difScale-1):0 scale=divide(a[j][i],a[i][i])< <difScale) for(k=i+1;k <N+2;k++) { a[j][k]=(a[j][k]+difRound)>>difScale a[j][k]-=multiply(scale,a[i][k]) } } a[i+1][i+1]=a[i+1][i+1] <zeroThr?zeroThr:a[i+1][i+1] }

[0087] It should be understood that different techniques can also be used for dynamic range control. For example, when calculating the scale parameter, instead of shifting down the value a[i][i] of the source row to achieve a scale close to 1, the value a[j][i] of the destination row can be shifted down. Similarly, when subtracting the scaled version of the source row from the destination row, the value of the source row can be shifted up to compensate for the correction of the scale parameter.

[0088] In general, since the mixing matrix represents a system of linear equations, the rows of the matrix may be further multiplied, or columns scaled by a multiplication operation may be added to other rows to enable additional functionality or to control the dynamic range of the matrix elements.

[0089] As a further example, the rows of the mixing matrix can be normalized so that the diagonal elements have a value of 1 (or equivalently 1<<DECIM_BITS, or 2^DECIM_BITS, where DECIM_BITS is the number of bits representing the fractional part of a fixed-point number). This can be useful because subsequent steps of the process may require division by the diagonal elements. If the diagonal elements are forced to have a value of 1 each, the division operation becomes trivial and the division can be replaced by taking the value of the numerator as the output of the division operation. In such a case, the result of the triangulation operation can be given as follows.

[0090]

Number

[0091] <000This may be calculated, for example, using the following pseudocode: In this case, because the diagonal elements are determined to be all 1, there is no need to calculate the diagonal elements, and operations that require diagonal element values, such as division in the backsubstitution process, can ignore the diagonal elements and use a value of 1 instead. First, the diagonal value is determined in the i-th row of the mixing matrix. The value may be clipped to a particular range to avoid division by zero. For example, it may be determined to have a minimum value of 1 or 10 if fixed-point arithmetic is used, or a different minimum value such as 0.001 or 0.0001 if floating-point arithmetic is used. Following this, the set of remaining values ​​in that row is scaled by the determined diagVal, but the resulting values ​​of elements with index k less than i+1 are known without having to calculate them (because elements with index k less than i have been pushed to zero, and elements with index k equal to i have been pushed to have a value of 1 because they would be divided by themselves if an arithmetic operation were performed). for(i=0;i <N;i++) { diagVal=a[i][i]<1?1:a[i][i] for(k=i+1;k <N+2;k++) { a[i][k]=divide(a[i][k],diagVal) } for(j=i+1;j <N;j++) { scale=a[j][i] for(k=i+1;k <N+2;k++) { a[j][k]-=multiply(scale,a[i][k]) } } } That is, Iterate over the rows of the confusion matrix (the source rows) { Scale the source row using the diagonal elements of the row Iterate over the rows below the source row (destination rows) { Determine the scale value to be equal to the leading value of the destination line Multiply the source row by the scale Subtract the multiplied source rows from the destination rows } }

[0092] Division operations are often difficult to implement in practice, and different approximations can be used to speed up the operations. For example, JVET contribution JVET-AB0174 teaches how division operations can be approximated by determining scaling parameters (scale), rounding parameters (round), and bit shift parameters (shift). In such a case, the division of numerators (num) and denominators (denom) can be approximated as follows: result=(num*scale+round)>>shift Here, the scale, round, and shift parameters depend on the denominator denominator, and may generally be determined by a function that estimates them using a desired method with a desired accuracy (e.g., as proposed in JVET-AB0174), which may here be given as the output of the function getDivParams. scale,round,shift=getDivParams(denom)

[0093] Using that notation, and considering all elements of row i in the mixing matrix to be divided by the same value diagVal, it may be sufficient to calculate the parameters needed to approximate a division operation only once per row. The actual scaling operation may advantageously be implemented using only multiplication, addition, and bit-shifting operations, as shown in the following exemplary pseudocode: for(i=0;i <N;i++) { diagVal=a[i][i]<1?1:a[i][i] scale,round,shift=getDivParams(diagVal) for(k=i+1;k <N+2;k++) { a[i][k]=(a[i][k]*scale+round)>>shift } for(j=i+1;j <N;j++) { scale=a[j][i] for(k=i+1;k <N+2;k++) { a[j][k]-=multiply(scale,a[i][k]) } } }

[0094] Because the above processing for the mixing matrix causes the diagonal elements of that matrix to have a value of 1, the backsubstitution process may also be simplified to account for this restriction. More specifically, division by diagonal element a[i][i] may advantageously be replaced with a simple substitution operation. For example, a filter parameter x[N-1] may be directly set equal to the corresponding a[N-1][col] in the mixing matrix. x[N-1]=a[N-1][col] for(i=N-2;i>=0;i--) { val=a[i][col] for(j=i+1;j <N;j++) { val-=multiply(a[i][j],x[j]) } x[i]=val } Or, without the intermediate parameter val, x[N-1]=a[N-1][col] for(i=N-2;i>=0;i--) { x[i]=a[i][col] for(j=i+1;j <N;j++) { x[i]-=multiply(a[i][j],x[j]) } }

[0095] As an alternative to the backsubstitution process, the parameter vector x can also be calculated directly from the mixing matrix if the upper triangular elements of the matrix are pushed to zero with an additional row-based scale and subtraction operation. This can be implemented, for example, using the following pseudocode: for(i=N-2;i>=0;i--) { for(j=i;j>=0;j--) { scale=a[j][i+1] for(k=N;k <N+2;k++) { a[j][k]-=multiply(scale,a[i+1][k]) } } }

[0096] The resulting mixing matrix, in this example, is in diagonal form with only non-zero elements on the diagonal of the matrix and has an extended column N or more (columns N and N+1 for two filters), and because all diagonal elements have a value of 1, the solution for the filter coefficient vector is trivial and the resulting filter parameters can be read directly from the extended column. For example, in an example where two filters are calculated, one for the first color component Cb and one for the second color component Cr, the filter coefficients can be assigned as follows: x cb =y' cb x cr =y' cr

[0097] The filter parameters can be read from the expanded columns N and N+1 as shown in the pseudocode below: This represents a simple back-substitution, where the filter parameters are directly set equal to the corresponding elements in the mixing matrix. for(i=0;i <N;i++) { xCb[i]=a[i][N] xCr[i]=a[i][N+1] }

[0098] It should be understood that the mixing matrix format is given here as an example to clarify the operations used to calculate the filter coefficients in the proposed method. In practice, the mixing matrix may be implemented in different ways. For example, instead of arranging the data in a matrix format, the elements may be maintained in a row or column vector format, or the elements may be maintained as separate items. Also, some of the elements may be stored in a matrix format, and some of the elements may be stored in a vector format or as separate elements. For example, the autocorrelation matrix A and its triangularization result A' may be stored in a matrix format, and the cross-correlation vector y after triangularization of the autocorrelation matrix A may be stored in a matrix format. cb and y cr and their new form y' cb and y' cr may be stored in vector format.

[0099] It should also be understood that in practice, the triangularization of the autocorrelation matrix A using row-based scaling operations can be performed with additional reordering of the rows (partial pivoting). Changing the row order does not change the result of the simultaneous equations. However, such reordering may be beneficial for the numerical stability of practical implementations.

[0100] Some of the examples show how triangularization sets the elements of the matrix below the main diagonal to zero, but of course the operation can also be applied to a reversed row order to produce a triangular matrix with zeros above the main diagonal.

[0101] In an embodiment, a set of cross-component prediction filter coefficients is calculated at least in part by reducing the matrix to its triangular form using a set of row-wise scaling operations.

[0102] In an embodiment, the set of filter coefficients is determined using matrix triangulation, which includes calculating a scaling parameter between elements of a determined row of a matrix and elements of another row of the matrix, multiplying at least one element of the determined row of the matrix by the scaling parameter, and subtracting the result from at least one element of another row of the matrix.

[0103] In an embodiment, at least two sets of cross-component prediction filter coefficients are calculated by combining an autocorrelation matrix with two or more cross-correlation vectors and reducing the formed mixing matrix into a triangular form using a row-based scaling operation.

[0104] In an embodiment, triangularization may be terminated early if the autocorrelation matrix is ​​deemed degenerate (i.e., non-invertible). In such cases, a fixed set of filter coefficients (e.g., each coefficient is zero) is produced.

[0105] A method according to an embodiment is shown in Figure 3. The method generally includes processing an input video / image 310, determining a set of filter coefficients 320, including determining a mixing matrix including an autocorrelation matrix and at least one cross-correlation vector 330, modifying the determined mixing matrix into a triangular formula by determining at least one scale parameter between a source row and a destination row in the mixing matrix 340, determining a modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row 350, determining a set of filter parameters from the triangular formula of the mixing matrix 360, and using the set of filter coefficients in a filter 370.

[0106] An apparatus according to an embodiment includes: means for processing an input video / image; means for determining a set of filter coefficients, the set including: means for determining a mixing matrix including an autocorrelation matrix and at least one cross-correlation vector; means for modifying the determined mixing matrix into a triangular formula by determining at least one scale parameter between a source row and a destination row in the mixing matrix; means for determining the modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; means for determining a set of filter parameters from the triangular formula of the mixing matrix; and means for using the set of filter coefficients in a filter.

[0107] The means includes at least one processor and a memory containing computer program code, and the processor may further include processor circuitry, the memory and computer program code configured, with the at least one processor, to cause the apparatus to perform the method of Figure 3 according to various embodiments.

[0108] An example of a data processing system for an apparatus is shown in Figure 4. Some functions may be performed on a single physical device. For example, all computational procedures may be performed on a single processor, if desired. The data processing system includes a main processing unit 100, memory 102, storage device 104, input devices 106, output devices 108, and a graphics subsystem 110, all connected together via a data bus 112.

[0109] The main processing unit 100 is a conventional processing unit configured to process data within a data processing system. The main processing unit 100 may include or be embodied as one or more processors or processor circuits. The memory 102, storage device 104, input device 106, and output device 108 may include conventional components as recognized by those skilled in the art. The memory 102 and storage device 104 store data in the data processing system 100.

[0110] Computer program code resides in memory 102 for implementing, for example, the method illustrated in the flowchart of FIG. 3 according to various embodiments. Input device 106 inputs data into the system, and output device 108 receives data from the data processing system and forwards the data, for example, to a display. Data bus 112 is a conventional data bus and is shown as a single line, but may be any combination of a processor bus, PCI bus, graphical bus, ISA bus, etc. Accordingly, those skilled in the art will readily recognize that the apparatus may be any data processing device, such as a computing device, personal computer, server computer, mobile phone, smartphone, or Internet access device, e.g., Internet tablet computer.

[0111] Various embodiments may be implemented with the aid of computer program code residing in a memory and causing an associated device to perform a method. For example, a device may include circuits and electronic circuitry for handling, receiving, and transmitting data, computer program code in a memory, and a processor that, when executing the computer program code, causes the device to perform the features of the embodiments. Furthermore, a network device, such as a server, may include circuits and electronic circuitry for handling, receiving, and transmitting data, computer program code in a memory, and a processor that, when executing the computer program code, causes the network device to perform the features of the various embodiments.

[0112] Where desired, different functions described herein may be performed in different orders and / or concurrently with one another. Furthermore, where desired, one or more of the functions and embodiments described above may be optional or combined.

[0113] Although various aspects of the embodiments are set out in independent claims, other aspects include other combinations of features from the described embodiments and / or the dependent claims with features of the independent claims, and not just the combinations explicitly set out in the claims.

[0114] While the above describes exemplary embodiments, it is also noted herein that these descriptions should not be construed in a limiting sense. Rather, several variations and modifications may be made without departing from the scope of the present disclosure, as defined in the appended claims.

Claims

1. 1. An apparatus comprising: means for processing the input video / images; means for determining a set of filter coefficients, a mixing matrix is ​​determined, comprising an autocorrelation matrix and at least one cross-correlation vector; the determined mixing matrix is ​​triangularly modified by determining at least one scale parameter between source and destination rows in the mixing matrix; a modified destination row in the mixing matrix is ​​determined by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; means for determining the set of filter parameters from the triangular expression of the mixing matrix; means for using said set of filter coefficients in a filter; An apparatus comprising:

2. 2. The apparatus of claim 1, further comprising: means for modifying the mixing matrix by scaling at least one value of the determined row using a scaling parameter, a rounding parameter, and a bit-shifting parameter, wherein the scaling parameter, the rounding parameter, and the bit-shifting parameter are determined from diagonal elements of the mixing matrix of the determined row.

3. The apparatus of claim 1 or 2, wherein the set of filter coefficients is used in a convolutional cross-component prediction, with luma samples used as input and predicted chroma samples used as output.

4. 4. The apparatus of claim 3, further comprising: means for determining the mixing matrix to include two cross-correlation vectors, a first cross-correlation vector associated with cross-correlation between the luma samples and a first chroma sample, and a second cross-correlation vector associated with cross-correlation between the luma samples and a second chroma sample.

5. The apparatus of any one of claims 1 to 4, further comprising means for determining the set of filter parameters from the triangular expression of the mixing matrix using a backsubstitution process.

6. The apparatus of claim 5 , wherein the back-substitution includes at least one of the filter parameters being set equal to an element in the mixing matrix.

7. 7. The apparatus of claim 1, wherein, when the determined mixing matrix is ​​modified into the triangular form, the apparatus comprises: means for checking, for one diagonal sample, whether a value of the diagonal sample or an absolute value of the diagonal sample is less than a predetermined threshold; and means for setting the value of the diagonal sample equal to the predetermined threshold if the value is less than the predetermined threshold.

8. 7. The apparatus of claim 1, wherein, after modifying the determined mixing matrix into the triangular form, the apparatus comprises: means for checking, for one diagonal sample, whether a value of the diagonal sample or an absolute value of the diagonal sample is less than a predetermined threshold; and means for terminating the modifying process and setting the filter coefficients to a set of predetermined values ​​if the value or absolute value of the diagonal sample is less than the predetermined threshold.

9. The apparatus according to any one of claims 1 to 8, wherein the processing is encoding or decoding.

10. 1. A method comprising: - processing the input video / images; determining a set of filter coefficients, Determining a mixing matrix comprising an autocorrelation matrix and at least one cross-correlation vector; modifying the determined mixing matrix into a triangular form by determining at least one scale parameter between source and destination rows in the mixing matrix; determining a modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; determining the set of filter parameters from the triangular expression of the mixing matrix; determining the set of filter coefficients, using said set of filter coefficients in a filter; A method comprising:

11. 1. An apparatus comprising at least one processor and a memory containing computer program code, the memory and the computer program code configured to cause the apparatus, using the at least one processor, to perform at least: - processing the input video / images; determining a set of filter coefficients, Determining a mixing matrix comprising an autocorrelation matrix and at least one cross-correlation vector; modifying the determined mixing matrix into a triangular form by determining at least one scale parameter between source and destination rows in the mixing matrix; determining a modified destination row in the mixing matrix by multiplying the source row with the scale parameter and subtracting the scaled source row from the destination row; determining the set of filter parameters from the triangular expression of the mixing matrix; determining the set of filter coefficients, using said set of filter coefficients in a filter; An apparatus configured to cause

Citation Information

Patent Citations

  • Multi-input adaptive filter based on a combination of sum-modified Laplacian filter indexing and quadtree partitioning.

    JP2013539287A

  • Image encoding / decoding method and apparatus using in-loop filtering

    JP2021505074A

  • Filter coefficient derivation simplification for cross-component prediction

    WO2024081011A1