• RGB/YUV 转换


    ref: https://juejin.cn/post/6844903640377884679
    https://blog.shenyuanluo.com/ColorConverter.html

    YUV

    YUV:是一种颜色空间,基于 YUV 的颜色编码是流媒体的常用编码方式,这种表达方式起初是为了彩色电视与黑白电视之间的信号兼容;其中

    • Y:表示明亮度(Luminance 或 Luma),也称灰度图。
    • U、V:表示色度(Chrominance 或 Chroma),作用是描述影像的色彩及饱和度,用于指定像素的颜色。

    Y’CbCr:(也称为 YUV),是 YUV 的压缩版本,不同之处在于 Y’CbCr 用于 数字图像 领域,YUV 用于 模拟信号 领域;MPEGDVD、摄像机中常说的 YUV 其实是 Y'CbCr,二者转换为 RGBA 的转换矩阵是不同的。

    • Cr:(色度红)反应了 RGB 输入信号 红色 部分与 RGB 信号亮度值之间的差异(即,当前颜色对 红色 的偏移程度)。
    • Cb:(色度红)反应了 RGB 输入信号 蓝色 部分与 RGB 信号亮度值之间的差异(即,当前颜色对 蓝色 的偏移程度)。

    注意:如无特殊说明,本文讨论的 YUV 均指 Y'CbCr

    格式

    YUV存储格式:

    • planar:先存储 Y,然后 U,然后 V
    • packed:yuv 交叉存储。

    常见格式

    1. yuv444: packet 采样(yuv yuv yuv)和 planar 采样(yyyy uuuu vvvv

    2. yuv422:packet 采样

      • yuvy:YUYV YUYV
      • uyvy:UYVY UYVY
    3. yuv422p:planar采样:YYYY UU VV

    4. yuv420:packet采样: YUV Y YUV Y

    5. yuv420p:planar采样

      • I420:

        I420 内存布局

      • YV12:

        YV12 内存布局

    6. yuv420sp:Y 是planar采样,UV 是packet采样

      • NV12:

        NV12 内存布局

      • NV21:

        NV21 内存布局

    转换

    转换矩阵

    注意:这里的转换矩阵中,当转换为 RGB 读取 YUV 时,需要将 U(Cb)**、V(Cr)** 的取值范围整数表示时,转换为:[-128, 127];浮点数表示时,转换为:[-0.5, 0.5]

    (这是因为:U(Cb)**、V(Cr)** 取值范围是 [﹣128, 127],对应的浮点数表示为 [﹣0.5, 0.5];而在存储时,为了方便存储,跟 Y 数据一样,统一用一个(无符号)字节表示,即取值范围是 [0, 255],对应的浮点数表示为:[0, 1]。)

    特别注意:OpenGL 内置的矩阵(如 mat2mat3mat4 )是 列主序,即需要将下列转换矩阵转换成 转置矩阵

    YUV ——> RGB

    1. 常规转换标准:

      常规 YUV ——> RGB 转换矩阵

    2. BT.601 标准:(SD TV)

      BT.601 YUV ——> RGB 转换矩阵

    3. BT.709 标准:(HD TV)

      BT.709 YUV ——> RGB 转换矩阵

    RGB ——> YUV

    1. 常规转换标准:

      常规 RGB ——> YUV 转换矩阵

    2. BT.601 标准:(SD TV)

      BT.601 RGB ——> YUV 转换矩阵

    3. BT.709 标准:(HD TV)

      BT.709 RGB ——> YUV 转换矩阵

  • 相关阅读:
    PHP快速排序算法
    PHP选择排序算法
    php几个常用的概率算法(抽奖、广告首选)
    免费Git客户端:sourcetree详细介绍
    apidoc @apiGroup兼容中文
    PHP中的精确计算bcadd,bcsub,bcmul,bcdiv 及 扩展安装
    mysql-表分区
    mysql表优化
    MySQL执行计划extra中的using index 和 using where using index 的区别
    mysql-锁
  • 原文地址:https://www.cnblogs.com/wioponsen/p/14547427.html
Copyright © 2020-2023  润新知