CCLM的基本概念
参考链接
CCLM, Cross Component Linear Model,跨分量的线性模型。
主要用于H.266的帧内预测,探索同一个像素块中亮度Y分量和色度分量Cr,Cb之间的相关性。视频编码时,有的视频内容中,Y分量与Cb和Cr之间时相互独立的,所以我们可以在Y分量与Cb和Cr之间近似地通过一个线性模型来模拟他们的相关性。
H.266中的CCLM
H.266中,在CU的色度分量进行编码前,亮度分量已经做完了编码,并获得了亮度分量的重建值,所以可以考虑将亮度分量作为色度分量预测的参考信息。H.266会通过参考像素的亮度重建值和色度重建值之间的线性关系,根据待预测像素的亮度重建值来计算色度预测像素值。这就是CCLM。
下图是CCLM的预测过程示意图,对于YUV420的格式,亮度分量需要通过下采样和色度分量之间的空间分辨率保持一致,然后根据参考像素的亮度和色度计算线性模型参数,然后利用亮度重建值来计算色度预测值。
线性模型参数
在保证预测精度的前提下,为了降低计算复杂度,H.266仅从参考像素中选取4个点用于线性模型参数的计算,CCLM的线性模型参数获取的关键点在于如何选取这4个点。
CCLM的模型参数根据CU相邻参考像素计算得到。在H.266/VVC中,帧内预测的参考像素范围包括A,B,C,D,E。
CCLM可以分为3种模式:
- CCLM_LT模式:参考B和D
- CCLM_T模式:参考D和E
- CCLM_L模式:参考A和B
当前CU所有的参考像素不可用时,预测像素值使用1<<(bitdepth-1)
填充。当有可用的参考像素时,就需要取点计算模型参数。当候选参考像素点数大于4时,采用下表取点:
\quad | 参考像素 | 上侧取点数 | 左侧取点数 |
---|---|---|---|
CCLM_LT | B,D | 2 | 2 |
CCLM_T | D,E | 4 | 0 |
CCLM_L | A,B | 0 | 4 |
选取参考点的步骤:
假设待取参考像素点所在行/列的参考像素个数为length,参考像素点的坐标索引依次为0,1,…,length-1,每侧选取参考点个数为n(可由上表确定,取2或4),IsLorT为1表示是CCLM_T和CCLM_L模式,为0表示是CCLM_LT模式。
- 确定参考像素点的起点:
length>>(2+IsLorT)
; - 确定参考像素点的间隔:
length>>(1+IsLorT)
; - 根据间隔依次再选取n-1个参考点。
举个例子,假设当前是CCLM_T模式且待选取参考点所在上相邻行和右上相邻行的像素个数是16,即length=16,IsLorT=1。根据上表可知,当前CU上侧需要选取的参考点个数n=4。且第一个参考像素点位置为16>>(2+1)=2,参考像素的间隔为16>>(1+1)=4,因此,选取的4个参考像素点的位置分别为:2,6,10,14。
线性模型参数的计算
之前选取了4个参考点,每个参考点都会对应一组亮度重建值和色度重建值,可表示为下图:
在H.266中,首先根据亮度Y的大小,将较大的2对参考点分成1组,较小的两对参考点分成1组,然后对每组参考点的亮度值和色度值求平均值,得到一对亮度和色度均值。最后根据亮度均值和色度均值确定一条直线,这条直线就是CCLM的线性模型,从而得到线性模型的斜率和截距。
CCLM相关语法元素(还没核对ECM-8.0)
- sps_cclm_enabled_flag:取1表示启用CCLM技术,取0表示不启用CCLM技术。
- cclm_mode_flag:取1表示
\quad
- 待办:核对ECM-8.0中的CCLM语法元素。
CCCM的基本概念
参考链接
CCCM, Convolutional Cross-Component intra prediction Model,卷积跨分量帧内预测模型。
卷积滤波器
应用7抽头卷积滤波器计算色度预测像素。
P
r
e
d
C
h
r
o
m
a
V
a
l
=
C
0
×
C
+
C
1
×
N
+
C
2
×
S
+
C
3
×
E
+
C
4
×
W
+
C
5
×
P
+
C
6
×
B
PredChromaVal = C_0 \times C +C_1\times N+C_2\times S+C_3\times E+C_4\times W+C_5\times P+C_6\times B
PredChromaVal=C0×C+C1×N+C2×S+C3×E+C4×W+C5×P+C6×B
C
C
C代表当前色度样本对应位置处的亮度样本,
N
N
N
S
S
S
E
E
E
W
W
W分别是当前亮度样本的相邻样本。
非线性项
P
P
P:
P
=
(
C
×
C
+
m
i
d
V
a
l
)
>
>
b
i
t
D
e
p
t
h
P=(C\times C+midVal)>>bitDepth
P=(C×C+midVal)>>bitDepth
偏置项
B
B
B:
B
=
m
i
d
V
a
l
B=midVal
B=midVal
偏置项
B
B
B表示输入和输出之前的标量漂移,并设置为中间色度值(对于10bit视频,
B
=
512
B=512
B=512)
卷积滤波器系数的计算
通过最小化参考区域中预测和重建色度样本之间的MSE来计算滤波器系数。
M
S
E
=
E
[
(
p
r
e
d
C
[
i
]
−
r
e
c
C
[
i
]
)
2
]
=
E
[
(
∑
n
=
0
6
c
n
⋅
r
e
f
L
[
n
]
−
r
e
c
C
[
i
]
)
2
]
MSE = E[( predC[i]-recC[i] )^2] = E[(\sum^6_{n=0}c_n\cdot refL[n]-recC[i])^2]
MSE=E[(predC[i]−recC[i])2]=E[(n=0∑6cn⋅refL[n]−recC[i])2]
参考区域如图所示,由PU上方和左侧的3行/列色度样本组成。参考区域向右延申一个PU宽度,在PU边界下方延申一个PU高度。参考区域调整为仅包含可用样本。蓝色区域的扩展需要支持正形空间滤波器的“side samples",通过复制相邻重建像素(绿色区域)填充得到。
通过计算参考区域中亮度重建像素的自相关矩阵和亮度重建像素与色度重建像素之间的互相关向量来执行MSE最小化。