ycrcb各分量含义_YCrCb与YPrPb的含义与区别
对一种颜色进行编码的方法统称为"颜色空间"或"色域",RGB和YUV,都是颜色空间的种类,
Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠
分量视频信号(色差信号),通常采用YCbCr和YPbPr两种标识,
YUV(YCbCr)是525i/625i(480i/576i)隔行分量输入接口
YPbPr是从480i到720p的分量输入接口标准(不区分隔行和逐行),隔行分量端子和逐行分量端子共用,端子标识为YPbPr,无论隔行还是逐行分量信号都从这个端口输入。
Y'PbPr是为了满足高质量视频传输而设计的色彩分量形式及接口形式,采用并行传输的方式。PbPr也是由B'-Y'及R'-Y'经过限幅得到的,目前,这种接口多见于模拟分量录像机、高清摄录一体机及DVD播放机等。模拟分量传输绕过了PAL编码与解码,减轻了亮/色串扰等编解码对图像的损失,但传输距离受到限制。
Y'CbCr是数字电视标准化时,为了兼容亮度、色差这种色彩编码方式而采用的一种类似于Y'PbPr的分量形式。
YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL)。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。与RGB视频信号传输相比,它最大的优点在于只需占用极少的带宽(RGB要求三个独立的视频信号同时传输)。
其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;
而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
“亮度”是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面—色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异; YUV经常有另外的名字,YCbCr ,其中Y与YUV 中的Y含义一致,Cb , Cr同样都指色彩,,只是在表示方法上不同而已,Cb Cr 就是本来理论上的“分量/色差”的标识。C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信号,还叠加了亮度信号。
以下是标准公式
RGB转换成YUV
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) +16
Cr = V =(0.439 * R) - (0.368 * G) - (0.071 * B) +128
Cb = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128
YUV转换成RGB
B =1.164(Y - 16) + 2.018(U - 128)
G =1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R =1.164(Y - 16) + 1.596(V - 128)
RGB取值范围均为0~255,Y=0~255,U=-122~+122,V=-157~+157
以下是经过简化的公式,运算量比上述公式要小一些。
RGB转YUV
Y =0.299R + 0.587G + 0.114B
U'=(BY)*0.565
V'=(RY)*0.713
YUV转RGB
R = Y+ 1.403V'
G = Y- 0.344U' - 0.714V'
B = Y+ 1.770U'
YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0;
用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。
先记住下面这段话,以后提取每个像素的YUV分量会用到。
YUV4:4:4采样,每一个Y对应一组UV分量
YUV4:2:2采样,每两个Y共用一组UV分量
YUV4:2:0采样,每四个Y共用一组UV分量
4:4:4表示色度值(UV)没有减少采样。即Y,U,V各占一个字节,加上Alpha通道一个字节,总共占4字节.这个格式其实就是24bpp的RGB格式了。
4:2:2表示UV分量采样减半,比如第一个像素采样Y,U,第二个像素采样Y,V,依次类推,这样每个点占用2个字节.二个像素组成一个宏像素.
4:2:0这种采样并不意味着只有Y,Cb而没有Cr分量,这里的0说的U,V分量隔行才采样一次。比如第一行采样4:2:0 ,第二行采样4:0:2 ,依次类推...在这种采样方式下,每一个像素占用16bits或10bits空间.
4:1:1可以参考4:2:2分量,是进一步压缩,每隔四个点才采一次U和V分量。一般是第0点采Y,U,第1点采Y,第3点采YV,第四点采Y,依次类推。
下面我用图的形式给出常见的YUV码流的存储方式,并在存储方式后面附有取样每个像素点的YUV数据的方法,其中,Cb、Cr的含义等同于U、V。
YUYV格式
YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。
UYVY格式
UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。
YUV422P格式
YUV422P也属于YUV422的一种,它是一种Plane模式,即打包模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y'00、Y'01而言,其Cb、Cr的值均为Cb00、Cr00。
YV12,YU12
格式
YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00,其他依次类推。
NV12,NV21格式
NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00
I420格式
I420就是YUV420P格式;存储方式参考YUV422P;
一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。
在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I420的却是不同的,在存储空间上面有些区别。如下:
YV12:亮度(行×列)+U(行×列/4) +V(行×列/4)
I420:亮度(行×列)+V(行×列/4) +U(行×列/4)
可以看出,YV12和I420基本上是一样的,就是UV的顺序不同。
YUV420 planar数据,以720×488大小图象YUV420 planar为例,其存储格式是:共大小为(720×480×3>>1)字节,
分为三个部分:Y,U和V
Y分量: (720×480)个字节
U(Cb)分量:(720×480>>2)个字节
V(Cr)分量:(720×480>>2)个字节
三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。即YUV数据的
0 - 720×480字节是Y分量值,
720×480 - 720×480×5/4字节是U分量
720×480×5/4 - 720×480×3/2字节是V分量。
4:2:2和4:2:0转换:
最简单的方式:
YUV4:2:2 --->YUV4:2:0 Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。 YUV4:2:0 --->YUV4:2:2 Y不变,将U和V信号值的每一行分别拷贝一份形成连续两行数据。
ycrcb各分量含义_YCrCb与YPrPb的含义与区别相关推荐
- python玫瑰花数量的含义_玫瑰花数量的含义?玫瑰花个数的含义?
鲜花有万紫千红,唯独玫瑰被公认为爱情的象征.她高贵清新,娇艳不失典雅,不同颜色,乃至不同的数量都有着不同的感情寓意.玫瑰花数量的含义?玫瑰花个数的含义? 时下,比较常见且受欢迎的是11朵.19朵.29 ...
- YCrCb与YPrPb的含义与区别
对一种颜色进行编码的方法统称为"颜色空间"或"色域",RGB和YUV,都是颜色空间的种类, Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YU ...
- mysql explain中的type列含义和extra列的含义
很多朋友在用mysql进行调优的时候都肯定会用到explain来看select语句的执行情况,这里简单介绍结果中两个列的含义. 1 type列 官方的说法,说这列表示的是"访问类型" ...
- 机器学习recall含义_机器学习的业务含义
机器学习recall含义 by Drew Breunig 通过德鲁·布鲁尼格 机器学习的业务含义 (The Business Implications of Machine Learning) 这与它 ...
- 配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。...
项目背景:242后期,别人写的代码出现问题,我测试中发现的. 当时在内存中设立了一个队列,用arrylist存放任务队列,但是经过一段时间后,发现队列中信息没有了,还以为是出现异常的原因,最后,在网友 ...
- mysql中的extra是什么意思_1130mysql explain中的type列含义和extra列的含义
很多朋友在用mysql进行调优的时候都肯定会用到explain来看select语句的执行情况,这里简单介绍结果中两个列的含义. 1 type列 官方的说法,说这列表示的是"访问类型" ...
- 台达编码器型号含义_光电编码器型号含义_光电编码器应用实例
光电编码器型号含义 例型号是:ZKX-6A-50BM7.5T-G05E.厂家:长春光学有限公司 型号含义如下: ZKX产品型号,外径38盲孔轴8:6A是顺序号:50BM是500脉冲,B指的是AB相位差 ...
- linux文件 含义,Linux各个文件及其含义
树状目录结构: 以下是对这些目录的解释: /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及 ...
- linux命令的含义,Linux常见命令及含义
1.查看目录结构 ls(list) :列出 ll :列出当前目录下的文件信息 ls -al :列出当前目录下的文件信息(包括隐藏文件,特殊目录) ll /bin/ :列出根目录下bin目录下的文件信息 ...
最新文章
- cidr斜线记法地址块网络前缀_学习笔记之《计算机网络》- 网络层(一)
- synchronized关键字原理
- MySQL: ERROR 1040: Too many connections”的异常情况1
- HihoCoder - 1441 后缀自动机一·基本概念(模拟,后缀自动机入门好题)
- springboot页面乱码问题
- matlab与树莓派通信
- mysql 去除warning_zabbix监控mysql之去掉烦人的warning告警语句
- des加密出的字符串有特殊字符吗_纯干货分享丨内网渗透很难学吗?
- Js中Currying的应用
- python连接不上数据库_详解pycharm连接不上mysql数据库的解决办法
- 学习记录—HTML标签
- 新工作上班九天心得(附 bootstrap分页写法)
- git21天打卡-day8 本地分支push到远程服务器
- hdu 4619 Warm up 2(并查集)
- IDC评述网:1月下旬国内域名注册商净增量Top10
- 使用putty上传文件到linux
- pandas将字符串转换成时间_数据处理利器 pandas 实例详解 (下)
- 一文说清长安链ChainMaker同步模块
- 【NLP】Transformer框架原理详解-1
- R语言使用order函数降序排序向量数据、设置decreasing参数进行降序排序
热门文章
- 运动圈(运动社交)App
- 攻防世界:command_execution
- 地址栏是about:blank,页面有内容,不能保存和查看源文件
- java templates_java中如何设定new template
- Ubuntu 加入开机自启动命令(rc.local)
- Linux字符串处理函数strdup、strndup、strndupa、strdupa
- excel柱状图加折线图组合怎么做
- java script特效
- 网页特效java代码,网页特效代码(关于javasript)
- CSDN平台上怎么样才能赚钱?