一 简介

YUV 是一种表示颜色的模型。基于人类眼睛对亮度高度敏感、对颜色敏感度低于亮度的生理特征 YUV在对照片或视频编码时完整保存像素的亮度分量(Y),根据不同要求采样保存UV分量。

根据历史的演进,YUV的发明是由于彩色电视与黑白电视的过渡时期。黑白视频只有Y(Luma,Luminance)视频,也就是灰阶值。到了彩色电视规格的制定,是以YUV/YIQ的格式来处理彩色电视图像。

YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。

YUV和Y'UV通常用来编码电视的模拟信号,而YCbCr则是用来描述视频的数字信号,适合视频与图片压缩以及传输,例如MPEG、JPEG。但在现今,YUV通常已经在电脑系统上广泛使用。

二 理解亮度敏感

什么是亮度敏感?只有理解了亮度敏感,我们才能更好的理解YUV。先看如下图:

上图是一张纯黑的图片,对于眼睛来说是没有亮度可言的。而下图:

可以明显看到图中白色的“二”字,因为“二”字的亮度明显高于周围,所以我们很清晰的看到这个字。 再看下图:

上图中可以很清晰的看到一个小人和一个三角形、正方形。 小人是白色的,三角形和正方形是浅灰色的,但是相对于小人,你是不是对三角形和正方形的颜色分辨的不太清晰,相信我稍微加重或者减轻浅灰色,你都不太能感觉出来,但你能明显的感觉的它们是什么形状,黑白电视也是由此受到启发的。

到这里我们就知道了什么是亮度,而且明白我们的眼睛确实是对亮度很敏感。而YUV中的Y就是指黑白的图画,UV就是颜色。一张色彩艳丽的图如果存储成YUV数据的话,Y就是这张图的黑白照,UV就是把它涂上颜色;因此我们完全可以抛弃掉UV,只保留Y,那样就是看这张图的黑白照而已~

 三 YUV的采样和存储

由于人眼对 Y 的敏感度远超于对 U 和 V 的敏感,所以有时候可以多个 Y 分量共用一组 UV,这样既可以极大得节省空间,又可以不太损失质量。因此才会出现YUV 420,YUV 422,YUV 444的格式。

其实图像最开始是用到在电视上的,所以我们可以用电视做为想象和参考,电视以前都是电子仪扫描,所以我们首先要明白什么是扫描线,

什么是扫描线?这是关于电视显示的术语,用来描述电视是如何显示画面的。wiki中是这么解释的:

电视萤幕由电子枪射出的电子,经由磁场偏向后打在屏幕上而发光,因此每一个图框都由电子枪的扫描线画出来。
电子枪的扫描线从左上角像素点到右下角像素点顺序移动,喷射电子显像。

再来说回YUV,因为UV分别代表不同颜色信号,所以直接使用R与B信号表示色度的UV。 也就是说UV信号告诉了电视要偏移某象素的颜色,而不改变其亮度。 或者UV信号告诉了显示器使得某个颜色亮度依某个基准偏移。 UV的值越高,代表该像素会有更饱和的颜色。

彩色图像记录的格式,常见的有RGB、YUV、CMYK等。 彩色电视最早的构想是使用RGB三原色来同时传输。这种设计方式是原来黑白带宽的3倍,在当时并不是很好的设计。RGB诉求于人眼对色彩的感应,YUV则着重于视觉对于亮度的敏感程度,Y代表的是亮度,UV代表的是彩度(因此黑白电影可省略UV,相近于RGB),分别用Cr和Cb来表示,因此YUV的记录通常以Y:UV的格式呈现。

采样通常用3部分的比例表示J:a:b(例如4:2:2)。如果有alpha通道,也用4个数的比例(例如4:2:2:4)。

概念上来说,我们考虑的是J个像素宽,2个像素高的区域。

J: 水平采样的参考,也可以说是宽度,通常是4(因为最小宏像素是4个Y共享一个uv,所以取4)
a: 第一行J个像素的色度个数(Cr, Cb)
b: 第一行和第二行有差别的色度个数(Cr, Cb)。注意b的值通常为0或者等于a。
主流的采样方式有三种:YUV4:4:4,YUV4:2:2,YUV4:2:0
可以看到4:4:4格式的亮度、色度采样分布。就像图中所表示的,画面中每个象素都有与之对应的色度和亮度采样信息。

其次就是4:2:2,就是说,每4点Y采样,就有2点Cb和2点Cr。在这种格式中,色度信号的扫描线数量和亮度信号一样多,但是每条扫描线上的色度采样点 数却只有亮度信号的一半。当4:2:2信号被解码的时候,“缺失”的色度采样,通常由一定的内插补点算法通过它两侧的色度信息运算补充。
再看4:2:2格式亮度、色度采样的分布情况。在这里,每个象素都有与之对应的亮度采样,同时一半的色度采样被丢弃,所以我们看到,色度采样信号每隔 一个采样点才有一个。当着张画面显示的时候,缺少的色度信息会由两侧的颜色通过内插补点的方式运算得到。就像上面提到的那样,人眼对色度的敏感程度不如亮 度,大多数人并不能分辨出4:2:2和4:4:4颜色构成的画面之间的不同。
色度信号分辨率最低的格式,也就是DVD所使用的 格式,就是4:2:0了。事实上4:2:0是一个混乱的称呼,按照字面上理解,4:2:0应该是每4点Y采样,就有2点Cb和0点Cr,但事实上完全不是 这样。事实上,4:2:0的意思是,色度采样在每条横向扫描线上只有亮度采样的一半,扫描线的条数上,也只有亮度的一半!换句话说,无论是横向还是纵向, 色度信号的分辨率都只有亮度信号的一半。

YUV的格式

YUV格式有两大类:planar和packed。

  • 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
  • 对于packed的YUV格式,每个像素点的Y,U,V是连续交叉存储的。

(1) YUVY 格式 (属于YUV422)

YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。

(2) UYVY 格式 (属于YUV422)

UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。

(3) YUV422P(属于YUV422)

YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。

(4)YV12,YU12格式(属于YUV420)

YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00,其他依次类推。

(5)NV12、NV21(属于YUV420)

NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00

I420: YYYYYYYY UU VV    =>YUV420P
YV12: YYYYYYYY VV UU    =>YUV420P
NV12: YYYYYYYY UVUV     =>YUV420SP
NV21: YYYYYYYY VUVU     =>YUV420SP

视频图像格式YUV详解相关推荐

  1. yuv420p 详解_视频格式YUV详解

    什么是YUV YUV(也称YCbCr)是电视系统所采用的一种颜色编码方法.其中 Y 表示明亮度,也就是灰阶值,它是基础信号:U 和 V 表示的则是色度,UV 的作用是描述影像色彩及饱和度,它们用于指定 ...

  2. 《视频直播技术详解》系列:(4)采集

    原文来自七牛云,感谢原作者. <视频直播技术详解>系列:(0)汇总 采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节.视频的采集涉及两方面数 ...

  3. 【音视频第6天】基础知识-移动端实时音视频直播技术详解和开源工程WebRTC的技术原理和使用浅析

    本文是系列文章中的第1篇,本系列文章的大纲如下: <移动端实时音视频直播技术详解(一):开篇> <移动端实时音视频直播技术详解(二):采集> <移动端实时音视频直播技术详 ...

  4. IOS视频编辑功能详解上篇-添加水印

    前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUImage即可实现多种滤镜.磨皮美颜的功能,并且可以脸部识别实时美颜等功能,这个有很多 ...

  5. 视频直播技术详解(8)直播云 SDK 性能测试模型

    <视频直播技术详解>系列之八:直播云 SDK 性能测试模型 牛小七2016年10月12日发布在 视频直播技术详解 七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完 ...

  6. 视频直播技术详解(7)现代播放器原理

    <视频直播技术详解>系列之七:现代播放器原理 牛小七2016年9月29日发布在 视频直播技术详解 from: http://blog.qiniu.com/archives/7040 七牛云 ...

  7. 视频直播技术详解(0)开篇

    (原标题:<视频直播技术详解>系列之一:开篇) 文|何李石 随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革.手机设备拍摄视频能力和网络的升级催生 ...

  8. 《视频直播技术详解》系列之七:现代播放器原理

    七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣. 结合七牛实时流网络 LiveNet 和直播云解 ...

  9. 《视频直播技术详解》系列之八:直播云 SDK 性能测试模型

    七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣. 结合七牛实时流网络 LiveNet 和直播云解 ...

  10. 【干货】某视频app推荐详解.pdf(附下载链接)

    今天给大家带来一份干货资料<某视频app推荐详解.pdf>,本文档包含推荐目标.推荐模型.推荐架构以及产品和运营相关的问题,文档已收录到小程序省时查报告中,大家可以到省时查报告小程序中查看 ...

最新文章

  1. 史上最强iPhone越狱工具诞生,而且是开源!
  2. TensorRT was linked against cuBLAS/cuBLAS LT 11.2.0 but loaded cuBLAS/cuBLAS
  3. python的官方网站地址是什么-规范化Django/Python中的街道地址
  4. Shell-alias在Shell脚本中的使用
  5. java布局管理器的应用总结,GridBagLayout布局管理器的应用
  6. 中国的程序员为什么这么辛苦?
  7. 马匹赛跑java_java模拟龟兔赛跑
  8. OpenShift 4 - 在离线环境中用 oc-mirror 获取 OpenShift 和 Opeartor 的相关镜像
  9. CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路
  10. python表白代码大全简单-python表白代码
  11. Word转PDF,字体格式问题
  12. sql server 2005 T-SQL ALTER SCHEMA (Transact-SQL)
  13. 计算机辅助设计 Photoshop 教案,计算机辅助设计①Photoshop学习领域课程标准.doc
  14. flask中的应用工厂
  15. QBitmap 单色图片
  16. Python的raw string原始字串转化为string一般字符串,还有结尾插入‘\‘的方法,还有把string转化为raw string
  17. Selenium 手动安装方法
  18. java计算机毕业设计夕阳红养老院系统源代码+数据库+系统+lw文档
  19. 【Kotiln】 错误锦集- Caused by: kotlin.NotImplementedError: An operation is not implemented: not implemen
  20. 美国是一个愚蠢而落后的国度--大家千万别去

热门文章

  1. Makima修正Hermite插值
  2. matlab dll 反编译,libmx.dll
  3. 简单理解匈牙利KM算法
  4. KM算法实现带权匹配C#版本和C++两个版本实现O^3
  5. 武汉市电子信息职业技术学校现代电子电工高水平实训基地
  6. React.js小书
  7. GD32系列外部中断
  8. 棋牌游戏框架解析(一)
  9. windows下一键修改IP地址
  10. java epoll 模型_I/O多路复用技术详解之epoll模型