YUV小结

背景

一般视频采集芯片采集到数据都是按照YUV格式输出,包括很多现在很多的相机。所以对音视频开发者来说,掌握YUV知识非常必要的。

RGB

RGB是一种颜色空间,以红(R)绿(G)蓝(B)三基色为坐标。

YUV

YUV也是一种颜色空间,一种编码格式,当初是为了兼容黑白电视和彩色电视机设计的。

  • Y 表示明亮度(Luminance、Luma),也就是灰阶值。
  • U、V 表示色度(Chrominance 或 Chroma),描述的是色调和饱和度

YUV采样

YUV采样格式有3种:

  • YUV444 采样: 每1个Y分量对应一组UV分量,一个像素共占用(8+8+8)bit = 3byte
  • YUV422 采样: 每2个Y分量对应一组UV分量,一个像素共占用(8+81/2 + 81/2)bit = 2byte
  • YUV420 采样: 每4个Y分量对应一组UV分量,一个像素共占用(8+81/4+81/4) = 1.5byte****

如下图所示:
实心圆点表示Y分量,空心圆点表示UV分量


2019091109122264

分别介绍一下这三种格式:
YUV444

v2-a210bb73a7e4d9abfc84716798aab63e_1440w

四个像素为:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样的码流为:
Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
映射出的像素点为:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
一张 1920 * 1280 大小的图片,如果按照YUV444采样,其存储占用共
(192012808 + 192012808 + 192012808)/8/1024/1024 = 7.03M
这种采样方式和RGB大小一样
YUV422

v2-a99ba29d8f672a04128e98fd8be847ab_1440w

四个像素为:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样的码流为:
Y0 U0 Y1 V1 Y2 U2 Y3 U3
映射出的像素点为:
[Y0 U0 V1]、[Y1 U0 V1]、[Y2 U2 V3]、[Y3 U2 V3]
一张 1920 * 1280 大小的图片,如果按照YUV444采样,其存储占用共
(192012808 + 1920128081/2 + 1920128081/2)/8/1024/1024 = 4.68M
相比于RGB,节省了1/3空间
YUV420

v2-6811dfa7e2f914eee232b490a496e80e_1440w

图像像素为:
[Y0 U0 V0]、[Y1 U1 V1]、 [Y2 U2 V2]、 [Y3 U3 V3] [Y5 U5 V5]、[Y6 U6 V6]、 [Y7 U7 V7] 、[Y8 U8 V8]

采样的码流为:
Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8

映射出的像素点为:
[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7] [Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]
一张 1920 * 1280 大小的图片,如果按照YUV444采样,其存储占用共
(192012808 + 1920128081/4 + 1920128081/4)/8/1024/1024 = 3.51M
相比于RGB,节省了1/2空间

YUV存储

YUV存储方式分成两种:

  • packed格式: 打包格式,YUV分量交替存储。
  • planar格式: 先连续存储所有像素点Y分量,再存储所有像素点的U分量,最后存储所有像素 点的V分量。

不同的采样方式和不同存储方式组合成很多格式,比如YUYV,UYVY,YUV420P,YUV420SP,YU12,YU21,NV12,NV21

YUYV
YUYV是YUV422打包格式,采用打包格式进行存储,Y 和 UV 分量按照 2:1 比例采样,每个像素都采集 Y 分量,每隔一个像素采集它的 UV 分量。
存储方式:
Y0 U0 Y1 V0 Y2 U2 Y3 V2
Y0 和 Y1 共用 U0 V0 分量,Y2 和 Y3 共用 U2 V2 分量。

UYVY
UYVY 也是 YUV422 采样的存储格式中的一种,只不过与 YUYV 排列顺序相反。
U0 Y0 V0 Y1 U2 Y2 V2 Y3

YUV422P
YUV422P 属于 YUV422 的一种,它是一种 planer 模式,即 Y、U、V 分别存储。

YUV420P 和 YUV420SP
YUV420P 是基于 planar 平面模式进行存储,先存储所有的 Y 分量,然后存储所有的 U 分量或者V 分量。

v2-cb7e35268a89e09d2ca7b75a383d03b2_1440w

同样,YUV420SP 也是基于 planar 平面模式存储,与 YUV420P 的区别在于它的 U、V 分量是按照 UV 或者 VU 交替顺序进行存储。


v2-ab706465d4a728f68c29946c04a7fa02_1440w

YU12 和 YV12
YU12 和 YV12 格式都属于 YUV 420P 类型,即先存储 Y 分量,再存储 U、V 分量,区别在于:YU12 是先 Y 再 U 后 V,而 YV12 是先 Y 再 V 后 U 。

NV12 和 NV21
NV12 和 NV21 格式都属于 YUV420SP 类型。它也是先存储了 Y 分量,但接下来并不是再存储所有的 U 或者 V 分量,而是把 UV 分量交替连续存储。
NV12 是 IOS 中有的模式,它的存储顺序是先存 Y 分量,再 UV 进行交替存储。
NV21 是 安卓 中有的模式,它的存储顺序是先存 Y 分量,在 VU 交替存储。

RGB和YUV转换

RGB转YUV公式如下:
\begin{array}{rll} Y &= 0.299 * R + 0.587 * G + 0.114 * B \\ U &= -0.169 * R - 0.331 * G + 0.5 * B + 128 \\ V &= 0.5 * R - 0.419 * G - 0.081 * B + 128 \end{array}

YUV转RGB公式如下:
\begin{array}{rll} R & = Y + 1.13983 * (V - 128) \\ G & = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128) \\ B & = Y + 2.03211 * (U - 128) \end{array}

矩阵表示法如下:
\begin{bmatrix} Y \\ U \\ V \end{bmatrix} = \begin{bmatrix} 0.299 & 0.587 & 0.114 \\ -0.169 & -0.331 & 0.5 \\ 0.5 & -0.419 & -0.081 \end{bmatrix}\begin{bmatrix} R \\ G \\ B\end{bmatrix} + \begin{bmatrix} 0 \\ 128 \\ 128 \end{bmatrix}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 前言:RGB 和 YUV 都是色彩空间模型,下面来分别介绍下 一、RGB颜色编码 颜色编码格式,是指每种颜色都可以...
    旅行者_sz阅读 2,064评论 1 0
  • RGB 颜色编码 RGB颜色编码格式 每种颜色都可以用(红,绿,蓝)三种原色来表示,将RGB分别取不同的值,展示不...
    王俏阅读 400评论 0 0
  • RGB和YUV 多媒体编程 一、概念 1.什么是RGB? 对一种颜色进行编码的方法统称为“颜色空间”或“色域”。用...
    流年易逝_李阅读 14,518评论 0 6
  • 矩阵 在先讲颜色编码之前,先回顾一下高数中的矩阵的基本知识《线性代数》: 什么是矩阵 矩阵是指纵横排列的二维数据表...
    DramaScript阅读 6,716评论 2 10
  • 数字媒体压缩 为缩小数字媒体文件的大小,我们需要对其使用压缩技术,一般来说我们所欣赏的媒体内容都进行过一定程度的压...
    安静的泼猴阅读 2,860评论 1 0