位置: 编程技术 - 正文

RGB和YUV 多媒体编程基础详细介绍(rgb与yuv哪个好)

编辑:rootadmin

推荐整理分享RGB和YUV 多媒体编程基础详细介绍(rgb与yuv哪个好),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yuv相比rgb优势,rgb和yuv哪个好,rgb和yuv哪个好,rgb与yuv420,rgb和yuv哪个好,rgb和yuv444,rgb与yuv420,rgb和yuv哪个好,内容如对您有帮助,希望把文章链接给更多的朋友!

RGB和YUV 多媒体编程

一、概念

  1.什么是RGB?

  对一种颜色进行编码的方法统称为“颜色空间”或“色域”。用最简单的话说,世界上任何一种颜色的“颜色空间”都可定义成一个固定的数字或变量。RGB(红、绿、蓝)只是众多颜色空间的一种。采用这种编码方法,每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。记录及显示彩色图像时,RGB是最常见的一种方案。

  2.什么是YUV?

  YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。

  在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号B-Y(即U)、R-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。

  由此可见,RGB和YUV都属于颜色空间(或者叫“色彩空间”),如果不清楚色彩空间的概念。

二、RGB和YUV的优缺点

  1.RGB缺乏与早期黑白显示系统的良好兼容性。因此,许多电子电器厂商普遍采用的做法是,将RGB转换成YUV颜色空间,以维持兼容,再根据需要换回RGB格式,以便在电脑显示器上显示彩色图形。

  2.YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。

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

三、YUV和RGB的实现原理

  1.RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。

红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。

红、绿、蓝三个颜色通道每种色各分为阶亮度,在0时“灯”最弱——是关掉的,而在时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为时,是最亮的白色调。

RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于照明光、电视和计算机显示器。例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生青、洋红和黄。

  2.在YUV中,“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。

四、RGB和YUV的格式

  1.RGB的格式

  ①网页格式

  ②RGB

  ③RGB

  ④RGB

  ⑤RGB

  2.YUV格式

  YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。

  ①YUY2(和YUYV)格式为每个像素保留Y分量,而UV分量在水平方向上每两个像素采样一次。一个宏像素为4个字节,实际表示2个像素。(4:2:2的意思实际上是一个宏像素中有2个Y分量、1个U分量和1个V分量。)图像数据中YUV分量排列顺序如下:

  Y0 U0 Y1 V0 Y2 U2 Y3 V2 …

  ②YVYU格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同:

  Y0 V0 Y1 U0 Y2 V2 Y3 U2 …

  ③ UYVY格式跟YUY2类似,只是图像数据中YUV分量的排列顺序有所不同:

  U0 Y0 V0 Y1 U2 Y2 V2 Y3 …

  ④AYUV格式带有一个Alpha通道,并且为每个像素都提取YUV分量,图像数据格式如下:

  A0 Y0 U0 V0 A1 Y1 U1 V1 …

  ⑤ YP(和Y)格式为每个像素保留Y分量,而UV分量在水平方向上每4个像素采样一次。一个宏像素为个字节,实际表示8个像素。图像数据中YUV分量排列顺序如下:

  U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …

  ⑥ Y格式在水平方向上Y分量每2个像素采样一次,而UV分量每4个像素采样一次。一个宏像素为4个字节,实际表示4个像素。图像数据中YUV分量排列顺序如下:

  Y0 U0 Y2 V0 Y4 U4 Y6 V4 …

  ⑦YVU9格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个4 x 4的宏块,然后每个宏块提取一个U分量和一个V分量。图像数据存储时,首先是整幅图像的Y分量数组,然后就跟着U分量数组,以及V分量数组。IF格式与YVU9类似。

  ⑧IYUV格式为每个像素都提取Y分量,而在UV分量的提取时,首先将图像分成若干个2 x 2的宏块,然后每个宏块提取一个U分量和一个V分量。YV格式与IYUV类似。

  ⑨YUV、YUV格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。YUV并非V分量采样为0,而是跟YUV相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小一半色差采样。

  3.在DirectShow中,常见的RGB格式有RGB1、RGB4、RGB8、RGB、RGB、RGB、RGB、ARGB等;常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、YP、Y、Y、IF、IYUV、YV、YVU9、YUV、YUV等。

五、RGB和YUV转换

RGB和YUV 多媒体编程基础详细介绍(rgb与yuv哪个好)

  对于数字视频,定义了从 RGB 到两个主要 YUV 的转换。这两个转换都基于称为 ITU-R Recommendation BT. 的规范。

  第一个转换是 BT. 中定义用于 -Hz 的较早的 YUV 格式。它与在 ITU-R Recommendation BT. 中指定的关系相同, ITU-R Recommendation BT. 也被称为它的旧名称 CCIR 。这种格式应该被视为用于标准定义 TV分辨率( x ) 和更低分辨率视频的首选 YUV 格式。它的特征由下面两个常量 Kr 和 Kb 的值来定义:

  Kr = 0.

  Kb = 0.

  第二个转换为 BT. 中定义用于 -Hz 的较新 YUV 格式,应该被视为用于高于 SDTV 的视频分辨率的首选格式。它的特征由下面两个不同的常量值来定义:

  Kr = 0.

  Kb = 0.

  从 RGB 到 YUV 转换的定义以下列内容开始:L = Kr * R + Kb * B + (1 ? Kr ? Kb) * G然后,按照下列方式获得 YUV 值:

  Y = floor(2^(M-8) * (*(L?Z)/S + ) + 0.5)

  U = clip3(0, 2^M-1, floor(2^(M-8) * (*(B-L) / ((1-Kb)*S) + ) + 0.5))

  V = clip3(0, 2^M-1, floor(2^(M-8) * (*(R-L) / ((1-Kr)*S) + ) + 0.5))

  其中,M 为每个 YUV 样例的位数 (M >= 8)。

  Z 为黑电平变量。对于计算机RGB,Z 等于 0。对于 studio视频RGB,Z 等于 *2,其中 N 为每个 RGB样例的位数 (N >= 8)。S 为缩放变量。对于计算机RGB,S 等于 。对于 studio视频RGB,S 等于 *2。

  函数floor(x) 返回大于或等于 x 的最大整数。函数clip3(x, y, z) 的定义如下所示:

  clip3(x, y, z) = ((z < x) &#; x : ((z > y) &#; y : z))Y 样例表示亮度,U 和 V 样例分别表示偏向蓝色和红色的颜色偏差。Y 的标称范围为 *2 到 *2 。黑色表示为 *2 ,白色表示为 *2 。U 和 V 的标称范围为 *2 到 *2 ,值 *2 表示中性色度。但是,实际的值可能不在这些范围之内。

  对于 studio 视频 RGB 形式的输入数据,要使得 U 和 V 值保持在 0 到 2M-1 范围之内,必需进行剪辑操作。如果输入为计算机RGB,则不需要剪辑操作,这是因为转换公式不会生成超出此范围的值。

  这些都是精确的公式,没有近似值。

六、YUV的采样格式

  YUV的主要采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。

  其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值,图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R,G,B 都是 8bit unsigned) 模型, 1个点需要 8x3= bits(如下图第一个图),(全采样后,YUV仍各占8bit)。按4:1:1采样后,而现在平均仅需要 8+(8/4)+(8/4)=bits(4个点,8*4(Y)+8(U)+8(V)=bits), 平均每个点占bits(如下图第二个图)。这样就把图像的数据压缩了一半。

  上边仅给出了理论上的示例,在实际数据存储中是有可能是不同的,下面给出几种具体的存储形式:

  (1) YUV 4:4:4

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

  下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3

  (2) YUV 4:2:2

  每个色差信道的抽样率是亮度信道的一半,所以水平方向的色度抽样率只是4:4:4的一半。对非压缩的8比特量化的图像来说,每个由两个水平方向相邻的像素组成的宏像素需要占用4字节内存。

  下面的四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3

  映射出像素点为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]

  (3) YUV 4:1:1

  4:1:1的色度抽样,是在水平方向上对色度进行4:1抽样。对于低端用户和消费类产品这仍然是可以接受的。对非压缩的8比特量化的视频来说,每个由4个水平方向相邻的像素组成的宏像素需要占用6字节内存。

  下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  存放的码流为: Y0 U0 Y1 Y2 V2 Y3

  映射出像素点为:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

  (4)YUV4:2:0

  4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。对每个色度分量来说,水平方向和竖直方向的抽样率都是2:1,所以可以说色度的抽样率是4:1。对非压缩的8比特量化的视频来说,每个由2x2个2行2列相邻的像素组成的宏像素需要占用6字节内存。

  下面八个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

  [Y5 U5 V5] [Y6 U6 V6] [Y7U7 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] [Y7U2 V7] [Y8 U2 V7]

完!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

详解js运算符单竖杠“|”与“||”的用法和作用介绍 在js开发应用中我们通常会碰到|与||了,那么在运算中|与||是什么意思呢?在js整数操作的时候,相当于去除小数点,parseInt。在正数的时候相当于Math.flo

Javascript 普通函数和构造函数的区别 普通函数和构造函数的区别在命名规则上,构造函数一般是首字母大写,普通函数遵照小驼峰式命名法。在函数调用的时候:functionfn(){}构造函数:1.newf

JS 全屏和退出全屏详解及实例代码 JS全屏和退出全屏js实现浏览器窗口全屏和退出全屏的功能,市面上主流浏览器如:谷歌、火狐、等都是兼容的,不过IE低版本有点瑕疵(全屏状态下

标签: rgb与yuv哪个好

本文链接地址:https://www.jiuchutong.com/biancheng/376018.html 转载请保留说明!

上一篇:javascript typeof id==='string'?document.getElementById(id):id解释 原创

下一篇:详解js运算符单竖杠“|”与“||”的用法和作用介绍(js的运算符)

  • 进口关税的计算方式
  • 定期定额户申报表怎么填
  • 公司注销前欠客户钱
  • 印花税缴款怎么用银行卡支付
  • 税金计提多了,交少了怎么处理
  • 无形资产开发阶段
  • 提交印花税会计分录
  • 本期免税额怎么填写
  • 一般纳税人开差额票的税率
  • 购买旧固定资产的增值税进项税
  • 行政事业单位专用材料费列支范围
  • 股东多人实收资产怎么办
  • 物业公司代收水电费会计分录
  • 专项应付款转资本公积
  • 增值税留抵还需要交税吗
  • 增值税发票处理流程
  • 购买面粉的税率是多少
  • 机动车销售统一票据可以抵扣吗
  • 防伪税控技术维护费是进项还是销项
  • 个人租车给公司租金多少合适
  • 保证金利息收入怎么开票
  • 差旅费税务要求比例
  • 电子发票跨月怎么开红字发票
  • 给子公司拨款怎么记账
  • 供应商赠送的原材料怎么做分录
  • 经营费用与营业收入区别
  • vue2-elm
  • 研发费用加计扣除的条件
  • 个税手续费返还要交企业所得税吗
  • 多发工资未退回会怎么样
  • 受托加工物资的账务处理例题
  • 预付账款流程
  • wordpress文章缩略图
  • php字符串变量
  • 股份支付费用是股权激励成本吗?
  • php数组函数 菜鸟
  • bc2.exe
  • ihs.exe是什么
  • 基础会计供应过程的核算内容
  • vue2动态路由
  • 业务实际发生没得取得发票怎么做账
  • 没有收入的情况下可以填成本吗
  • 同一控制下控股合并在合并日合并报表编报正确的有
  • 小狐狸吧
  • 仓库盘点单模板
  • Vue3+TypeScript+Vite如何使用require动态引入类似于图片等静态资源
  • php自加
  • 固定资金是什么科目
  • 借款可以抵货款吗
  • 小规模纳税人的个人所得税怎么算
  • 交易性金融资产的账务处理
  • 长期待摊费用借方负数什么意思
  • 跨地区经营增值税如何缴纳
  • 个人所得税申报方式选哪个比较好
  • 一般纳税人简易计税方法适用情形
  • 车辆保险费如何缴纳印花税的
  • 无形资产175加计扣除例题
  • 购买办公用品如何节约成本
  • 股东分红申报个税怎么填
  • 固定资产盘亏是营业外支出吗
  • 业务招待费专用会计科目
  • 销售费用的主要科目
  • 进项税留抵怎么做分录
  • 同一个法人的两家企业可以进行互相开票吗
  • 其他应收款明细表怎么填
  • 如何恢复数据库删除的文件
  • ubuntu无线网卡怎么用
  • linux rootkit查杀
  • win8系统如何安装惠普打印机
  • ubuntu20.04问题
  • centos7 dns
  • .ctc文件
  • win7电脑剪贴板里面的内容在哪打开
  • 新闻客户端手机版下载
  • 安卓沉浸式状态栏框架
  • python常用的安装扩展
  • jq 使用
  • onInterceptTouchEvent onTouchEvent 的坑 坑死了
  • jQuery实现的可编辑表格完整实例
  • 电子税务局密码能随便告诉别人吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设