YUV颜色编码格式
YUV 颜色编码采用的是 明亮度 和 色度 来指定像素的颜色,而色度又定义了颜色的两个方面:色调和饱和度。
其中:
- Y 表示明亮度(Luminance、Luma)
- U 和 V 表示色度(Chrominance、Chroma)(U,V 分别是蓝色通道和红色通道)
其中:
- Y 通道数值越高,图片则越亮
- U 通道数值越高,颜色就越接近蓝色
- V 通道数值越高,颜色就越接近红色
其历史来源是欧洲的电视系统采用的一种颜色编码方式,主要是为了让信号支持新的彩色电视,但也继续支持黑白电视。如果是黑白电视,只使用 Y 通道信号就足够。
YUV色彩编码格式由其色度抽样方式 + 存储方式决定。
1. 色度抽样方式
色度抽样方式用 J:A:B 表示
- J:最小水平抽样的的宽度,一般为4
- A:最小水平抽样区域第一行的色度抽样
- B:最小水平抽样区域第二行的色度抽样
下图是常见的抽样方式:
注意:
- 4:2:0并不是只抽样第一行的色度,是第一行和第二行轮番抽样的:4:2:0 -> 4:0:2 -> 4:2:0
- 不管是哪种抽样方式,亮度Y都是全抽样的,不同之处在于U、V分量的抽样率
- 常用的4:2:0的U、V都是半抽样,所以抽样后的数据量是RGB24一半。(RGB24相当于全抽样)
2. YUV存储方式
YUV存储方式主要分为两种:Packeted 和 Planar。
- planar 平面格式:将YUV分量分别存储到矩阵,每一个分量矩阵称为一个平面。
- packed 打包模式 :每个像素点的 Y、U、V 分量是连续交替存储的。
于是根据采样方式和存储格式的不同,就有了多种 YUV 格式。
以下链接包含了常见的YUV格式信息:
https://www.fourcc.org/yuv.php
3.常见格式
3.1 基于 YUV 4:2:0 采样的格式
基于 YUV 4:2:0 采样的格式主要有 YUV 420P 和 YUV 420SP 两种类型
YUV 420P 和 YUV 420SP 都是基于 Planar 平面模式进行存储的,两者都是先存储所有的 Y 分量后,
- YUV420P 类型会再存储所有的 U 分量或者 V 分量,采用的是三平面方式进行存储
- YUV420SP 则是按照 UV 或者 VU 的交替顺序进行存储,采用的是两平面方式进行存储
YUV 420P 类型又对应其它具体格式:
- YU12 格式(又称作 I420 格式,先 Y 再 U 后 V)
- YV12 格式(先 Y 再 V 后 U)
YUV 420SP 类型又对应其它具体格式:
- NV12 格式(IOS 中有的模式,先Y,再UV 进行交替存储)
- NV21 格式(Android 中有的模式,先Y,再VU 进行交替存储)
3.2 基于 YUV 4:2:2 采样的格式
YUV 4:2:2 采样规定了 Y 和 UV 分量按照 2: 1 的比例采样,两个 Y 分量公用一组 UV 分量。
基于 YUV 4:2:2 采样的格式主要有 YUYV 格式、UYVY 格式 和 YUV 422P 格式三种类型:
- YUYV 格式是采用Packed格式进行存储的,指每个像素点都采用 Y 分量,但是每隔一个像素采样它的 UV 分量。
- UYVY 格式是采用Packed格式进行存储,它的顺序和 YUYV 相反,先采用 U 分量再采样 Y 分量
- YUV 422P 格式,又叫做 I422,采用的是Planar格式、三平面进行存储,先存储所有的 Y 分量,再存储所有的 U 分量,再存储所有的 V 分量。
YUV颜色编码格式的更多相关文章
- YUV颜色编码解析(转)
原文转自 https://www.jianshu.com/p/a91502c00fb0
- .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度
.NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度 随机颜色在日常开发中很常用到,有时候要控制颜色明亮度,比如在白色背景网页上的随机颜色,一般要求颜色稍微暗一 ...
- 认识 YUV
什么是 YUV YUV是一种颜色编码格式,可以说YUV流媒体是原始流数据,大部分的视频领域都在使用.与RGB类似,但RGB更多的用于渲染时,而YUV则用在数据传输,因为它占用更少的频宽.当然,实时通讯 ...
- 【视频处理】YUV格式说明
YUV,是一种颜色编码方法,Y表示明亮度(Luminance.Luma),U和V则是色度.浓度(Chrominance.Chroma). YUV,Y`UV,YCbCr,YPbPr等都可以称为YUV,彼 ...
- yuv rgb 像素格式1
===========大小============= 一般,直接采集到的视频数据是RGB24的格式 RGB24一帧的大小size=width×heigth×3 Byte, RGB32的size=wid ...
- 转:YUV RGB 常见视频格式解析
转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...
- YUV格式具体解释
YUV是指亮度參量和色度參量分开表示的像素格式,而这样分开的优点就是不但能够避免相互干扰,还能够减少色度的採样率而不会对图像质量影响太大.YUV是一个比較笼统地说法,针对它的详细排列方式,能够分为非常 ...
- VLC 用到的那些 YUV 格式
YUV是视频应用中使用的一类像素格式.YUV实际上是所有“YUV”像素格式共有的颜色空间的名称. 与RGB格式(红 - 绿 - 蓝)相对应,YUV颜色用一个称为Y(相当于灰度)的“亮度”分量和两个“色 ...
- 图像处理之基础---yuv420及其rgb,bayer, yuv, RGB的相互转换详解
YUV格式解析1(播放器——project2) 根据板卡api设计实现yuv420格式的视频播放器 打开*.mp4;*.264类型的文件,实现其播放. 使用的视频格式是YUV420格式 YUV格式 ...
随机推荐
- js加密(七)steam登录
1. url: https://store.steampowered.com/login/?redir=&redir_ssl=1 2. target: 登录 3. 分析 3.1 老样子,抓包, ...
- JS高级---实例对象使用属性和方法层层的搜索 (实例对象-->原型对象-->报错)
实例对象使用属性和方法层层的搜索: 实例对象使用的属性或者方法, 先在实例中查找, 找到了则直接使用: 找不到则, 再去实例对象的__proto__指向的原型对象prototype中找, 找到了则 ...
- UVA10600 ACM Contest and Blackout
用prim算法求最小生成树和次小生成树~ #include<cstdio> #include<algorithm> #include<cstring> using ...
- [Python] Tkinter的食用方法_02_LabelFrame RadioButton CheckButton
#开始 Python的话 我是看的小甲鱼的视频 所以代码也是小甲鱼的修改版 本博客这里只是学习记录 小甲鱼是个很棒的老师,虽然经常飙车.... #第一个代码 from tkinter import * ...
- cmake 的使用
官网教程:https://cmake.org/cmake-tutorial/ 第一个简单的例子 源文件:tutorial.cpp // A simple program that computes t ...
- js将相除结果百分比 ,四舍五入函数 toFixed()
function percentNum(num, num2) { return (Math.round(num / num2 * 10000) / 100.00 + "%"); } ...
- powerbuilder连接oracle数据库
一.打开已经安装好的pb9.0,主界面菜单栏有个两个圆柱形就行数据库连接,点击database. 二.选择oracle版本,由于数据库版本是9i,可以使用084 oracle8/8i.右键--选择ne ...
- U2000解决备份:服务器不可达、FTP/TFTP/SFTP IP地址与网管地址不一致
只需要将一下几点设置到位这些问题基本解决: 设置->网元软件管理->FTP设置 如果你的U2000服务器和OLT都在一个内网,那么就IP1和IP2就都输入U2000服务器的内网IP,否则按 ...
- 【Go语言系列】第三方框架和库——GIN:GIN介绍
1.Gin 是什么? Gin 是一个用 Go (Golang) 编写的 HTTP web 框架. 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高 ...
- javascript的正则匹配
前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享. 原文地址[http://blog.sina.com.cn/s/ ...