422 422÷80并且验算的数式?

二、列竖式计算除法的要验算。

小明和小芳去商店买铅笔小明买了8枝,小芳买了4枝小明说:“我比你多用了8角钱。”每枝铅笔多少钱?

一.YUV格式与RGB格式的换算

  而实际應用时希望避免低速的浮点运算,所以需要整数算法
  注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法:

  RGB一般是8位精度现在缩放1000倍,所以上面的运算是32位整型的运算注意后面那个除法是整数除法,所以需要加上500来实现四舍五入
  就是由于该算法需要32位运算,所以该公式的另一个变种很流行:

  但是虽说上一个公式是32位整数运算,但是根据80x86体系的整数乘除指囹的特点是可以用16位整数乘除指令来运算的。而且现在32位早普及了(AMD64都出来了)所以推荐使用上一个公式。

   如果只有Y信号分量而没有U、V分量那么这样表示的图像就是黑白灰度图像。因此用YUV格式由彩色转黑白信号相当简单. 

   在技术文档里YUV经常有另外的名字, YCbCr ,其中Y与YUV 中的Y含義一致,Cb , Cr 同样都指色彩,只是在表示方法上不同而已,Cb Cr 就是本来理论上的“分量/色差”的标识C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信 号还叠加了亮度信号。

数字信号都是YCbCr 其应用领域很广泛,JPEG、MPEG均采用此格式在后文中,如无特别指明讲的YUV都是指YCbCr格式。

  而YPbPr一般是模拟信号我引用两段来说明两者区别

  1.   YCbCr表示隔行分量端子,是属于YUV经过缩放和偏移的翻版常说的YUV也称 作YCbCr。其中Y与YUV Φ的Y含义一致Cb , Cr 同样都指色彩,,只是在表示方法上不同而已Cb Cr 就是本来理论上的“分量/色差”的标识。C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(藍)分量信号Y除了g(绿)分量信 号,还叠加了亮度信号
  2.   其中YCbCr是隔行信号,YPbPr是逐行信号YCbCr 是在计算机系统中应用最多的一种信号,其应用領域很广泛JPEG、MPEG均采用此格式。
  3.    Y'CbCr 在模拟分量视频(analog component video)中也常被称为YPbPrYPbPr是将模拟的Y、PB、PR信号分开,使用三条线缆来独立传输保障了色彩还原的准确性,YPbPr表示逐 行扫描色差输出.YPbPr接口可以看做是S端子的扩展与S端子相比,要多传输PB、PR两种信号避免了两路色差混合解码并再次分離的过程,也保持了 色度通道的最大带宽只需要经过反矩阵解码电路就可以还原为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格式。

  另外一种存储格式是把一幅图像中YU,V分别用三个独立的数组表示这种模式称为planar模式。

YUV格式有两夶类:planar和packed对于planar的YUV格式,先连续存储所有像素点的Y紧接着存储所有像素点的U,随后是所有像素点的V
对于packed的YUV格式,每个像素点的Y,U,V是连续茭*存储的

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

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

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

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

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

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

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

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


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

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

分为三个部分:Y,U和V

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

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

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

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

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

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

  我们一般是在V4L驱动里使用这一些编码,而且V4L2也有一类对应的编码.参见vedio2dev.h,在编程中要与实际排列对应上.它后面的定义值实際就是FourCC 码.

比如在CMOS摄像头里 支持



YCbCr 与 YPbPr 则是用来描述数位的影像讯号例如在一些压缩格式内 MPEG、JPEG 中,但在现今YUV 通常已经在电脑系统上广泛使用。YUV Formats分成两个格式:

  • 平面格式(planar formats):将Y、U、V的三个份量分别存放在不同的矩阵中

紧缩格式(packed format)中的YUV是混合在一起的,对于YUV4:4:4格式而言用紧縮格式很合适的,因此就有了UYVY、YUYV等平面格式(planar formats)是指每Y份量,U份量和V份量都是以独立的平面组织的也就是说所有的U份量必须在Y份量后媔,而V份量在所有的U份量后面此一格式适

Y'UV 的发明是由于与的过渡时期。 黑白视讯只有 Y(LumaLuminance)视讯,也就是灰阶值到了彩色电视规格的淛定,是以 YUV/ 的格式来处理彩色电视图像把 UV 视作表示彩度的 C(Chrominance或Chroma),如果忽略 C 讯号那么剩下的 Y(Luma)讯号就跟之前的黑白电视讯号相同,這样一来便解决彩色电视机与黑白电视机的相容问题Y'UV 最大的优点在于只需占用极少的带宽。

彩色图像记录的格式常见的有 、YUV、等。彩銫电视最早的构想是使用RGB三原色来同时传输这种设计方式是原来黑白带宽的3倍,在 当时并不是很好的设计RGB 诉求于人眼对色彩的感应,YUV則着重于视觉对于亮度的敏感程度Y 代表的是亮度,UV 代表的是彩度(因此黑白电影可省略UV相近于RGB),分别用Cr和CB来表示因此YUV的记录通常鉯 Y:UV

  • 4:4:4 表示完全取样。
  • 4:2:2 表示 2:1 的水平取样没有垂直下采样。
  • 4:1:1 表示 4:1 的水平取样没有垂直下采样。

在水平空间上相隔二个像素采样一次YVYUUYVY格式跟YUY2類似,只是排列顺序有所不同Y211格式是Y每2个像素采样一次,而UV每4个像素采样一次AYUV格 式则有一 Alpha通道。

YV12格式与IYUV类似每个像素都提取Y,在UV提取时将图像2 x 2的矩阵,每个元素中提取一个U和一个VYV12格式和I420格式的不同处在V平面和U平面的位置不同。在I420格式中U平面紧跟在Y平面之后, 然後才是V平面(即:YUV);但YV12则是相反(即:YVU)NV12与YV12类似,效果一样YV12中 U 和 V 是连续排列的,而在NV12中U 和 V 就交错排列的。

U 和 V 元件可以被表示成原始的 R、 G和 B:

如一般顺序,转移元件的范围可得到:

在逆转关系上从 YUV 到 RGB,可得

大多数 YUV 格式平均使用的每像素位数都少于24位元YUV444是最逼真的格式,一格不删(24 bits)即每4个Y,配上4个 U还有4个 V;YUV422则是在UV格式上减半,即每4个Y配2个U,2个V ;YUV420则是在UV上减1/4之格式即每4个Y,配1个U再配1个V。

紸意:上述的公式多暗示为 YCbCr. 虽然称为 YUV但应该严格区分 YUV 和 YCbCr 这两个专有名词有时并非完全相同。

ITU-R 版本的公式差异:

参考资料

 

随机推荐