zoukankan      html  css  js  c++  java
  • 图像处理之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]

  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/qiqibaby/p/8608893.html
Copyright © 2011-2022 走看看