YUV的来源

YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法。在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和两个色差总共三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。

YUV和RGB之间换算公式的差异

①  YUV与RGB之间变换

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

U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')

V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')

R' = Y' + 1.140*V'

G' = Y' - 0.394*U' - 0.581*V'

B' = Y' + 2.032*U'

② YCbCr与RGB之间变换:

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

Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128

Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128

R' = 1.164*(Y’-16) + 1.596*(Cr'-128)

G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)

B' = 1.164*(Y’-16) + 2.017*(Cb'-128)

Note: 上面各个符号都带了一撇,表示该符号在原值基础上进行了gamma correction

YUV和YCbCr来源上的差异

YUV色彩模型来源于RGB模型,

该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。

应用:模拟电视视频,basic color model used in analogue color TV broadcasting.

YCbCr模型来源于YUV模型。

应用:数字视频,ITU-R BT.601 recommendation

ps:

通过上面的比较可以确定,我们在h.264,mpeg等编码标准中用的yuv其实是YcbCr,大家不要被名称搞混淆了

彩色空间的线性变换标准

为了使用人的视角特性以降低数据量,通常把RGB空间表示的彩色图像变换到其他彩色空间。目前采用的彩色空间变换有三种:YIQ, YUV和YCrCb。每一种彩色空间都产生一种亮度分量信号和两种色度分量信号,而每一种变换使用的参数都是为了适应某种类型的显示设备。其中,YIQ适用于NTSC彩色电视制式,YUV适用于PAL和SECAM彩色电视制式,而YCrCb适用于计算机用的显示器。

1、YUV与YIQ模型
在彩色电视制式中,使用YUV和YIQ模型来表示彩色图像。在PAL彩色电视制式中使用YUV模型,其中的YUV不是那几个英文单词的组合词,而是符号,Y表示亮度,UV用来表示色差,U、V是构成彩色的两个分量;在NTSC彩色电视制式中使用YIQ模型,其中的Y表示亮度,I、Q是两个彩色分量。

YUV的优点:
a、YUV表示法的重要性是它的亮度信号(Y)和色度信号(U、V)是相互独立的 。
b、YUV表示法的另一个优点是可以利用人眼的特性来降低数字彩色图像所需要的存储容量。

在考虑人的视觉系统和阴极射线管(CRT)的非线性特性之后,RGB和YUV的对应关系可以近似地用下面的方程式表示:
Y = 0.299R + 0.587G + 0.114B
U
 = - 0.147R- 0.289G + 0.436B
V
 = 0.615R - 0.515G - 0.100B

2、YIQ与RGB彩色空间变换

RGB和YIQ的对应关系用下面的方程式表示:
Y = 0.299R + 0.587G + 0.114B
I
 = 0.596R - 0.275G - 0.321B
Q
 = 0.212R - 0.523G + 0.311B

电视扫描和同步

扫描有隔行扫描(interlaced scanning)和非隔行扫描之分。非隔行扫描也称逐行扫描,图4-08表示了这两种扫描方式的差别。黑白电视和彩色电视都用隔行扫描,而计算机显示图像时一般都采用非隔行扫描。

YUV4:2:0是什么意思?

首先是为什么要有YUV,而不是RGB,采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。

视频一般采用YUV(YCbCr)的颜色空间,其原理是人类视觉系统对亮度比彩色更敏感,因此可以把亮度信息从彩色信息分离出来,并使之具有更高的清晰度,而稍微降低彩色信息的清晰度,这样就可以在人眼未感觉图像有什么差异的前提下压缩带宽,实现一定的视频压缩。例如在压缩影像中,以4:2:2 Y'CbCr作例,它只需使用比R'G'B'(4:4:4)三分之二的带宽即可传输。

目前主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。问题是,这些符号到底是什么意思呢?视频系统的抽样系统中通常用一个三分比值表示:J:a:b(例如4:2:2),形容一个以J个像素宽及两个像素高的概念上区域,有时候会以四分比值表示(例如4:2:2:4)。依序列出为:
         J:水平抽样参照(概念上区域的宽度)。通常为4。
         a:在J个像素第一行中的色度抽样数目 (Cr, Cb)。
         b:在J个像素第二行中的额外色度抽样数目 (Cr, Cb)。

·        Alpha:水平因子(与首数值有关连)。若没有此部分者可忽略,或存在时与J相同。

在比较图像质量时,这三个值之间的比值才是重要的,所以4:4:4可以简化为1:1:1;但是习惯上亮度样本的数量值总为4,其他两个值依此类推。有时抽样率为四分比值,如4:2:2:4。这时第四个值是调制通道的抽样频率比值。事实上,因为在调制应用中非常需要高质量图像,所以这个值在任何情况下都为4,所以采用J:a:b的表示方式更为常见。

四种YUV格式区别如下:

YUV  4:4:4抽样方式:
Y: Y0  Y1  Y2  Y3
U: U0    U1  U2  U3
V: V0  V1  V2  V3

YUV   4:2:2抽样方式:
Y   : Y0  Y1  Y2  Y3
U/V: U0    V1  U2  V3

YUV   4:1:1抽样方式:
Y   : Y0  Y1  Y2  Y3
U/V: U0     V2

YUV   4:2:0抽样方式:
Y: Y0    Y1   Y2     Y3       ...   Yn-1      第一行n个像素
U: U0                     U2
Y: Yn  Yn+1   Yn+2  Yn+3 ...     Y2n-1    第二行n个像素
V: Vn         Vn+2 
注意:这里的Vn是U0一起采样的,都属于Y0对应像素对应的色度值(CrCb),不要被这里的表述所混淆。

从这张图里可以很明显的看到,在表述4:2:0抽样时之所以将CrCb单独列出来,原因是对色度信号Cr和Cb是每行交替传送的,而绝不是"在第一行只采样一个色度Cr,然后在第二行采样另一个色度Cb"理解。很明显,这样图比较复杂,一般的书籍将其简化成了第一张图的样子,这反而有时让我们难以理解。

参考:https://blog.csdn.net/xueyushenzhou/article/details/40817949

对YUV4:2:0认识理解相关推荐

  1. 说说你对http、https、http2.0的理解【前端每日一题-25】

    说说你对http.https.http2.0的理解? HTTP的基本优化 影响一个HTTP网络请求的因素主要有两个:带宽和延迟. 带宽 如果说我们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响 ...

  2. accept 返回0_从0开始理解Vite的主要新特性(一)

    此文已同步到公众号[因卓诶]以及因卓诶博客: 从0开始理解Vite的主要新特性(一) - 因卓诶-爱分享爱原创的技术博客 ~ 个人博客​www.yinzhuoei.com vite这个工具确实尤大在微 ...

  3. YUV4:2:2和YUV4:2:0 区别

    1) YUV 4:4:4 YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节. 下面的四个像素为: [ ...

  4. OAuth2.0的理解基础

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 1. 应用场景 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个&quo ...

  5. WINCE6.0深入理解TOC

    ********************************LoongEmbedded************************ 作者:LoongEmbedded(kandi) 时间:201 ...

  6. Tensorflow2.0与Tensorflow1.0的理解

    Tensorflow1.x与Tensorflow2.x的理解 首先,作者接触过tf1.0和tf2.0,结合说明一下! Tensorflow0.x.x 这个版本貌似很难install到,笔者安装好几次都 ...

  7. TensorFlow2.0(十一)--理解LSTM网络

    理解LSTM网络 前言 1. 循环神经网络 2. 长期依赖问题 3. LSTM网络 4. LSTM背后的核心思想 5. 单步解析LSTM网络结构 5.1 遗忘门结构 5.2 输入门结构 5.3 输出门 ...

  8. C语言之对 0, ‘0‘ , \0 以及 “0“ 的理解

    刚开始学习c语言时对这块不是很了解,非常困惑,后来随着学习的深入,终于明白了其中的不同,希望以下文章能对你有所帮助. 0是个整型字符,类似于1,2,3这样的整型.单引号括起来的是字符常量,只能有一个字 ...

  9. 证明 logX X 对所有的 X 0成立 理解mark

    最近在看书增长见识,所以可能最近会更一些自己对一些问题的理解. 题目: 证明: logX < X 对所有的 X > 0成立.(计算机中默认以2为底) 对于这个问题,百度了很多种解法,有先分 ...

最新文章

  1. Linux 内核源代码分析 chap 2 存储管理 (5)
  2. 在linux系统安装R及rstudio
  3. 前言:写python和django博客的背景
  4. linux系统相关硬件查询
  5. oracle set feedback off,Oracle数据库之Oracle导出数据中的prompt,set feedback 等是什么意思...
  6. 【数据结构与算法】之深入解析“实现strStr()”的求解思路与算法示例
  7. aliyun的maven下载jar的方法
  8. (转)用 Fiddler 看看 UpdatePanel 发生了什么
  9. 一文读懂 | 进程怎么绑定 CPU
  10. 腾讯 深圳 25928-PHP开发工程师(深圳)
  11. android imageview 设置网络图片,ImageView加载网络图片
  12. Laravel配置自带组件实现各类型邮件发送功能的代码实例
  13. [有限元] 刚度矩阵每一行的元素之和为零的条件
  14. [深度学习]人脸检测-Tensorflow2.x keras代码实现
  15. Java Web学习笔记01:动态网站初体验
  16. 零基础学python还是c语言-学习汇编还是学习python,自己刚学完C语言,学习那个好呢?...
  17. java8读流_JAVA: Java8流逐行读取文件
  18. 【软件开发】:非功能需求与功能需求
  19. android netd的工作流程解析
  20. 盒子综合案例——德云社十八愁与宠物知识栏

热门文章

  1. win7下设置无线上网
  2. 正则表达式提取字符串内所有的img标签下的src路径
  3. 谨防电子邮件泄露数据
  4. 用oc/c编写冒泡排序
  5. 利用公众号 + WeRoBot开发一款AI应用
  6. [Overleaf] -带你初识Latex神器.快速上手.更新中...
  7. Dockerfile指令详解:ONBUILD 为他人作嫁衣裳
  8. centos 7 yum安装mysql完整过程记录
  9. spark重要参数调优建议:spark.default.parallelism设置每个stage默认的task数量
  10. git每次操作都要输入账号密码 解决方案