Next Article in Journal
Webcam Eye Tracking for Monitoring Visual Attention in Hypothetical Online Shopping Tasks
Previous Article in Journal
Finite Element Analysis of Proposed Self-Locking Joint for Modular Steel Structures
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

An Analytic Transform Kernel Derivation Method for Video Codecs

Department of Information and Communication Engineering, Chosun University, Gwangju 61452, Korea
*
Author to whom correspondence should be addressed.
Appl. Sci. 2021, 11(19), 9280; https://doi.org/10.3390/app11199280
Submission received: 25 August 2021 / Revised: 29 September 2021 / Accepted: 29 September 2021 / Published: 6 October 2021

Abstract

:
In the standardization of versatile video coding (VVC), discrete cosine transform (DCT)-2, discrete sine transform (DST)-7, and DCT-8 are regarded as the primary transform kernels. However, DST-4 and DCT-4 can also be considered as the transform kernels instead of using DST-7 and DCT-8 owing to their effectiveness in smaller resolution test sequences. To implement these different block size transform kernels, a considerable amount of memory has to be allocated. Moreover, memory consumption to store different block size transform kernels is regarded as a major issue in video coding standardization. To address this problem, a common sparse unified matrix concept is introduced in this study, where any block size transform kernel matrix can be obtained after some mathematical operations. The proposed common sparse unified matrix saves approximately 80% of the static memory by storing only a few transform kernel elements for DCT-2, DST-7, and DCT-8. Full-required transform kernels are derived using the stored transform kernels and generated unit-element matrices and a permutation matrix. The static memory required is only for 1648 elements instead of 8180 elements, each with 8-bit precision. The defined common sparse unified matrix is composed of two parts: a unified DST-3 matrix and a grouped DST-7 matrix. The unified DST-3 matrix is used to derive different points of DCT-2 transform kernels, and the grouped DST-7 matrix is used to derive different points of DST-7 and DCT-8 transform kernels. The new technique of grouping concept is introduced, which shows the relationship between different rows of DST-7 transform kernels with various block sizes. The proposed grouping concept supports the fast algorithm of DST-7 by implementing the proposed method of the “one group one feature” principle. The simulation was conducted using the VTM-3.0 reference software under common test conditions. The simulation result of the all intra (AI) configuration is Y = 0.00%, U = −0.02%, V = 0.00% with an encoding time of 100%, and a decoding time of 100%. Similarly, the simulation results of random access (RA) configuration are Y = −0.01%, U = 0.09%, V = 0.06%, and the encoding and decoding times are 101% and 100%, respectively. The simulation result of the low delay B (LDB) configuration is Y = 0.01%, U = 0.08%, and V = −0.27%, for encoding and decoding times of 101% and 100%, respectively.

1. Introduction

Various standardization works for video compression have been performed, including H.261, H.262, H.263 [1], H.264/advanced video coding [2], and H.265/ high-efficiency video coding (HEVC) [3]. Recently, the standardization process of versatile video coding (VVC) [4], which aims to provide a significant improvement in compression performance over the existing HEVC standard and aid the deployment of higher quality video services and emerging applications, such as 360° omnidirectional immersive multimedia and high-dynamic-range video, has been standardized. In the standardization of VVC, discrete cosine transform-2 (DCT-2), discrete sine transform-7 (DST-7), and DCT-8 are regarded as three vital primary transform kernels [5,6,7,8,9], which can also be termed as the multiple transform set (MTS) [10,11]. The benefits of MTS are usually to enlarge transform sets when necessary, that is, reduced distortion in the R-D trade-off as complex residuals exploit the multiple transforms and reduce transform sets when necessary. This means reduced bitrate in the R-D trade-off by avoiding wasting bits signaling the transforms when necessary [12]. Similarly, DST-7 approximates the optimal transform better than DCT-2 along the prediction direction, that is, for intra prediction residuals [11].
Along with these three transform kernels, DST-4 and DCT-4 can also be regarded as the replacement of DST-7 and DCT-8, respectively, because they exhibit similar kernel behavior and show better coding efficiency for smaller resolution sequences [13].
The used transform kernel elements are derived based on the following mathematical equations.
DCT-2
C 2 n , k = 2 N ε k c o s π 2 n + 1 k 2 N
where ε k = 1 2   k = 0 1   o t h e r w i s e
DCT-4
C 4 n , k = 2 N c o s π 2 n + 1 2 k + 1 4 N
DCT-8
C 8 n , k = 2 2 N 1 c o s π 2 n + 1 2 k + 1 4 N 2
DST-4
S 8 n , k = 2 2 N ε k s i n π 2 n + 1 k + 1 2 N
where, ε k = 1 2   k = N 1 1   o t h e r w i s e
DST-7
S 7 n , k = 2 2 N + 1 s i n π 2 k + 1 n + 1 2 N + 1
where N represents the block size.
Several design aspects of HEVC transform coding are inherited in the VVC codec. In addition to the conventional DCT-2, alternate transform types like DST-7 and DCT-8 are also adopted in the VVC, which is generally referred to as primary transform because it is first applied to the predicted residual pixels and named as contrast meaning of the secondary transform [14] in VVC. The size of DCT-2 ranges from 4-point to 64-point, whereas that of DST-7 and DCT-8 ranges from 4-point to 32-point. The kernels elements defined in VVC are composed of 8-bit signed integer values. The additional integer transform kernels defined in VVC are derived by scaling the floating-point transform kernel with 64 N , where N represents the transform size [14]. For the alignment of the worst-case multiplications per coefficients with HEVC, for 64-point DCT-2 and 32-point DST-7/DCT-8, only the first 32 and 16 low-frequency coefficients are kept, and the higher frequency coefficients are zeroed out respectively, which is also considered in the last coefficient position coding and the coefficient group scanning [15].
All the kernels elements are stored in the reference software VTM-3.0 in an 8-bit representation. A single 64-point DCT-2 kernel matrix is newly defined in VCC, and other sizes of DCT-2 are kept unchanged with HEVC. Other individual sets of 4-, 8-, 16-, and 32-point DST-7 and DCT-8 kernel matrices are also stored in the reference software [16], adding together to the storage of 8180 elements which is a prime concern for the memory. Unlike the conventional video codec such as HEVC, the partial butterfly structure for the transform of DST-7 and DCT-8 is avoided in the transform process to be compatible with the virtual pipeline process and low delay in hardware design, which is thoroughly investigated and agreed in the standardization works of VVC. Instead, the fast transform method is designed to support the dual implementation of matrix multiplication and butterfly operation [17]. Thus, all kernel elements for matrix multiplication operation should be stored in the codec devices or software. However, the number of multiplication and addition is significantly reduced even though matrix operations are performed with matrix multiplications by utilizing several features of DST-7 and DCT-8 kernels [17]. Table 1 shows the use of MTS transform kernels based on the prediction modes and block sizes in VVC.
Table 1 shows the use of multiple transform set (MTS) for intra and inter prediction. In the intra prediction, various prediction tools have been introduced in VVC, which are intra-sub-partition (ISP) and normal prediction. For ISP, the combinations of DCT-2 and DST-7 transform kernels are used as the horizontal and vertical transform types with a transform block size of 4 × 4 up to 16 × 16. For the normal intra-prediction modes, the combinations of DCT-2 and DST-7 transform kernel sets are used, based on the prediction mode and comparison of width and height of the block sizes, ranging from 4 to 16 pixels in accordance with the spec text [15]. The 16-point or 32-point DST-7 is applied to non-zero coefficients transform blocks in either the horizontal or vertical direction. For inter prediction, using sub-block transform (SBT) [19], as a prediction tool, the combinations of DST-7 and DCT-8 are applied on the partitioned transform unit block for a block size up to 32 pixels, depending on the cu_sbt_horizontal_flag and cu_sbt_vertical_flag [15] in VTM-3.0.
Despite significant coding gain improvement owing to the usage of MTS for different block sizes and kernels, memory storage of kernel elements is regarded as one of the crucial issues for the standardization of VVC. In MTS, DST-4 and DCT-4 can be used as a replacement for the DST-7 and DCT-8 transform kernels, respectively, owing to their relatively easier kernel derivation by sub-sampling of even and odd rows of higher-order DCT-2 transform kernels [20].
DST-4/DCT-4 provides significant improvement for lower resolution test sequences, whereas the use of DST-7 and DCT-8 provides significant results for all resolution test sequences; however, the derivation of different points DST-7 and DCT-8 transform kernels cannot be achieved by subsampling the larger block size DCT-2 transform kernels. Hence, separate memory must be allocated for the storage of these transform kernels, which results in the memory issue in VVC. The total number of elements for which memory has to be allocated is 8180 elements with 8-bit precision. To address this scenario, various proposals have been presented in VVC.
In [21], a 64 × 64 compound orthonormal transform (COT) matrix is introduced, which comprises two aspects: (1) for 4-point and 8-point DST-4/DCT-4 transform kernels replacing DST-7/DCT-8 transform kernels, and (2) 16-point and 32-point DST-7/DCT-8 transform kernels embedded into 64-point DCT-2. It is implemented using a single 64 × 64 matrix, which has a total of 8180 elements and provides all three types of transform kernels. In [21], 2-, 4-, 8-, 16-, and 32-point DCT-2 can be extracted from the even rows 64-point DCT-2, whereas 4-, 8-point DST-4/DCT-4 and 16- and 32-point DST-7/DCT-8 can be extracted from the odd rows 64-point DCT-2. The metrics of the operation counts and minimum bit-precision remain the same as VTM-3.0. With this approach of using a single 64 × 64 matrix, 33% of transform storage, i.e., 2.7 kilobytes of memory, can be saved compared to VTM-3.0. Although the proposed method provides good gains, it fails to provide the precise 64-point DCT-2 because some of the kernel values of DST-7/DCT-8 are embedded in some rows of 64-point DCT-2. Owing to the mismatch of the proposed 64-point DCT-2 transform kernel with the original DCT-2 transform kernel, coding performance improvement is not significant when only the DCT-2 transform kernel is used. Conversely, the fast computation algorithm [22] for the 64-point DCT-2 transform cannot be used. Similarly, the number of transform kernel matrices is also increased to 5, that is DCT-2, DST-7, DCT-8, DST-4, and DCT-4, even though it was aimed to use only three transform kernels.
In [23], a 64-point unified matrix was proposed. It is implemented using the 64 × 64 unified matrix with a total of 8180 elements and provides all three types of transform with all block sizes from 4 × 4 to 64 × 64 by sampling a subset of coefficients and basis vectors of larger transforms. This method is designed with an 8-bit representation. Using simple calculations from the proposed matrix, different kernel types with different sizes were derived. This method uses 131,072 bits amount of kernel elements which account for 16 kilobytes of memory for the total bits amount and is 19% lesser than the total memory of bits used in VTM-3.0. Experimental results show that no gain is observed for all intra (AI) configurations for higher resolution test sequences, that is, class A1 and A2, but they comprise some gain for lower resolution test sequences, that is, classes B, C, D, and E. For random access (RA) and low delay B (LDB) configurations, the overall result shows no gain. The losses are because of the mismatch between the original and derived DST-7 and DCT-8 transform kernels.
Similarly, in [24], the adjustment stage concept for memory reduction was introduced. The adjustment stages are defined as sparse block-band orthogonal matrices and are similar to filters with small numbers of taps. It is proposed to approximate different sizes and types of cosine and sine transform such as DCT-5, DCT-8, DST-1, and DST-7 by applying different adjustment matrices (stages). The major drawback of this method is that the number of multiplications increases by using these adjustment stages, and the normalized values also differ for different transform kernels, which results in a mismatch with the original transform kernels. A transform adjustment filter (TAF) was introduced in [25], which is similar to the adjustment stage in [24]. A sparse matrix is used as a preprocessor to the partial butterfly DCT-2 algorithm. It approximates the DCT-8 and DST-7 with an adjustment stage followed by DCT-2. The DCT-8/DST-7 kernels are approximated by the combination of a block band matrix and a DCT-2 kernel. The size-16, size-32, and size-64 adjustment matrices require the overall 356 8–bit coefficients. Also, the adjustment stage is efficiently implemented using the SIMD instructions. Symmetries are applied for the 32-point and 64-point adjustment matrix having the storage requirement of 93 and 189 8-bit coefficients, respectively, whereas, for the 16-point adjustment matrix, 74 coefficients are required. All the adjustment matrix coefficients require 8-bit storage. This method reduces the complexity of the DST-7/DCT-8 transform and reduces the memory usage by storing only the different point DCT-2 transform kernels. Although the number of TAFs is reduced compared to [24], the total number of multiplications increases, i.e., total multiplication required is 160, 482, and 1468 for 16-, 32- and 64-point, respectively. This is because additional multiplication with the TAF has to be performed, and the normalization values of TAF are also not identical, thus resulting in the mismatch of the derived transform kernels with the original transform kernels.
In this study, an analytical derivation of the transform kernel using a common sparse unified matrix is introduced. The proposed method reduces the total amount of memory for the MTS kernels by storing only 1648 elements instead of 8180 elements with 8-bit precision. The transform kernels used in this study were DCT-2, DST-7, and DCT-8. Using the proposed method, DST-4 and DCT-4 transform kernels can also be achieved without affecting the memory. Similarly, the proposed method supports the implementation of the fast algorithm of DCT-2 [22] and DST-7 [17]. Figure 1 shows the proposed common sparse unified matrix, composed of two parts: Unified DST-3 matrix (U) and grouped DST-7 matrix. The U matrix is composed of different block sizes of DST-4 and is used to derive different block sizes of DCT-2 transform kernels. It stores 1368 elements with 8-bit precision. Similarly, grouped DST-7 is used to derive different block sizes of DST-7 transform kernels. It comprises P, Q, R, and S matrices, which are different selected rows from 32-point, 16-point, 8-point, and 4-point DST-7 transform kernels. It stores 280 elements with 8-bit precision. Hence, the total memory allocation must be appointed for only 1648 elements for the overall common sparse unified matrix.
The remainder of this paper is organized as follows. In Section 2, the proposed MTS kernel derivation method is described. In Section 3, the experimental results are provided, and the concluding statements are provided in Section 4.

2. Proposed Common Sparse Unified Matrix

Figure 1 shows the proposed common sparse unified matrix. It comprises two parts: a unified DST-3 matrix (U) and a grouped DST-7 matrix. The unified DST-3 matrix (U) is used to derive the different sizes of DCT-2 transform kernels, whereas the grouped DST-7 matrix is used to derive the different sizes of DST-7 and DCT-8 transform kernels, where DCT-2, DST-7, and DCT-8 are the transform kernels of MTS in VVC. The U matrix includes 32-, 16-, 4-, and 2-point DST-4 transform kernels and a 2-point DST-3 transform kernel. Similarly, the grouped DST-7 matrix comprises rows selected from different point DST-7 transform kernels, that is, 6 × 32 block size P, 4 × 16 block size Q, 2 × 8 block size R, and 2 × 4 block size S matrices are the row elements selected from 32, 16, 8, and 4-point DST-7 transform kernels, respectively.
Note that the overall size of the proposed common sparse unified matrix is 1648 bytes (integer, 8 bit-precision). The original size of the transform kernel is 8180 bytes (integer, 8-bit precision) for storing different block sizes of DCT-2, DST-7, and DCT-8.

2.1. Unified DST-3 Matrix (U)

The proposed unified DST-3 matrix (U) was used to derive DCT-2 transform kernels of different sizes. It stores only 1368 elements with 8-bit precision for deriving any block size of the DCT-2 transform kernel, whereas the current VVC allocates memory for 5460 elements with 8-bit precision for deriving different block sizes of the DCT-2 transform kernels. The proposed basic structure of the unified DST-3 matrix is shown in Figure 2.
The matrix U comprises 32, 16, 8, 4, and 2-point DST-4 and a 2-point DST-3 matrix. The remaining elements of U were set to zero. A relationship exists between DST-3 and DCT-2 [26], which can be expressed as Equation (6).
C 2 = F × S 3 × S
where C 2 is DCT-2, S 3 is DST-3, and F and S are flipping and sign change matrices, respectively. The elements in F and S are defined as
F m , n = 1 , if   n = N 1 m , 0 , otherwise ,
S m , n = 1 m , if   n = m , 0 , otherwise .
where m and n are matrix indices, and N is the size of the matrix.
To retrieve any block size of the DCT-2 kernel, different block sizes of the DST-3 kernel are required, as in (6). As shown in Figure 2, a 2-point DST-3 transform kernel matrix exists at the right bottom part of U. Using (6) and the 2-point DST-3 transform kernel, a 2-point DCT-2 transform kernel can be derived. Similarly, different block sizes of DST-3 transform kernels are required to derive other sizes of DCT-2 transform kernels. To obtain different block sizes of DST-3 transform kernels from U, the predefined 64-point unit-element matrices, A, B, C, D, and E, are multiplied by U.
Figure 3 shows the DST-3 derivation mechanism from unified DST-3 matrix (U). The unit-element matrices A, B, C, D, and E are the matrices with values of −1, 0, or 1, and their elements are defined as Equations (9)–(13), respectively.
A m , n =         1   ,                                           i f   m = n ,     0 < m , n < 60   | |                                           m = n ,     60 < m , n < 62     | |                             m + n = 123     ( 61 < m < 64 )   a n d ( 60 < n < 62 )   | |                                           i j = 2 ,               ( 60 < m < 62 )   a n d   ( 61 < n < 64 ) 1   ,                                           i f   ( m + n = 125 ,     61 < m , n < 64 0   ,                                                                                     e l s e w h e r e
B m , n =           1   ,                                         i f   m = n ,     0 < m , n < 56       | |                                                                   m = n ,     55 < m , n < 60   | |                                         m + n = 119   ,   ( 59 < m < 64 )   a n d (   55 < n < 60 ) | | i j = 4 ,       ( 55 < m < 60 )   a n d   ( 59 < n < 60 ) 1   ,                                         i f   ( m + n = 123 ,     59 < m , n < 64 0   ,                                                                                                         e l s e w h e r e
C m , n =             1   ,                                             i f   m = n ,     0 < m , n < 48   | |                                                                 m = n ,     47 < m , n < 56   | |                                             m + n = 111   ,   55 < m < 64   a n d   47 < n < 56 | | i j = 8 ,       47 < m < 56   a n d   55 < n < 64 1   ,                                               i f   ( m + n = 119 ,     55 < m , n < 64 0   ,                                                                                                             e l s e w h e r e
D m , n =           1   ,                                           i f   m = n ,     0 < m , n < 32   | |                                                                     m = n ,     31 < m , n < 48   | |                                           m + n = 95   ,   ( 47 < m < 64 )   a n d (   31 < n < 48 ) | |                     i j = 16 ,       ( 31 < m < 48 )   a n d   ( 47 < n < 64 ) 1   ,                                                               i f   ( m + n = 111 ,     47 < m , n < 64 0   ,                                                                                                           e l s e w h e r e
E m , n = 1   ,                                   i f   m = n ,     0 < m , n < 32   | |                                                                   m + n = 63   ,   ( 31 < m < 64 )   a n d (   0 < n < 32 )   | |                                           i j = 32 ,       ( 0 < m < 32 )   a n d   ( 31 < n < 64 ) 1   ,                                                             i f   ( m + n = 95 ,     31 < m , n < 64 0   ,                                                                                                         e l s e w h e r e
The relation between U and the unit-element matrices can be expressed as Equation (14).
S 3 ,   64 = U × A × B × C × D × E
where S 3 ,   64 is the 64-point DST-3 transform kernel, U is the proposed unified DST-3 matrix, and A, B, C, D, and E are the 64-point unit-element matrices. Using U and the unit-element matrices, DST-3 transform kernels with different sizes can be obtained, which is explained using Equations (15)–(19)
S 3 , 4 = T U 64 × A 64 4
S 3 , 8 = T U 64 × M 64 8
S 3 , 16 = T U 64 × N 64 16
S 3 , 32 = T U 64 × O 64 32
    S 3 , 64 = U 64 × P 64
where S 3 ,   N is an N-point DST-3 transform kernel, T [ ] N represents a function that takes an N × N block of the right-bottom part of the matrix, and M, N, O, and P are defined using unit elements (−1, 0, and 1) as in Equation (20).
M = A × B N = A × B × C O = A × B × C × D P = A × B × C × D × E
For example, to derive the 16-point DCT-2 kernel, a 16-point DST-3 is required, as in Equation (6). First, U is multiplied by the A, B, and C unit-element matrices as in (17) in sequential order, thus leading to 32-point DST-4, 16-point DST-4, and 16-point DST-3 transform kernel matrices. Using the resulting matrices, the 16-point DST-3 matrix at the bottom right of the generated matrix is obtained. Finally, the 16-point DCT-2 transform kernel can be obtained using (6) and a 16-point DST-3. Figure 4 shows the overall process of generation of the 16-point DST-3 transform kernel.
Figure 5 shows the proposed derivation of the N-point DCT-2 transform kernel. First, the value of N is equal to 2. If the condition is satisfied, S 3 , 2 is obtained by the selection of a 2 × 2 block of the right-bottom part of the U matrix; otherwise, S 3 ,   N is achieved by the selection of the N × N block of the bottom right of the matrix obtained after the multiplication of U, and   E 64 . E 64 represents the unit-element matrices A, B, C, D, and E. E 64 ,   N can be obtained by multiplying the unit-element matrices A, B, C, D, and E, depending on N. For example, E 64 ,   N is calculated as A × B × C × D , A × B × C , A × B , and A for N = 32, N = 16, N = 8, and N = 4, respectively. Finally, the N-point DCT-2 transform kernel was obtained using (6). Figure 5 shows an illustration of the proposed DCT-2 transform kernel derivation.

2.2. Proposed Grouped DST-7 Matrix

To derive the full DST-7 and DCT-8 matrices with less memory, a grouped DST-7 matrix is proposed. The proposed grouped DST-7 matrix is based on the principle of storing only a few selected rows of different block-sized DST-7 transform kernels. The rows selected from the original kernel matrix are used to generate the group of elements of the respective block size DST-7 transform kernel with the help of the permutation matrix (G) comprising −1, 0, or 1. The matrix G is multiplied by the selected rows, resulting in a full block-sized DST-7 transform kernel. The matrices P, Q, R, and S in Figure 1 indicate the rows for the derivation of 32, 16, 8, and 4-point DST-7 transform kernels, respectively, and they are only stored for DST-7 and DCT-8 kernel derivation, leading to a significant reduction in memory storage. The grouped DST-7 matrix is defined as a 14 × 64 matrix of the lower part, as shown in Figure 1, and the total memory allocation is required for only 280 elements with 8-bit precision, which significantly reduces the memory sizes of the current DST-7 in VVC with 1360 elements each with 8-bit precision.
To derive the full-size 32-point DST-7 transform kernel, only six-row vectors from the 32-point DST-7 are selected, that is, P = S 7 , 0   S 7 , 1   S 7 , 2   S 7 , 3   S 7 , 5   S 7 , 6 T and can be base vectors for each group of DST-7 matrix in the proposed method. Similarly, for the derivation of full-size 16, 8, and 4-point DST-7 transform kernels, Q with four rows, R with two rows, and S with two rows, that is, Q = S 7 , 0   S 7 , 1   S 7 , 2   S 7 , 5 T, R = S 7 , 0   S 7 , 1 T, and S = S 7 , 0   S 7 , 1 T, are selected from 16, 8, and 4-point DST-7, respectively and are regarded as the base vectors. Note that S 7 ,   i represents the i-th row of DST-7. Using a few selected rows and G, the full-size DST-7 transform kernel can be derived by retrieving the row vectors of each group. Figure 6 shows an illustration of kernel derivation using a grouped 32-point DST-7 matrix. As shown in Figure 6, the row vectors of P in the grouped DST-7 matrix are used to derive the row vectors of the DST-7 kernel in each group.
Figure 7 shows the details of the derivation process of the kernel for each group. The 0-th group is taken as an example, and the other groups follow the same process using different row vectors of matrix P.
In Figure 7, [ S 7 , i , j ] N denotes the j-th row vector of the i-th group for the N-point DST-7. In the proposed method, matrix P comprises only the 0-th row vectors of the i-th group of the N-point DST-7. First, the 0-th row vector S 7 , i , 0 N from P is obtained from the i-th group of DST-7. Subsequently, the absolute values of e l and e f , which are the last (the rightmost) and first (the leftmost) elements in the row vector, are compared. If these two absolute values are identical, the row vector can be one row of the DST-7 kernel with the same index as stored in P. Otherwise, the row vector is multiplied by G and a comparison of e l and e f in the resulting row vector is performed as in the previous step. If the first element in each row is a negative value, then the sign of every element in each row is altered. It should be noted that G is designed such that the absolute value of the first element in the previous row equals the absolute value of the last element of the next row vector after multiplying with G. This process is repeated until the end of the last row vector of the current group.
Figure 8 shows a 16-point DST-7 transform kernel derived using Figure 7, and the elements in each row vectors are perfectly matched with the definition of DST-7 in (5). Similarly, 32-, 8-, and 4-point DST-7 can be derived using P, R, S, and G matrices, which are defined according to the size, which will be discussed in the next section.
For the derivation of the full-size 16-point DST-7 transform kernel, only four rows from the 16-point DST-7 are selected, that is, Q = S 7 , 0 , 0   S 7 , 1 , 1   S 7 , 2 , 2   S 7 , 5 , 5 T and can be used as base vectors for each group of DST-7 matrix in the proposed method.

2.3. Permutation Matrix (G)

The permutation matrix G plays a crucial role in the derivation of the DST-7 transform kernel using the proposed grouping algorithm, as mentioned in the previous section. The process of deriving G in the proposed method is described in Figure 9, which shows the first group of 16-point DST-7 transform kernels represented with floating-point elements, where S 7 , 0 , 0 is only stored in matrix Q in the common sparse unified matrix shown in Figure 1.
The elements between the consecutive rows in the group are observed with specific patterns that appear based on the characteristics of DST-7 kernels. Figure 10 shows the patterns of the elements in consecutive rows. As shown in Figure 10, elements in the odd column (1st, 3rd,…) of the 0th row ( S 7 , 0 , 0 32 ) are repeated in the left-half column in the next row. The elements in the right-half column are copied from the elements of even columns (0th, 2nd,…) in the previous row vector in reverse order.
Thus, this relation can be described in Equation (21).
S 7 , ( i , 1 N = [ ( [ S 7 , ( i , 1 ] N / 2 ) L , ( [ S 7 , ( i , 1 ] N / 2 ) R ]
Based on Figure 7, (21) is the next row vector, composed of two parts, ( [ S 7 , ( i , 1 ] N / 2 ) L and ( [ S 7 , ( i , 1 ] N / 2 ) R . ( [ S 7 , ( i , 1 ] N / 2 ) L and ( [ S 7 , ( i , 1 ] N / 2 ) R represent the left and right halves of S 7 , ( i , 1 N .
( [ S 7 , ( i , 1 ] N / 2 ) L is derived using (22), where elements in the odd column (1st, 3rd, …) of the 0th row (previous row) are selected. ( [ S 7 , ( i , 1 ] N / 2 ) R is derived using (23), where elements in the even column (0th, 2nd, …) of the 0th row (previous row) are selected and substituted in a reverse way. Note that [ S 7 , i , j , k ] N / 2 denotes the element in the k-th column and j-th row vector of the i-th group for N-point DST-7.
( [ S 7 , ( i , 1 ] N / 2 ) L = [ S 7 , ( i , 0 , 2 n 1 ] N / 2
( [ S 7 , ( i , 1 ] N / 2 ) R = [ S 7 , ( i , 0 , 2 n 2 ] N / 2
where n is the integer value, N/2 < n > 0.
Hence, a change of one element in the row vectors in a group may affect the other elements of the other vector of the same group. Figure 10 shows an example of patterns observed between two consecutive row vectors of the 16-point DST-7 transform kernel. From the patterns, G comprising −1, 0, and 1 can be derived. Figure 11 shows the G matrix based on the pattern in Figure 10 for deriving the DST-7 transform kernel.
As shown in Figure 11, a smaller G can be embedded into a larger G with identical patterns of element values. Figure 12 shows an algorithm for obtaining the matrix. Even if the memory size of G in Figure 11 accounts for 256 bytes, there can be a case to derive G on the fly using the algorithm shown in Figure 12, not using static memory to save G.
As shown in Figure 12, the algorithm comprises two parts for the left column (S0) and right column part (S1) of G. First, variables used for the algorithm are initialized and the size (N) of the kernel matrix to derive is set. Then, variables a and b are initially set to 1 and 0, which will be used as initial values of the left column (S0) part of G. i r and i c represent the row and column indices of G, respectively. The index value of i r was initialized to 0. First, the condition is checked if the i r index value is less than the size N. If this is true, then the process is divided into two columns, the left column (S0) and right column (S1); then, the i c index value is initialized to 0 else, the process terminates.
Thus, the i c index value is checked if it is less than half of the value of N. If the condition defined is satisfied, then i r and i c corresponding to the respective a and b variables are checked. Variables a and b are set only for the S0 of the G matrix. The value of the permutation matrix at the respective location G N i r , i c is set to 0 if the checked condition is false, i c is incremented by 1, and looped back to the condition, where the i c index value is checked for whether it is less than half of N. If the checked condition holds true (T), c 1 is checked for whether it is true (T) or false (F). If c 1 is false, then the value G N i r , i c is set to −1, and c 1 is set to true. Otherwise, the value of G N i r , i c is set to 1, and c 1 is set to false. Subsequently, the value of a is incremented by 2, and the value of b is incremented by 1. After setting the values of a and b, i c is incremented by 1 and finally looped back to the condition where the i c index value is checked whether it is less than half of the value of N.
For the right column (S1) part of G, variables m and n are used, whose initial values are set to 0 and N−1, respectively. If the condition, where i c index value is checked to be less than half of N is false, then the value of i c is set as half of N. Further, the i c index is checked to determine whether it is less than N. If the condition is false (F), then the i r index value is incremented by 1 and looped back to the condition, where i r is less than N or is not checked. However, if the condition exists (T), then the i r index equals m and the i c index, which equals n, is checked. If it is false, the value of G N i r , i c is set to 0. Otherwise, the c 2 condition is further checked for whether it is false. If c 2 is false, the value G N i r , i c is set to 1, and c 2 is set as false; thus, the i c index is incremented by 1 and looped back to the condition where i c is checked to determine whether it is less than N. Otherwise, the value G N i r , i c is set as −1 and c 2 is set as true, the value of m is incremented by 2, and that of n is decremented by 1. Finally, the value of the i c index is incremented by 1 and looped back to the condition where the i c index is checked to determine whether it is less than N.
An example of the splitting of S0 and S1 in the G matrix for N = 8 is shown in Figure 13.

2.4. Integer Kernels with VVC Standard

Generally, the floating-point elements in the kernels are scaled up to integer elements to avoid a mismatch between the encoder and decoder in most video coding standards. Transform and quantization using resulting integer kernel matrices are implemented with integer arithmetic, which benefits the complexity of implementations and is one of the primary concerns in the standardization of VVC. Despite the benefits of integer kernels, several disadvantages exist. Orthogonality in the kernel matrix can be lost when scaled up to integer values and the magnitudes of the matrix elements should be as small as possible under the consideration of dynamic ranges for the process of transform and quantization [26]. Nevertheless, it is known that the kernel similarity between the derived kernel and original kernels is more important than orthogonality when quantization is applied to transform the coefficients. Thus, it is unnecessary to maintain kernel orthogonality at the expense of kernel similarity. By reflecting the requirements of transform kernels for video codec, integer kernels for every transform block are proposed and finally adopted [15]. In this section, we show how our proposed kernel derivation method is applied for transformation with no deviation, which means the kernels derived by the proposed method are perfectly matched with the standard kernels.
Figure 14 shows a 32-point integer DST-7 transform kernel adopted in VTM-3.0 [27] as the standard. In Figure 14, each row vector is shown in the order of the group. The element values in the row vectors were identical to those of the standard kernel.
As described in Figure 7 of Section 2.2, the absolute value of e f in the current row should be identical to the absolute value of e l of the next row, which is obtained by multiplying the current row vector by G. The multiplication can be repeated until e l of the base (first) row is equal to e f of the row multiplied by G. For the derivation of all sizes of DST-7, the multiplications are repeated until the end of the last vectors of the group, except for a few cases for 32-point DST-7, which are observed in the 3rd group for 32-point DST-7. Figure 15 shows the case shown in the 3rd group for the 32-point DST-7.
As shown in Figure 15, S 7 , 3 , 18 32 is obtained after the multiplication of S 7 , 3 , 25 32 and G. Because   e l of S 7 , 3 , 3 32 equals e f of S 7 , 3 , 18 32 , the algorithm for the current group is complete, as shown in Figure 7. Thus, S 7 , 3 , 4 32 , S 7 , 3 , 23 32 and S 7 , 3 , 14 32 for the full-size DST-7 kernel cannot be obtained using the proposed algorithm. This only happens when the element values are scaled up to make the element values of the kernel integer. To address this problem for integer kernels of DST-7, especially for the 32-point kernel, two approaches are proposed in our method. The first method is to tune e l of S 7 , 3 , 3 32 from 88 to 89 without considering the sign value, and by tuning the value, the case of stopping the algorithm in S 7 , 3 , 18 32 obtained after the multiplication of S 7 , 3 , 25 32 and G can be removed, resulting in a full-size 32-point DST-7 transform kernel. Figure 16a shows this procedure. Similarly, the second method is to tune the 3rd element of the value of S 7 , 3 , 3 32 from 88 to 89 without considering the sign value, as shown in Figure 16b. By tuning the values, the related values in the other vectors are changed by the proposed algorithm, accordingly.
Finally, once all sizes of DST-7 kernels are derived, DCT-7 and all DCT-8 transform kernels can be easily derived using relation Equation (24) as
C 8 = S × S 7 × F
where C 8 and S 7 are the DCT-8 and DST-7 transform kernels, respectively, and S and F are the sign-changing and flipping matrices, defined in (7) and (8), respectively.

2.5. Application of the Proposed Method to the DST-7/DCT-8 Fast Algorithm in VTM

In Equation (23), a fast DST-7/DCT-8 algorithm with dual support was introduced and adopted in VTM-3.0. The fast algorithm is based on three different features for integer N-point DST-7/DCT-8 transform kernels shown in Figure 17, which can be defined as Figure 17.
Where {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p} are the N-point unique integer numbers for the 16-point DST-7 kernel. Assume that the output vector y   = y 0 ,   y 1 , , y N 1 T is obtained by multiplying the input vector x   = x 0 ,   x 1 , , x N 1 T with the transform kernel C, that is, ( y = x C ).
Feature #1:
It is observed that the sum of several (2 or 3) numbers is equal to the sum of several (1 or 2) numbers. The elements l, m, n, o, and p are obtained by (a + j), (b + i), (c + h), (d + g), and (e + f), respectively.
To calculate y0, instead of performing vector-by-vector multiplication that requires 16 multiplications, the following alternative implementation is computed as shown in Equation (25):
y0 = a·(x0 + x11) + b·(x1 + x12) + … + j·(x9 + x11) + k·x10
which requires 10 multiplications.
Feature #2:
This is based on the feature that some elements in a row vector of DST-7 are symmetrically mirrored with each other. For example, the second vector {c, f, i, l, o, o, l, i, f, c, o, c, f, i, l, o} in Figure xx with only c, f, i, l, and o elements.
To calculate y1, instead of performing vector-by-vector multiplication that requires 16 multiplications, the following alternative implementation is computed, as shown in Equation (26):
y1 = c·(x0 + x9x11) + f·(x1 + x8x12) + i·(x2 + x7x13) + l·(x3 + x6x14) + o·(x4 + x5x15)
which requires five multiplications.
Feature #3:
This is based on the basic vectors that contain very few numbers (1 or 2) of distinct values without considering sign values {k, k, 0, −k, −k, 0, k, k, 0, −k, −k, 0, k, k, 0, −k}. To calculate y5, instead of performing vector-by-vector multiplication that requires 16 multiplications, the following alternative implementation is computed as shown in Equation (27):
y5 = k·(x0 + x1− … −x15)
which requires one multiplication.
The major drawback of the fast algorithm [28] for DST-7 transform in VTM3.0 is that one feature out of the mentioned three features has to be applied in each row. However, once a feature is selected for the basic vector such as   S 7 , 0 , 0 16 , S 7 , 1 , 1 16 , S 7 , 2 , 2 16 and S 7 , 5 , 5 16 , the same feature is applied to vectors belonging to the same group. Hence, the proposed method follows “one group one feature” and removes the matching of a single feature among the three features in each row.
For example, in the first row, a vector of DST-7, Feature #1 is applied, whereas in the second-row vector, Feature #2 is applied. Similarly, for the other rows, a single feature out of three features was applied. Initially, before applying the feature in each row vector, we were unaware of the feature to be applied in the respective row vector. Consequently, we need to check if the respective row vector follows Feature #1, #2, or #3 such that the single matched feature is applied. For a larger matrix, the number of row vectors is large; therefore, for each row, we have to manually check if each row follows Feature #1, #2, or #3, which is time-consuming.
Based on the proposed grouping method, only for the base row vector, a feature out of three features is selected manually, and the row vectors that depend on the base row, that is, each grouped row vector, follow the same feature that is applied to the based row vector. Figure 18 shows the application of the proposed 16-point grouped DST-7 transform to the fast algorithm in VVC. Feature 1 can be applied to the 0th and 2nd groups. The elements in the l, m, n, o, and p columns are obtained by the summation of the column elements such as (a + j), (b + i), (c + h), (d + g), and (e + f), respectively, of the 0th and 2nd groups. Feature #2 is applied to the 1-st group where column elements in f, g, h, i, and j are mirrored values of column elements e, d, c, b, and a, respectively. Similarly, elements in l, m, n, o, and p are mirrored in the column elements j, i, h, g, and f with flipped signed values, respectively. Similarly, Feature #3 is applied to S 7 , 5 , 5 16 as it contains only a single distinct element, that is, 77. This is possible with the help of the proposed grouping method.

3. Experimental Results and Analysis

To verify the proposed method for the transform kernel derivation for VVC, the similarities between the proposed kernels and the original kernels in VTM-3.0 [27] were investigated by plotting the kernels in a graphical representation. Figure 19 shows the comparison of the transform kernels. It can be seen that the derived transform kernels are almost perfectly matched with the original transform kernels. As described in Section 3, only a few integer elements in the 32-point DST-7 kernel are tuned from the original kernels to obtain full transform kernels. Thus, it can be inferred that the proposed transform kernels are more likely to have identical coding gains.
Experiment for verification of the proposed method were performed on the VVC reference software, VTM-3.0 [27], using CTC conditions [29]. The PC for simulation was Centos 7 OS with an Intel® Xeon® Silver 4114 CPU @ 2.20 GHz processor with 200 cores and 156 GB of RAM. Parallel processing is turned off to precisely measure the encoding and decoding complexity in the execution time. The coding performance was measured in BDBR (%) [30].
Table 2 shows the experimental results of the proposed method. As shown in Table 2, the coding performances of the proposed method are almost identical to the original VTM3.0 for all configurations. This is because the similarity of the proposed transform kernel with the original transform kernel is almost perfect.
Table 3, Table 4 and Table 5 show a comparison of the results of the proposed method for the AI, RA, and LDB configurations [31], respectively.
Although COT [21] provides better coding gain, it fails to provide a 64-point DCT-2 transform kernel, as some rows of 64-point DCT-2 transform kernels are removed and replaced with selected row values of DST-7/DCT-8 transform kernels [21].
In addition, [21] used five transform kernels, that is, DCT-2, DST-7, DCT-8, DST-4, and DCT-4. Similarly, the unified matrix [23] presented excellent coding gain; however, the higher resolution class sequences, Classes A1 and A2 have higher coding loss. This results from the deviation of the proposed mathematically derived transform kernels with the original transform kernels. In [24,25], owing to the mismatch in the proposed transform kernels with original transform kernels, coding losses can be seen. In our proposed method, no coding loss is observed in higher-resolution class sequences. The overall result showed a minor gain of 0.02% in the U-chroma. This is because the proposed transform kernels were in good agreement with the original transform kernels, as shown in Figure 19.
Table 4 shows the overall experimental results of RA using the VTM-3.0 reference software under the CTC conditions. Coding loss can be seen in [23,24,25] but [21] showed less significant luma gain. Similarly, the proposed method showed no significant loss compared to the other methods.
Table 5 shows the overall experimental results of LDB using the VTM-3.0 reference software under the CTC conditions. [21,23,25] showed higher coding loss, whereas the proposed method showed a 0.27% coding gain in V-chroma and negligible loss in U-chroma.

4. Conclusions

This study proposed an analytical kernel derivation method for the VVC video codec. Memory consumption to store different block size transform kernels is regarded as a major issue in video coding standardization. To address this scenario, the proposed method attempts to save static memory by storing only fewer elements of the transform kernels. Full-required transform kernels are derived using the stored transform kernels and generated unit-element matrices and a permutation matrix. In the proposed method, all the different block size transform kernels are generated dynamically during runtime. The static memory required is only for 1648 elements instead of 8180 elements, each with 8-bit precision, which means that approximately 80% of the static memory can be saved. The fast algorithm of DCT-2 and DST-7 can be implemented in the proposed method as the proposed signal closely overlaps with the original transform kernels, that is, DCT-2, DCT-8, and DST-7. Similarly, the proposed grouping concept of the DST-7 transform kernel shows the effect of tuning on one-row elements on the remaining rows that depend on the tuned row element using the permutation matrix.

Author Contributions

Conceptualization, A.K. and B.L.; methodology, B.L.; software, A.K.; validation, A.K. and B.L.; formal analysis, B.L.; investigation, B.L.; writing—original draft preparation, A.K.; writing—review and editing, B.L.; visualization, B.L.; supervision, B.L.; project administration, B.L.; funding acquisition, B.L. All authors have read and agreed to the published version of the manuscript.

Funding

This work was supported by the National Research Foundation of Korea (NRF) grant funded by Korea government (No. NRF-2019R1I1A3A01058959).

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

Not applicable.

Conflicts of Interest

The authors declare no conflict of interest.

References

  1. Vetrivel, S.; Suba, K.; Thisha, G.A. An Overview of H.26x Series And its Applications. Int. J. Eng. Sci. Technol. 2010, 2, 4622–4631. [Google Scholar]
  2. Wiegand, T.; Sullivan, G.J.; Bjontegaard, G.; Luthra, A. Overview of the H.264/AVC video coding standard. IEEE Trans. Circuits Syst. Video Technol. 2003, 13, 560–576. [Google Scholar] [CrossRef] [Green Version]
  3. Sullivan, G.J.; Ohm, J.; Han, W.; Wiegand, T. Overview of the High Efficiency Video Coding (HEVC) Standard; IEEE: Piscataway, NJ, USA, 2012; pp. 1649–1668. [Google Scholar]
  4. Chen, J.; Ye, Y.; Kim, S.H. Algorithm description for Versatile Video Coding and Test Model 3 (VTM 3), [JVET-L1002]. In Proceedings of the JVET of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 12th Meeting, Macao, China, 3–12 October 2018. [Google Scholar]
  5. Rao, K.R.; Yip, P. Discrete Cosine Transform. In IEEE Transactions on Computers; Academic Press: Boston, MA, USA, 1990. [Google Scholar]
  6. Cham, W.K. Development of Integer Cosine Transforms by the Principle of Dyadic Symmetry. Proc. Inst. Elect. Eng. 1989, 136, 276–282. [Google Scholar] [CrossRef]
  7. Strang, G. The Discrete Cosine Transform. SIAM Rev. 1999, 41, 135–147. [Google Scholar] [CrossRef]
  8. Abedi, M.; Sun, B.; Zheng, Z. A Sinusoidal-Hyperbolic Family of Transforms with Potential Applications in Compressive Sensing. IEEE Trans. Image Process. 2019, 28, 3571–3583. [Google Scholar] [CrossRef] [PubMed]
  9. Jain, A.K. A Sinusoidal Family of Unitary Transforms. IEEE Trans. Pattern Anal. Mach. Intell. 1979, 1, 356–365. [Google Scholar] [CrossRef] [PubMed]
  10. Sullivan, G.J.; Ohm, J. Meeting Report of the 13th Meeting of the Joint Video Experts Team (JVET). In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  11. Zhao, X.; Chen, J.; Karczewicz, M.; Zhang, L.; Li, X.; Jung, W. Enhanced Multiple Transform for Video Coding. In Proceedings of the Data Compression Conference, Snowbird, UT, USA, 29 March–1 April 2016. [Google Scholar]
  12. Philippe, P.; Biatek, T.; Lorcy, V. Improvement of HEVC Inter-coding Mode Using Multiple Transforms. In Proceedings of the 25th European Signal Processing Conference (EUSIPCO), Kos Island, Greece, 28 August–2 September 2017. [Google Scholar]
  13. Abe, K.; Toma, T.; Ikeda, M.; Naser, K.; Leannec, F.L.; Francois, E. CE6: JVET-L0262: Replacing all DST-7/DCT-8 by DST-4/DCT-4 used in MTS (test 6.1.1e). In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  14. Zhao, Z.; Kim, S.; Zhao, Y.; Egilmez, H.; Koo, M.; Liu, S.; Lainema, J.; Karczewicz, M. Transform coding in VVC standard. IEEE Trans. Circuits Syst. Video Technol. 2021. early access. [Google Scholar] [CrossRef]
  15. Bross, B.; Chen, J.; Liu, S. Versatile Video Coding (Draft 4) JVET-M1001. In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  16. JVET VTM Software—JVET. Available online: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tree/VTM-4.0 (accessed on February 2019).
  17. Zhao, X.; Li, X.; Luo, Y.; Liu, S. CE6: Fast DST-7/DCT-8 with dual implementation support JVET-M0497. In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  18. Luxán-Hernández, S.D.; George, V.; Ma, J.; Nguyen, T.; Schwarz, H.; Marpe, D.; Wiegand, T. CE3: Intra Sub-Partitions Coding Mode (Tests 1.1.1 and 1.1.2). In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  19. Zhao, Y.; Gao, H.; Yang, H.; Chen, J. CE6:Sub-block transform for inter blocks (CE6.4.1). In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  20. Budagavi, M.; Fuldseth, A.; Bjøntegaard, G.; Sze, V.; Sadafale, M. Core Transform Design in the High Efficiency Video Coding (HEVC) Standard. IEEE J. Sel. Top. Signal Process. 2013, 7, 1029–1041. [Google Scholar] [CrossRef]
  21. Zhao, X.; Li, X.; Liu, S. CE6: Compound Orthonormal Transform JVET-M0200. In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  22. Feig, E.; Winograd, S. Fast algorithms for the discrete cosine transform. IEEE Trans. Signal Process. 1992, 40, 2174–2193. [Google Scholar] [CrossRef]
  23. Choi, K.; Park, M.; Park, M.W.; Choi, W. CE6: Unified matrix for transform JVET-M0200. In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  24. Said, A.; Egilmez, H.; Seregin, V.; Karczewicz, M. Complexity Reduction for Adaptive Multiple Transforms (AMTs) using Adjustment Stages JVET-J0066. In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 10th Meeting, San Diego, CA, USA, 10–20 April 2018. [Google Scholar]
  25. Philippe, P. CE6: MTS simplification with TAF. In Proceedings of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
  26. Ochoa-Dominguez, H.; Rao, K.R. Discrete Cosine Transform, 2nd ed.; CRC Press: Boca Raton, FL, USA, 2019; pp. 133–186. [Google Scholar]
  27. JVET VTM Software—JVET. Available online: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tree/VTM-3.0 (accessed on November 2018).
  28. Zhang, Z.; Zhao, X.; Li, X.; Li, L.; Luo, Y.; Liu, S.; Li, Z. Fast DST-VII/DCT-VIII with Dual Implementation Support for Versatile Video Codec. IEEE Trans. Circuits Syst. Video Technol. 2021, 31, 355–371. [Google Scholar] [CrossRef]
  29. Hanhart, P.; Boyce, J.; Choi, K.; Lin, J.-L. JVET common test conditions and evaluation procedures for 360° video. In Proceedings of the JVET of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 12th Meeting, Macao, China, 3–12 October 2018. [Google Scholar]
  30. Lu, G.; Ouyang, W.; Xu, D.; Zhang, X.; Cai, C.; Gao, Z. DVC: An End-to-end Deep Video Compression Framework. In Proceedings of the CVPR, Long Beach, CA, USA, 16–20 June 2019. [Google Scholar]
  31. Bossen, F.; Boyce, J.; Li, X.; Seregin, V.; Sühring, K. JVET common test conditions and software reference configurations for SDR video. In Proceedings of the Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 13th Meeting, Marrakech, MA, USA, 9–18 January 2019. [Google Scholar]
Figure 1. Common sparse unified matrix.
Figure 1. Common sparse unified matrix.
Applsci 11 09280 g001
Figure 2. Structure of unified DST-3 matrix (U).
Figure 2. Structure of unified DST-3 matrix (U).
Applsci 11 09280 g002
Figure 3. DST-3 derivation mechanism from unified DST-3 matrix (U).
Figure 3. DST-3 derivation mechanism from unified DST-3 matrix (U).
Applsci 11 09280 g003
Figure 4. Proposed method to obtain the 16-point DST-3 transform kernel.
Figure 4. Proposed method to obtain the 16-point DST-3 transform kernel.
Applsci 11 09280 g004
Figure 5. Illustration of the proposed DCT-2 transform kernel.
Figure 5. Illustration of the proposed DCT-2 transform kernel.
Applsci 11 09280 g005
Figure 6. Illustration of kernel derivation using grouped DST-7 matrix.
Figure 6. Illustration of kernel derivation using grouped DST-7 matrix.
Applsci 11 09280 g006
Figure 7. An example of derivation process for the i-th group of 32-point DST-7.
Figure 7. An example of derivation process for the i-th group of 32-point DST-7.
Applsci 11 09280 g007
Figure 8. Floating-point grouped 16-point DST-7 transform kernel elements.
Figure 8. Floating-point grouped 16-point DST-7 transform kernel elements.
Applsci 11 09280 g008
Figure 9. S 7 , 0 , 0 dependent grouped 16-point DST-7 transform kernel.
Figure 9. S 7 , 0 , 0 dependent grouped 16-point DST-7 transform kernel.
Applsci 11 09280 g009
Figure 10. An example of patterns observed between two consecutive row vectors of 16-point DST-7 transform kernel.
Figure 10. An example of patterns observed between two consecutive row vectors of 16-point DST-7 transform kernel.
Applsci 11 09280 g010
Figure 11. An example of 32−point permutation matrix (G).
Figure 11. An example of 32−point permutation matrix (G).
Applsci 11 09280 g011
Figure 12. Algorithm for the generation of the permutation matrix G.
Figure 12. Algorithm for the generation of the permutation matrix G.
Applsci 11 09280 g012
Figure 13. An example of resulting G matrix for N = 8 by Figure 12.
Figure 13. An example of resulting G matrix for N = 8 by Figure 12.
Applsci 11 09280 g013
Figure 14. Grouped 32−point DST−7 transform kernel elements.
Figure 14. Grouped 32−point DST−7 transform kernel elements.
Applsci 11 09280 g014
Figure 15. An example of the case not deriving the DST−7 kernel.
Figure 15. An example of the case not deriving the DST−7 kernel.
Applsci 11 09280 g015
Figure 16. Removing the case not obtaining full kernel matrix by tuning values highlighted. (a) Method 1; (b) Method 2.
Figure 16. Removing the case not obtaining full kernel matrix by tuning values highlighted. (a) Method 1; (b) Method 2.
Applsci 11 09280 g016
Figure 17. Illustration of 16−point DST−7 kernel unique integer numbers [28].
Figure 17. Illustration of 16−point DST−7 kernel unique integer numbers [28].
Applsci 11 09280 g017
Figure 18. Application of the proposed 16−point grouped DST−7 transform to a fast algorithm in VVC.
Figure 18. Application of the proposed 16−point grouped DST−7 transform to a fast algorithm in VVC.
Applsci 11 09280 g018
Figure 19. Comparison between the proposed and original transform kernels.
Figure 19. Comparison between the proposed and original transform kernels.
Applsci 11 09280 g019
Table 1. MTS transform kernels based on prediction and block sizes in VTM-3.0.
Table 1. MTS transform kernels based on prediction and block sizes in VTM-3.0.
PredictionPrediction ToolsBlock Size ChecksTransform Kernels
MTSIntraISP [18]
(intra sub-partition)
4 × 4 up to 16 × 16DCT-2, DST-7
Normal intra-prediction mode4 × 4 up to N × 32/32 × NDCT-2, DST-7
InterSBT [19]
(sub-block transform)
4 × 4 up to N × 32/32 × NDST-7, DCT-8
depends on SBT position
Table 2. Simulation results.
Table 2. Simulation results.
Test SequencesAI (All Intra)RA (Random Access)LDB (Low Delay B)
YUVYUVYUV
Class A1 (4K)Tango2−0.01−0.310.080.040.140.01---
FoodMarket40.01−0.010.040.000.110.17---
Campfire−0.010.08−0.100.00−0.040.01---
Class A2 (4K)CatRobot1−0.01−0.010.01−0.040.100.17---
DaylightRoad20.00−0.100.02−0.040.190.07---
ParkRunning30.010.00−0.03−0.03−0.060.01---
Class B (1080p)MarketPlace0.02−0.130.00−0.020.28−0.130.05−0.04−0.35
RitualDance0.000.070.10−0.01−0.020.000.03−0.11−0.27
Cactus0.010.010.05−0.03−0.040.14−0.10−0.45−0.06
BasketballDrive−0.01−0.020.070.05−0.01−0.140.01−0.16−0.13
BQTerrace0.000.150.090.010.690.17−0.05−0.68−1.28
Class C (WVGA)BasketballDrill0.01−0.18−0.12−0.010.130.150.040.550.10
BQMall−0.010.15−0.06−0.02−0.120.180.160.610.11
PartyScene0.00−0.04−0.100.020.18−0.180.04−0.22−0.08
RaceHorses0.01−0.090.000.00−0.150.24−0.01−0.100.28
Class D (WQVGA)BasketballPass0.01−0.17−0.08−0.03−0.09−0.17−0.090.36−0.43
BQSquare0.000.230.28−0.07−0.95−0.24−0.020.550.59
BlowingBubbles0.00−0.030.03−0.010.010.300.00−0.43−0.83
RaceHorses0.00−0.030.180.080.23−0.47−0.02−0.16−0.17
Class E (720p)FourPeople0.00−0.05−0.01---0.17−0.77−0.30
Johnny−0.020.18−0.07---−0.222.81−0.22
KristenAndSara0.02−0.020.08---0.00−0.43−1.00
Overall0.00−0.020.00−0.010.090.060.010.08−0.27
Unit: %
Table 3. Comparison of the overall simulation results for the derivation of transform kernels with the proposed method (AI).
Table 3. Comparison of the overall simulation results for the derivation of transform kernels with the proposed method (AI).
COT [18]Unified Matrix [20]AMT [21]TAF [22]Proposed Method
YUVEncTDecTYUVEncTDecTYUVEncTDecTYUVEncTDecTYUVEncTDecT
Class A1−0.007−0.0140.0921011000.2000.1620.2991011000.0610.1840.187101970.1010.1150.12595840.000−0.0800.000100100
Class A2−0.050−0.051−0.0121021000.1520.0890.0851011000.0630.0270.105102970.1390.0760.03097880.000−0.0410.001100100
Class B−0.136−0.131−0.12510298−0.024−0.147−0.140101990.0310.0930.135102980.0750.0290.09796880.0010.0210.059100100
Class C−0.289−0.214−0.31010199−0.304−0.354−0.4151021000.009−0.0050.1131051050.0150.065−0.03297930.000−0.040−0.071100100
Class D−0.314−0.324−0.307104104−0.349−0.356−0.4741031020.0070.052−0.0091071090.042−0.1140.08597960.0000.0000.100102100
Class E−0.335−0.277−0.1329898−0.214−0.350−0.289100980.025−0.0630.1071091060.0630.0440.11096890.0010.0410.001100100
Overall−0.167−0.141−0.11210199−0.058−0.136−0.115101990.0330.0540.1071041010.0750.0600.06496880.000−0.0200.001100100
Unit: %
Table 4. Comparison of the overall simulation results for the derivation of transform kernels with the proposed method (RA).
Table 4. Comparison of the overall simulation results for the derivation of transform kernels with the proposed method (RA).
Seq.COT [18]Unified Matrix [20]AMT [21]TAF [22]Proposed Method
YUVEncTDecTYUVEncTDecTYUVEncTDecTYUVEncTDecTYUVEncTDecT
Class A10.0020.0210.048101990.1750.2590.3241011010.0320.0590.139101990.0900.1060.07999980.0110.0700.060101100
Class A2−0.0210.1680.09399990.1400.1900.31199990.0400.1180.2151001000.0550.1950.2399998−0.0400.0800.080101100
Class B−0.0690.0600.012101990.0670.172−0.1041001000.048−0.1280.052101990.0470.2480.11799980.0020.1780.011100100
Class C−0.111−0.0460.037101100−0.069−0.0430.04998960.0000.0410.02799980.056−0.1240.041991000.0010.0100.100101100
Class D−0.136−0.438−0.341101101−0.145−0.445−0.25998960.0550.2560.238100100−0.017−0.447−0.51199100−0.006−0.201−0.149101100
Overall−0.0570.0450.042101990.0670.1360.10599990.0350.0600.130100990.0600.1100.1149999−0.0100.0860.061101100
Unit: %
Table 5. Comparison of the overall simulation results for the derivation of transform kernels with the proposed method (LDB).
Table 5. Comparison of the overall simulation results for the derivation of transform kernels with the proposed method (LDB).
Seq.COT [18]Unified Matrix [20]TAF [22]Proposed Method
YUVEncTDecTYUVEncTDecTYUVEncTDecTYUVEncTDecT
Class B−0.015−0.2630.0781001000.1680.0160.32698960.048−0.1690.118100101−0.010−0.291−0.420100100
Class C0.0150.4370.17499960.1480.3410.38898980.013−0.0090.2141001000.0600.2110.100101100
Class D0.0160.2020.0781041020.0570.054−0.1709897−0.0350.206−0.171100100−0.0300.081−0.210101100
Class E0.0981.0630.158102980.1860.812−0.35596880.0191.0000.16210099−0.0200.540−0.510101100
Overall0.0230.3020.130100980.1660.3230.17797950.0300.1770.1611001000.0000.079−0.270101100
Unit: %
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Kumar, A.; Lee, B. An Analytic Transform Kernel Derivation Method for Video Codecs. Appl. Sci. 2021, 11, 9280. https://doi.org/10.3390/app11199280

AMA Style

Kumar A, Lee B. An Analytic Transform Kernel Derivation Method for Video Codecs. Applied Sciences. 2021; 11(19):9280. https://doi.org/10.3390/app11199280

Chicago/Turabian Style

Kumar, Ankit, and Bumshik Lee. 2021. "An Analytic Transform Kernel Derivation Method for Video Codecs" Applied Sciences 11, no. 19: 9280. https://doi.org/10.3390/app11199280

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop