图像处理之CSC色彩转换
1 YUV域介绍
根据三基色原理,任意一种色光F都可以用不同分量的R、G、B三色相加混合而成,即F = r [ R ] + g [ G ] + b [ B ],其中r、g、b分别为三基色参与混合的系数。当三基色分量都为0(最弱)时混合为黑色光;而当三基色分量都为k(最强)时混合为白色光。调整r、g、b三个系数的值,可以混合出介于黑色光和白色光之间的各种各样的色光。
在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄像机进行摄像,然后把摄得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即Cr)、B-Y(即Cb),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YCbCr色彩空间表示。采用YCbCr色彩空间的重要性是它的亮度信号Y和色度信号Cb、Cr是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号,保证了信道兼容性。
CSC(color space convert):RGB与YCbCr颜色空间的转换,常用的色域空间有BT.601(SDTV,标清电视),BT.709(HDTV,高清电视),BT.2020(UHDTV,超高清电视),在不同的色域空间下,转换矩阵是不一致的。
色域表示显示设备能够显示的颜色范围,下图中马蹄形区域为人眼能看到的色彩区域,BT.601是标清视频使用的色域范围,BT.709和BT.2020分别对应高清和超高清视频的色域。
2 CSC转换矩阵
2.1 BT.601色域CSC
1 计算CSC转换后的Y分量(归一化)
EY = 0.299 ER + 0.587 EG + 0.114 EB (其中ER、EG、EB范围为[0,1])
2 归一化下红色色差分量等于红色分量减去亮度分量,即Cr
Cr = (ER - EY) = ER - 299 ER - 0.587 EG - 0.114 EB = 0.701 ER - 0.587 EG - 0.114 EB (Cr区间[-0.701,0.701])
对Cr归一化处理:
Cr = (ER - EY)/1.402 = 0.5 ER + 0.419 EG + 0.081 EB ; (Cr区间[-1, 1])
3 归一化下蓝色色差分量等于蓝色分量减去亮度分量,即Cb
Cb = (EB- EY) = EB - 0.299 ER - 0.587 EG - 0.114 EB = -0.299 ER - 0.587 EG + 0.886 EB (Cb区间[-0.886,0.886])
对Cb归一化处理:
CB = (EB- EY)/1.772 = 0.169 ER + 0.331 EG + 0.5 EB; (Cb区间为[-1 , 1])
4 由于信号的边缘有其它用途,在实际往往使用窄动态limited格式。比如8bit信号,亮度分量的范围为16-235(共220个灰阶),色差分量的范围为16-240(共225个灰阶)。10bit信号,亮度分量的范围为64-940(共877个灰阶),色差分量的范围为64-960(共897个灰阶)。因此灰阶定点化后各分量如下:
Y = 219 EY + 16 = 0.2568 * R + 0.5041 * G + 0.0979 * B + 16
Cb = 224 ECB + 128 = -0.1482 * R – 0.291 * G + 0.4392 * B + 128
Cr = 224 ECR + 128 = 0.4392 * R – 0.3678 * G – 0.0714 * B + 128
5 不考虑后面的offset偏移量,BT601_RGB2YCbCr的8Bit定点化后矩阵表示如下:
BT601_RGB2YCbCr =256* [ 0.2568 0.5041 0.0979 = [ 65.7408 129.0496 25.0624 = [ 66 129 25
-0.1482 -0.2910 0.4392 -37.9392 -74.4960 112.4352 -38 -74 112
0.4392 -0.3678 -0.0714] 112.4352 -94.1568 -18.2784] 112 -94 -18]
6 不考虑后面的offset偏移量,BT601_YCbCr2RGB的8Bit定点化后逆变矩阵表示如下:
BT601_YCbCr2RGB = inv(BT601_RGB2YCbCr) = 256 *[ 1.1644 -0.0001 1.5960 = [ 298 0 409
1.1644 -0.3917 -0.8130 298 -100 -208
1.1644 2.0173 -0.0001 ] 298 516 0]
2.2 BT.709色域CSC
1 计算CSC转换后的Y,Cb,Cr分量,转换如下:
Y = 219 EY + 16 = ?(219/255) * (0.2126 R + 0.7152 G + 0.0722 B) + 16 = 0.1826 R + 0.6142 G + 0.062 B + 16
Cb = 224 ECb + 128 = -0.1006 R - 0.3386 G + 0.4392 B + 128
Cr = 224 ECr + 128 = 0.4382 R - 0.398 G + 0.0402 B + 128
2 不考虑offset偏移量,BT709_RGB2YCbCr的8bit定点化矩阵表示如下:
BT709_RGB2YCbCr = 256 * [ 0.1826 0.6142 0.062 = [ 47 157 16
-0.1006 -0.3386 0.4392 -26 -87 112
0.4382 -0.398 -0.0402] 112 -102 -10]
3 不考虑offset偏移量,BT709_RGB2YCbCr的8bit定点化逆矩阵表示如下:
BT709_RGB2YCbCr = 256 * [ 1.1644 0.0001 1.7969 = [ 298 0 460
1.1644 -0.2133 -0.5342 298 -55 -137
1.1644 2.1125 -0.0002] 298 541 0 ]
2.3 BT.2020色域CSC
1 计算CSC转换后的Y,Cb,Cr分量,转换如下:
Y = 219 EY + 16 =(219/255) * (0.2627 R + 0.678 G + 0.0593 B) + 16 = 0.2256 R + 0.5832 G + 0.0509 B + 16
Cb = 224 ECb + 128 = (224/255) * (-0.2627 R - 0.678 G + 0.9407 B) / 1.8814 + 128 = -0.1227 R – 0.3166 G + 0.4392 B + 128
Cr = 224 ECr + 128 = (224/255) * (0.7373 R?-?0.678 G?- 0.0593 B) / 1.4746 + 128 = 0.4392 R – 0.4039 G - 0.0353 B + 128
2 不考虑offset偏移量,BT2020_RGB2YCbCr的8bit定点化矩阵表示如下:
BT2020_RGB2YCbCr = 256 * [ 0.2256 0.5832 0.0509 = [ 58 149 13
-0.1227 -0.3166 0.4392 -31 -81 112
0.4392 -0.4039 -0.0353] 112 -103 -9]
3 不考虑offset偏移量,BT2020_RGB2YCbCr的8bit定点化逆矩阵表示如下:
BT2020_YCbCr2RGB = 256 * [ 1.1632 0.0002 1.6794 = [ 298 0 430
1.1632 -0.1870 -0.6497 298 -48 -166
1.1634 2.1421 0.0008] 298 -48 -166]