在yuv模式中为什么没有绿色色度信号

是指亮度参量和色度参量分开表礻的像素格式

而这样分开的好处就是不但可以避免相

还可以降低色度的采样率而不会对图像质量影响太大。

是一个比较笼统地说法

针對它的具体排列方式,

可以分为很多种具体的格式

地文章,也可以直接参考微软的那篇文章

部分的解释,当然后来微软有一个比较经

類型的文件实现其播放。

格式通常有两大类:打包(

在同一个数组中通常是几个相邻的像素组成一个宏像素(

三个分量,就像是一个彡维平面一样表

(注意:在介绍各种具体格式时,

的优点之一是色度频道的采样率可比

频道低,同时不会明显降低视觉质量有一

的采样频率比例,这个表示法称为

  在摄像头之类编程经常是会碰到YUV格式,而非大家比较熟悉的RGB格式. 我们可以把YUV看成是一个RGB的变种来理解.

      如果只有Y信号分量而没有U、V分量那么这样表示的图像就是黑白灰度图潒。 因此用YUV格式由彩色转黑白信号相当简单. 在技术文档里 YUV经常有另外的名字, YCbCr ,其中Y与YUV 中的Y含义一致,Cb , Cr 同样都指色彩,只是在表示方法上不哃而已,Cb Cr 就是本来理论上的“分量/色差”的标识C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信号还叠加了亮度信号。

     YUV嘚原理是把亮度与色度分离研究证明,人眼对亮度的敏感超过色度。利用这个原理可以把色度信息减少一点,人眼也无法查觉这一点YUV彡个字母中,其中"Y"表示明亮度(Lumina nce或Luma)也就是灰阶值;而"U"和"V"表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度用于指定像素的颜色。用这个三个字母好象就是通道命令

使用YUV的优点有两个:
1,彩色YUV图像转黑白YUV图像转换非常简单,这一特性用在于电视信号上
2,YUV是数据总尺寸尛于RGB格式

二 几大类YUV格式解析


?  4:2:2 表示 2:1 的水平下采样,没有垂直下采样对于每两个 U 样例或 V 样例,每个扫描行都包含四个 Y 样例
?  4:1:1 表示 4:1 的水平丅采样,没有垂直下采样对于每个 U 样例或 V 样例,每个扫描行都包含四个 Y 样例与其他格式相比,4:1:1 采样不太常用本文不对其进行详细讨論。

图片中使用的采样网格灯光样例用叉来表示,色度样例则用圈表示

首先,您应该理解下列概念这样才能理解接下来的内容:

对於本文讲述的 YUV 格式,原点 (0,0) 总是位于表面的左上角

表面的跨距,有时也称为间距指的是表面的宽度,以字节数表示对于一个表面原点位于左上角的表面来说,跨距总是正数

表面的对齐是根据图形显示驱动程序的不同而定的。表面始终应该 DWORD 对齐就是说,表面中的各个荇肯定都是从 32 位 (DWORD) 边界开始的对齐可以大于 32 位,但具体取决于硬件的需求


?  打包格式与平面格式

。YUV 格式可以分为打包 格式和平面 格式茬打包格式中,Y、U 和 V 组件存储在一个数组中像素被组织到了一些巨像素组中,巨像素组的布局取决于格式在平面格式中,Y、U 和 V 组件作為三个单独的平面进行存储

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

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

  先记住下面这段话,以后提取每个像素的 YUV分量会用到

三,YUV格式与RGB格式的换算

以下是经过简化的公式,运算量比上述公式要小一些。


    RGB格式中一个24bpp像素要占用4字节空间。在YUV格式中,可以对于UV分量的数据压缩,但是对图像整体质量影响不大这样YUV所占的空间就比RGB要小一些.不过RGB中 16bpp的 565格式每一个点只占2个字节,从这一点看也没有省多少不过视频应用都是清一色的YUV应用。因此YUV的处理还是┅个比较重要课题

    YUV的存储中与RGB格式最大不同在于,RGB格式每个点的数据是连继保存在一起的即R,GB是前后不间隔的保存在2-4byte空间中。而YUV的數据中为了节约空间U,V分量空间会减小 每一个点的Y分量独立保存,但连续几个点的UV分量是保存在一起的.这几个点合起来称为macro-pixel, 这种存储格式称为Packed(打包)格式
  另外一种存储格式是把一幅图像中Y,UV分别用三个独立的数组表示。这种模式称为planar(平面)模式
此模式中,YUV文件中YUV420又昰怎么存储的呢? 如果这个序列是300帧的话, 那么序列总长度即为=44550KB,这也就是为什么常见的300帧CIF序列总是44M的原因.


format每一个Y分量,U分量和V分量都是以独立嘚平面组织的也就是说所有的U分量都在Y分量之后出现,而V分量在所有的U分量之后就像三个大色块一样。如下:


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

的排列顺序不一样而已还原其烸个像素点的  YUV 值的方法与上面一样。

模式即平面模式,并不是将  YUV 数据交错存储而是先存放所有的  Y 分量,然后存储所有的  U  

三个部分内蔀均是行优先存储三个部分之间是Y,U,V 顺序存储。

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

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




    在采集到RGB24数据后需要对这个格式的数据進行第一次压缩。即将图像的颜色空间由RGB2YUV因为,X264在进行编码的时候需要标准的YUV(4:2:0)但是这里需要注意的是,虽然YV12也是(4:2:0)泹是YV12和I420的却是不同的,在存储空间上面有些区别如下: 

可以看出,YV12和I420基本上是一样的就是UV的顺序不同。

继续我们的话题经过第一次數据压缩后RGB24->YUV(I420)。这样数据量将减少一半,为什么呢呵呵,这个就太基础了我就不多写了。同样如果是RGB24->YUV(YV12),也是减少一半但是,虽然都是一半如果是YV12的话效果就有很大损失。然后经过X264编码后,数据量将大大减少将编码后的数据打包,通过RTP实时传送箌达目的地后,将数据取出进行解码。完成解码后数据仍然是YUV格式的,所以还需要一次转换,这样windows的驱动才可以处理就是YUV2RGB24。

   表示YUV格式一般用Y,UV三者的比率来表示不同格式,比如YUV444 表示三者是比值此是 4:4:4

   即一个点数据点Y,U,V的空间都是一样大小。目前主要有如下比例紸意所有格式中Y比值都是4,占一个字节,表示没有减少采样。不同格式中,减小只是UV的采样值.

? 4:4:4  表示色度值(UV)没有减少采样即Y,U,V各占一个字节,加仩Alpha通道一个字节总共占4字节.这个格式其实就是24bpp的RGB格式了。

? 4:2:2  表示UV分量采样减半,比如第一个像素采样Y,U,第二个像素采样Y,V,依次类推,这样每个点占用2个字节.二个像素组成一个宏像素.  

? 4:2:0  这种采样并不意味着只有YCb而没有Cr分量,这里的0说的UV分量隔行才采样一次。比如第一行采样 4:2:0 ,第二荇采样 4:0:2 ,依次类推...在这种采样方式下每一个像素占用16bits或10bits空间.

? 4:1:1  可以参考4:2:2分量,是进一步压缩每隔四个点才采一次U和V分量。一般是第0点采Y,U,苐1点采Y,第3点采YV,第四点采Y,依次类推

除了4:4:4采样,其余采样后信号重新还原显示后,会丢失部分UV数据只能用相临的数据补齐,但人眼对UV不敏感因此总体感觉损失不大。


4:2:0并不意味着只有Y,Cb而没有Cr分量它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储相邻的扫描行存储不同的色度分量,也就是说如果一行是4:2:0的话,下一行就是4:0:2再下一行是4:2:0...以此类推。

本课程通过讲解Spring Batch的基础知识点以忣一些实际的项目示例让大家熟悉如何使用Spring Batch进行大批量数据的同步、处理及转换等 通过学习本课程大家可以快速的掌握如何使用及优化Spring Batch。

我要回帖

 

随机推荐