• YUV与RGB 以及之间的转换


    目录

    一、RGB

    二、YUV

    三、YUV类型和存储方式

    1、类型

    2、存储方式

    四、分析YUV 4:2:0

    1、YU12(I420,YUV420P)

    2、YV12

    3、NV12(YUV420SP)

    4、NV21(YUV420SP)

    5、占用空间大小比较

    五、RGB与YUV之间的转换

    1、转换标准

    2、Color Range

    3、计算公式


    在视频技术中,通常碰到的两种颜色空间RGB和YUV

    一、RGB

            指图像的每一个像素都是有R、G、B三个值。

            摄像头采集的原始图像和显示器显示的图像都是RGB图像

            RGB图像中分量的排序R,G,B,也可能是B、G、R

    二、YUV

            在视频领域更多使用YUV

            Y 亮度信息,是图像的总体轮廓;黑白电视机

            UV色彩信息,主要描绘图像的色彩信息。

    三、YUV类型和存储方式

    1、类型

            YUV 4:4:4   每一个Y对应一组UV

            YUV 4:2:2 每两个Y共用一组UV

            YUV 4:2:0 每四个Y共用一组UV

    2、存储方式

            planer:Y U V 连续存储

            Packed:先存储完所有Y,然后U,V连续的交错存储

    四、分析YUV 4:2:0

            每上、下、左、右4个像素点共用一个U和一个V。分为以下4种

    1、YU12(I420,YUV420P)

    这种类型是Planar格式,先存储完Y,再存储U,之后存储V

    2、YV12

    这种类型是Planar格式,先存储完Y,再存储V,之后存储U

    3、NV12(YUV420SP)

    这种类型是Packed格式,先存储完Y,之后U,V交错存储。

    4、NV21(YUV420SP)

    这种类型是Packed格式,先存储完Y,之后V,U交错存储。

    5、占用空间大小比较

    4X4像素的YUV420只需要24字节,而RGB需要48字节,存储少了一半。

    4X4X3(每个点三个字节R,G,B) = 48

    五、RGB与YUV之间的转换

    1、转换标准

            BT709(高清) 和BT601标准(标清)

    2、Color Range

            一个8bit的RGB,每个分量的范围并不都是 0~255

            1)Full Range

                    范围取值 0~255

            2)Limited Range

                    范围取值 16~235

    3、计算公式

    BT601 limited range

    YUV->RGB

    R = Y - 16 + 1.372 * (V - 128)

    G = Y - 16 - 0.337 * (U - 128) - 0.699 * (V - 128)

    B = Y - 16 + 1.734 * (U - 128)

    RGB->YUV

    Y = 0.299 * R + 0.587 * G + 0.114 * B + 16

    U = -0.173 * R - 0.339 * G + 0.511 * B + 128

    V = 0.511 * B - 0.428 * G - 0.083 * B + 128

    BT601 full range

    YUV->RGB

    R = 1.164 * (Y - 16) + 1.596 * (V - 128)

    G = 1.164 * (Y - 16) - 0.392 * (U - 128) - 0.812 * (V - 128)

    B = 1.164 * (Y - 16) + 2.016 * (U - 128)

    RGB->YUV

    Y = 0.257 * R + 0.504 * G + 0.098 * B + 16

    U = -0.148 * R - 0.291 * G + 0.439 * B + 128

    V = 0.439 * R - 0.368 * G - 0.072 * B + 128


    BT709 full range

    YUV->RGB

    R = 1.1644 * (Y - 16) + 1.7928 * (V - 128)

    G = 1.1644 * (Y - 16) - 0.2133 * (U - 128) - 0.533 * (V - 128)

    B = 1.1644 * (Y - 16) + 2.1124 * (U - 128)

    RGB->YUV

    Y = 0.1826 * R + 0.6142 * G + 0.0620 * B + 16

    U = -0.1006 * R - 0.3386 * G + 0.4392 * B + 128

    V = 0.4392 * B - 0.3989 * G - 0.0403 * B + 128

    BT709 limit range

    YUV->RGB

    R = Y + 1.5748 * (V - 128)

    G = Y - 0.1881 * (U - 128) - 0.4681 * (V - 128)

    B = Y + 1.8556 * (U - 128)

    RGB->YUV

    Y = 0.2126 * R + 0.7152 * G + 0.0722 * B

    U = -0.1146 * R - 0.3854 * G + 0.500 * B + 128

    V = 0.500 * B - 0.4542 * G - 0.0468 * B + 128

     参考 

    ​​​​​​​https://ke.qq.com/course/3202131?flowToken=1040744

  • 相关阅读:
    web大作业 静态网页(地下城与勇士 10页 带视频)
    Netty学习知识点总结
    “数智芯生,云端共创”,利尔达精彩亮相第十八届国际物联网展
    免费api接口分享,开发效率快速提升
    Ubuntu系统设置
    抖音电商进一步“去淘宝化”
    linux mysql 连接出现“too many connections”问题解法
    网络了解&&编程&&五层协议
    JDBC中ResultSet的使用
    在阿里云请求发短信接口去掉证书验证
  • 原文地址:https://blog.csdn.net/WANGYONGZIXUE/article/details/127971015