什么是YUV、RGB?

  • 由来

    • 通常我们用RGB表示一种彩色。计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色。而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机来存放两种图像数据。所以为了兼容两种电视机,专家就引入YUV格式代替RGB,其中Y表示亮度, U和V表示色差。 黑白电视机只用Y信号, 而彩色电视机可由YUV转换成RGB再显示颜色。通常我们所用的YUV格式是 ITU-R 的标准 , 也叫YCbCr.
  • YUV与RGB的换算规则
    Y     Y = 0.299 x R + 0.587 x G + 0.114 x B + 0
    U    Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128
    V    Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128
    
  • YUV4:4:4
    • 其实就是YUV的数据各占用8位, 每个像素都由YUV组成
    • 同一行的相邻4个像素数据:
      Y0U0V0 Y1U1V1 Y2U2V2 Y3U3V3
      存储时: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
      即每个像素YUV的数据都会存放起来,为什么叫4:4:4? 意思就是4个像素里的数据有4个Y, 4个U, 4个V
  • YUV4:2:2
    • 其实绝大部分相邻的两个像素,数据差异应不大。所以为了节省空间便于存储,丢失每个像素的部分数据。专家研究表 明我们人对亮度比较敏感,而对色彩不怎么敏感。所以每个像素的亮度Y数据是绝对不动的,而色差数据可以进行丢弃。
      同一行的相邻4个像素数据: Y0U0V0 Y1U1V1 Y2U2V2 Y3U3V3
      存储时: Y0 U0 Y1 V1 Y2 U2 Y3 V3,每两个相邻的像素, 一个丢弃V数据,一个丢弃U数据
      为什么叫4:2:2?意思就是相邻的4个像素里有4个Y, 2个U, 2个V。 按上面存储的顺序也叫YUYV。但还原成RGB数据必须需要YUV, 像第一个像素只有Y0U0是没法还原的,这时只能用下一像素的V1数据。还原时的YUV: [Y0U0V1] [Y1U0V1] [Y2U2V3] [Y3U2V3],这样还原理论上会对图像的质量有影响的,但我们看不出来的.
  • YUV4:2:0
    • 专家们进一步研究表示,每一行的相邻两个像素与下一行同位置的两个像素数据差异不大,可以进一步的丢数据。如两行的像素数据:

      Y00U00V00 Y01U01V01 Y02U02V02 Y03U03V03 ....
      Y88U88V88 Y89U89V89 Y90U90V90 Y91U91V91 ....
      存储时:Y00U00 Y01 Y02U02 Y03 ,每个像素的Y数据保留, 两个像素数据只保留一个U数据。这一行不保留V数据(YUV: 420),Y88V88 Y89 Y90V90 Y91,两个像素数据只保留一个V数据, 这行不保留U数据(YUV: 402),还原时只能相同位置的上下两行4个像素结合还原:

      Y00U00V88  Y01U00V88  Y02U02V90  Y03U02V90
      Y88U00V88  Y89U00V88  Y90U02V90  Y91U02V90
      

      下一节介绍YUV数据两种存储方式(平面、打包)

时间: 2024-10-30 06:02:30

什么是YUV、RGB?的相关文章

最简单的视音频播放示例2:GDI播放YUV, RGB

前一篇文章对"Simplest Media Play"工程作了概括性介绍.后续几篇文章打算详细介绍每个子工程中的几种技术.在记录Direct3D,OpenGL这两种相对复杂的技术之前,打算先记录一种和它们属于同一层面的的简单的技术--GDI作为热身. GDI简介 下面这段文字摘自维基百科: 图形设备接口(Graphics Device Interface或Graphical Device Interface,缩写GDI),是微软公司视窗操作系统(Microsoft Windows)的三

YUV RGB 常见视频格式解析

I420是YUV格式的一种,而YUV有packed format和planar format两种,而I420属于planar format的一种. 同时I420表示了YUV的采样比例4:2:0.4:2:0的YUV并不是说没有V分量,而是指对于每一个行,只有一个U或者V分量.比如第一行里,是YUYYUY,到了第二行是YVYYVY,那么对于每一行来说就是4:2:0或者4:0:2.需要说明的是,这里的排列方式是针对packedformat而言的,因此并不适用于I420这样的planar format.

最简单的视音频播放示例7:SDL2播放RGB/YUV

本文记录SDL播放视频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API用于播放视频:封装了DirectSound这类的API用于播放音频.因为SDL的编写目的就是简化视音频播放的开发难度,所以使用SDL播放视频(YUV/RGB)和音频(PCM)数据非常的容易.下文记录一下使用SDL播放视频数据的技术.   SDL简介 SDL(Simple DirectMedia La

最简单的视音频播放示例5:OpenGL播放RGB/YUV

本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenGL并被大多数PC游戏开发商所采用,但在专业高端绘图领域,OpenGL因为色彩准确,仍然是不能被取代的主角. OpenGL简介 从网上搜集了一些有关OpenGL简介方面的知识,在这里列出来.开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言.跨平

最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)

上一篇文章记录了GDI播放视频的技术.打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术.Direct3D应该Windows下最常用的播放视频的技术.实际上视频播放只是Direct3D的"副业",它主要用于3D游戏制作.当前主流的游戏几乎都是使用Direct3D制作的,例如<地下城与勇士>,<穿越火线>,<英雄联盟>,<魔兽世界>,<QQ飞车>等等.使用Direct3D可以用两种方式渲染视频:Surface和

视音频数据处理入门:RGB、YUV像素数据处理【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/50534150 ===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理入门:PCM音频采样数据处理 视音频数据处理入门:H.264视频码流解析 视音频数据处理入门:AAC音频码流解析 视音频数据处理入门:FLV封装格式解析 视音频数据处理入门

sws_scale解出来的RGB图像颠倒问题

AVFrame* pFrame;                   // Frame AVCodecContext* pContext;          // Codec Contextint nUsedBytes = avcodec_decode_video(pContext, pFrame,  &nFrame, pSrcBuffer, nSrcLength);if(nUsedBytes > 0){    AVFrame  out_pic;    SwsContext* img_con

MTK6577+Android之Camera驱动

MTK6577+Android之Camera驱动 <MTK安卓平台的Camera效果在线调试> 1.     Camera拍照相关概念   1.1  ISP   isp--(Image Signal Processor)--影视处理   无论数码相机.摄像机或者摄像手机,其影像数据从前端感应后,皆须经过ASP(Analog Signal Processing).ADC(Analog-Digital Converter).前期影像处理(Pre-ISP)与后端影像处理(Post-ISP)四个阶段后

人生就要挑战新难度——记zxing的深化

首先,我们来看看zxing一些基本介绍. ZXing是一个开放源码的,用Java实现的多种格式的1D(注1d条码主要常见的条码) /2D条码(主要是二维码) 图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码.我们目前支持以下格式: UPC-A,UPC-E EAN-8,EAN-13 39码 93码 代码128 创新及科技基金 库德巴 RSS-14(所有的变体 RSS扩展(大多数变体) QR码 数据矩阵 阿兹台克

FFMPEG SDK 开发介绍

FFMPEG SDK 开发介绍 1.简介:     ffmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序. 使用ffmpeg能够完成如下功能:parse,demux,decode,filter(preprocessing),encode,mux,stream和player等. 2.下载和编译:     下载地址:  http://ffmpeg.org/download.html     编译:        1)windows平台static library/sh