YUV

YCbCr,其中,Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。

人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。

4:2:0表示每4个像素有4个亮度分量,2个色度分量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最常用格式;

  相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。1个像素的大小 =(4*8+2*8)/4 = 12bit, 即1.5byte。

   在YUV420中,一个像素点对应一个Y,一个4X4的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。YUV420sp与YUV420p的数据格式它们的UV排列在原理上是完全不同的。420p(planar)它是先把U存放完后,再存放V,也就是说UV它们是连续的。而420sp(semi-planar)它是UV、UV这样交替存放的。(见下图) 有了上面的理论,我就可以准确的计算出一个YUV420在内存中存放的大小。

  width * hight =Y(总和); U = Y / 4; V = Y / 4.

  所以YUV420 数据在内存中的长度是 width * hight * 3 / 2,

  假设一个分辨率为8X4的YUV图像,它们的格式如下图:

  YUV420p

  

  YUV420sp

  

4:2:2表示每4个像素有4个亮度分量,4个色度分量(YYYYCbCrCbCr),是DVD、数字电视、HDTV 以及其它消费类视频设备的最常用格式;

4:4:4表示全像素点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。

时间: 2024-10-29 10:46:43

YUV的相关文章

Linux音视频(YUV图像数据格式)

摄像头图像数据的主流封装格式是JPEG/MJPG/YUV等,这些都是经过编码压缩的数据,大大减少了图像尺寸,方便传输和存储. 拓展: YUV是视频图像数据的主流格式,它根据人类眼睛的视觉特征设计--由于人类的眼睛对亮度的敏感度比颜色要高许多,而且在RGB三原色中对绿色有尤为敏感,利用这个原理,可以把色度信息减少一点,人眼也无法查觉这一点. YUV三个字母中,其中"Y"表示明亮度(Lumina nce或Luma),也就是灰阶值,而"U"和"V"表示

关于视频YUV

这里有一篇摘自MSDN的文章.介绍了YUV视频数据格式. About YUV Video Digital video is often encoded in a YUV format. This article explains the general concepts of YUV video, along with some terminology, without going deeply into the mathematics of YUV video processing. If y

MATLAB读取一张RGB图片转成YUV格式

1.读入照片 控制输出的标志定义 clc;close all;clear YES = 1; NO = 0; %YES表示输出该文件,请用户配置 yuv444_out_txt = 1; yuv444_out_yuv = 0; yuv422_out_txt = 0; yuv422_out_yuv = 0; yuv420_out_txt = 0; yuv420_out_yuv = 1; filename = 'Koala.jpg'; filestr = filename(1:findstr(filen

使用D3D渲染YUV视频数据

源代码下载 在PC机上,对于YUV格式的视频如YV12,YUY2等的显示方法,一般是采用DIRECTDRAW,使用显卡的OVERLAY表面显示.OVERLAY技术主要是为了解决在PC上播放VCD而在显卡上实现的一个基于硬件的技术.OVERLAY的出现,很好的解决了在PC上播放VCD所遇到的困难.早期PC处理能力有限,播放VCD时,不但要做视频解码工作,还需要做YUV到RGB的颜色空间转换,软件实现非常耗费资源,于是,YUV OVERLAY表面出现了,颜色空间转换被转移到显卡上去实现,显卡做这些工

USB视频采集系统 视频测试软件将正式发布(方便调试测试各自摄像头,RAW,RGB,YUV)

先上图,看看这个软件,学习fpga将近一年,了解视频图像开发方向也半年有余,不断学习不断总结,开发软件工具是为了更方便的学习新通信 主要相关知识: FPGA+SDRAM+VGA(双端口fifo技术) 68013 从端口fifo(usb2.0高速传输,速度高达43Mbyte/s) C++(mFC vs2008开发) 软件介绍: 本软件可以采集68013传输的各种图像格式 1.各自分辨率自由配置,均支持(已测:640*480,800*600,1024*768,1280*1024,2592*1944)

YUV数据YUY2到I420

/* 主要的采样格式有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=24 bits(如下图第一个图),(全采样后,YUV仍各占8bit).按4:1:1采样后,而现在平均

YUY2(YUV) 与 RGB 格式图片的相互转换 以及 基于YUY2(YUV)的blending

这是一个项目里使用的,API里从pool里取出的格式都是YUY2,但是图像处理的API库中要求都是jepg格式. YUY2经常用于电视制式以及许多摄像头的输出格式.而我们在处理时经常需要将其转化为RGB进行处理,这里简单介绍下YUY2(YUV)与RGB之间相互转化的关系: http://msdn2.microsoft.com/en-us/library/ms893078.aspx YUY2(YUV) To RGB: C = Y - 16 D = U - 128 E = V - 128 R = c

最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)

伴随着毕业论文的完毕,这两天最终腾出了空暇,又有时间搞搞FFMPEG的研究了.想着之前一直搞的都是FFMPEG解码方面的工作,非常少涉及到FFMPEG编码方面的东西,于是打算研究一下FFMPEG的编码.在网上看了一些样例,发现要不然是难度稍微有些大,要不然就是类库比較陈旧,于是就决定自己做一个编码方面的样例,方便以后学习. 本文的编码器实现了YUV420P的数据编码为JPEG图片.本着简单的原则,代码基本上精简到了极限.使用了2014年5月6号编译的最新的FFMPEG类库. 程序非常easy,打

ffmpeg实战教程(二)用SDL播放YUV,并结合ffmpeg实现简易播放器

我们先实现用SDL播放YUV数据 先来了解一下基本概念 SDL基本函数: [初始化] * SDL_Init(): 初始化SDL. * SDL_CreateWindow(): 创建窗口(Window). * SDL_CreateRenderer(): 基于窗口创建渲染器(Render). * SDL_CreateTexture(): 创建纹理(Texture). [循环渲染数据] * SDL_UpdateTexture(): 设置纹理的数据. * SDL_RenderCopy(): 纹理复制给渲染

Android上使用OpenGLES2.0显示YUV数据

在Android上用OpenGLES来显示YUV图像,之所以这样做,是因为: 1.Android本身也不能直接显示YUV图像,YUV转成RGB还是必要的: 2.YUV手动转RGB会占用大量的CPU资源,如果以这样的形式播放视频,手机会很热,所以我们尽量让GPU来做这件事: 3.OpenGLES是Android集成到自身框架里的第三方库,它有很多的可取之处. 博主的C/C++不是很好,所以整个过程是在Java层实现的,大家见笑,我主要参考(但不限于)以下文章,十分感谢这些朋友的分享: 1. htt