入门视频采集与处理(学会分析YUV数据)

作视频采集与处理,天然少不了要学会分析YUV数据。由于从采集的角度来讲,通常的视频采集芯片输出的码流通常都是YUV数据流的形式,而从视频处理(例如H.26四、MPEG视频编解码)的角度来讲,也是在原始YUV码流进行编码和解析,因此,了解如何分析YUV数据流对于作视频领域的人而言,相当重要。本文就是根据个人学习和了解,简单地介绍如何分析YUV数据流。微信

 

YUV,分为三个份量,Y:表示明亮度(Luminance或Luma),也就是灰度值;而 U 和 V :表示的则是色度(Chrominance或Chroma),做用是描述影像色彩及饱和度,用于指定像素的颜色。ide

    

与咱们熟知的RGB相似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息同样能够显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。而且,YUV不像RGB那样要求三个独立的视频信号同时传输,因此用YUV方式传送占用极少的频宽。学习

 

好了,言归正传,谈谈如何分析YUV码流吧。YUV码流有多种不一样的格式,要分析YUV码流,就必须搞清楚你面对的究竟是哪种格式,而且必须搞清楚这种格式的YUV采样和分布状况。下面我将介绍几种经常使用的YUV码流格式,供你们参考。编码


1. 采样方式   设计

 

YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,关于其详细原理,能够经过网上其它文章了解,这里我想强调的是如何根据其采样格式来从码流中还原每一个像素点的YUV值,由于只有正确地还原了每一个像素点的YUV值,才能经过YUV与RGB的转换公式提取出每一个像素点的RGB值,而后显示出来。视频


用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y份量,以空心圆圈表示采用该像素点的UV份量。blog

     

先记住下面这段话,之后提取每一个像素的YUV份量会用到。get


YUV 4:4:4采样,每个Y对应一组UV份量。 
 
YUV 4:2:2采样,每两个Y共用一组UV份量。 

YUV 4:2:0采样,每四个Y共用一组UV份量。


2. 存储方式it

 

下面我用图的形式给出常见的YUV码流的存储方式,并在存储方式后面附有取样每一个像素点的YUV数据的方法,其中,Cb、Cr的含义等同于U、V。微博


(1) YUVY 格式 (属于YUV422)


YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其余的像素点的YUV取值依次类推。


(2) UYVY 格式 (属于YUV422)

UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不一样的是UV的排列顺序不同而已,还原其每一个像素点的YUV值的方法与上面同样。


(3) YUV422P(属于YUV422)


YUV422P也属于YUV422的一种,它是一种Plane模式,即打包模式,并非将YUV数据交错存储,而是先存放全部的Y份量,而后存储全部的U(Cb)份量,最后存储全部的V(Cr)份量,如上图所示。其每个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。好比,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。


(4)YV12,YU12格式(属于YUV420)


YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V份量分别打包,依次存储。其每个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y份量共用一组UV。注意,上图中,Y'00、Y'0一、Y'十、Y'11共用Cr00、Cb00,其余依次类推。


(5)NV十二、NV21(属于YUV420)


NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,可是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种相似,即Y'00、Y'0一、Y'十、Y'11共用Cr00、Cb00


3. 总结

 

几种常见的YUV码流格式就简单地列在上面了,你们在处理YUV码流前,先了解清楚本身的码流到底属于哪种,而后对应进行处理。

 

最后,再回答一个疑问,即分析清楚YUV码流格式了,咱们能够作什么?最经常使用的一点就是,提取出全部的Y份量,而后利用vc或者matlab把你采集的图像的灰度值(Y份量)显示处理,这样你就能够很快地知道你采集的图像是否有问题了。后面我将继续写一些文章讲述如何提取、转换、显示这些YUV原始码流,有兴趣能够继续关注,欢迎留言讨论。


有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流,或者关注个人新浪微博 @卢_俊 或者关注个人微信公众号(@Jhuster)获取最新的文章和资讯。

相关文章
相关标签/搜索