必威体育Betway必威体育官网
当前位置:首页 > IT技术

图像和流媒体 -- 详解YUV数据格式

时间:2019-10-07 18:13:25来源:IT技术作者:seo实验室小编阅读:70次「手机版」
 

yuv

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78283369

我们在讲 FFmpeg 系列的时候,有提到 YUV 的。其中包括YUV播放器、简单的YUV格式介绍。

参看:FFmpeg再学习 -- 视音频基础知识

接下来详细研究一下:

参看:YUV -- 维基百科

参看:图文详解YUV420数据格式

一、YUV简介

YUV,是一种颜色编码方法。常使用在各个影像处理元件中。 YUV在对照片或影片编码时,考虑到人类的感知能力,允许降低色度的带宽。

YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma),Y′UV, YUV, YCbCr, YPbPr所指涉的范围,常有混淆或重叠的情况。从历史的演变来说,其中YUV和Y'UV通常用来编码电视的模拟信号,而YCbCr则是用来描述数位的影像信号,适合影片与图片压缩以及传输,例如MPEG、JPEG。 但在现今,YUV通常已经在电脑系统上广泛使用。

Y'代表明亮度(luma; brightness)而U与V储存色度(色讯; chrominance; color)部分; 亮度(luminance)记作Y,而Y'的prime符号记作伽玛校正。

YUV Formats分成两个格式:

紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式类似。

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

紧缩格式(packed format)中的YUV是混合在一起的,对于YUV4:4:4格式而言,用紧缩格式很合适的,因此就有了UYVY、YUYV等。

平面格式(planar formats)是指每Y分量,U分量和V分量都是以独立的平面组织的,也就是说所有的U分量必须在Y分量后面,而V分量在所有的U分量后面,此一格式适用于采样(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。

二、历史

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

因为UV分别代表不同颜色信号,所以直接使用R与B信号表示色度的UV。 也就是说UV信号告诉了电视要偏移某象素的的颜色,而不改变其亮度。 或者UV信号告诉了显示器使得某个颜色亮度依某个基准偏移。 UV的值越高,代表该像素会有更饱和的颜色。

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

三、常用的YUV格式

为节省带宽起见,大多数YUV格式平均使用的每像素位数都少于24位元。主要的抽样(subsample)格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和YCbCr 4:4:4。YUV的表示法称为A:B:C表示法:

4:4:4表示完全取样。

4:2:2表示2:1的水平取样,垂直完全采样。

4:2:0表示2:1的水平取样,垂直2:1采样。

4:1:1表示4:1的水平取样,垂直完全采样。

最常用Y:UV记录的比重通常1:1或2:1,DVD-Video是以YUV 4:2:0的方式记录,也就是我们俗称的I420,YUV4:2:0并不是说只有U(即Cb), V(即Cr)一定为0,而是指U:V互相援引,时见时隐,也就是说对于每一个行,只有一个U或者V分量,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。至于其他常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。

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

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

YUV 4:4:4采样,每一个Y对应一组UV分量。

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

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

四、存储方式

下面我用图的形式给出常见的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'01、Y'10、Y'11共用Cr00、Cb00,其他依次类推。

(5)NV12、NV21(属于YUV420)

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

(6)了解更多

想了解更多类型的存储方式,参看:YUV Formats

中文的有人翻译了,参看:V4L2文档翻译(十)

  • 2.6.1. Packed YUV formats
  • 2.6.2. V4L2_PIX_FMT_GREY (‘GREY’)
  • 2.6.3. V4L2_PIX_FMT_Y10 (‘Y10 ‘)
  • 2.6.4. V4L2_PIX_FMT_Y12 (‘Y12 ‘)
  • 2.6.5. V4L2_PIX_FMT_Y10BPACK (‘Y10B’)
  • 2.6.6. V4L2_PIX_FMT_Y16 (‘Y16 ‘)
  • 2.6.7. V4L2_PIX_FMT_Y16_BE (‘Y16 ‘ | (1 << 31))
  • 2.6.8. V4L2_PIX_FMT_Y8I (‘Y8I ‘)
  • 2.6.9. V4L2_PIX_FMT_Y12I (‘Y12I’)
  • 2.6.10. V4L2_PIX_FMT_UV8 (‘UV8’)
  • 2.6.11. V4L2_PIX_FMT_YUYV (‘YUYV’)
  • 2.6.12. V4L2_PIX_FMT_UYVY (‘UYVY’)
  • 2.6.13. V4L2_PIX_FMT_YVYU (‘YVYU’)
  • 2.6.14. V4L2_PIX_FMT_VYUY (‘VYUY’)
  • 2.6.15. V4L2_PIX_FMT_Y41P (‘Y41P’)
  • 2.6.16. V4L2_PIX_FMT_YVU420 (‘YV12’), V4L2_PIX_FMT_YUV420 (‘YU12’)
  • 2.6.17. V4L2_PIX_FMT_YUV420M (‘YM12’), V4L2_PIX_FMT_YVU420M (‘YM21’)
  • 2.6.18. V4L2_PIX_FMT_YUV422M (‘YM16’), V4L2_PIX_FMT_YVU422M (‘YM61’)
  • 2.6.19. V4L2_PIX_FMT_YUV444M (‘YM24’), V4L2_PIX_FMT_YVU444M (‘YM42’)
  • 2.6.20. V4L2_PIX_FMT_YVU410 (‘YVU9’), V4L2_PIX_FMT_YUV410 (‘YUV9’)
  • 2.6.21. V4L2_PIX_FMT_YUV422P (‘422P’)
  • 2.6.22. V4L2_PIX_FMT_YUV411P (‘411P’)
  • 2.6.23. V4L2_PIX_FMT_NV12 (‘NV12’), V4L2_PIX_FMT_NV21 (‘NV21’)
  • 2.6.24. V4L2_PIX_FMT_NV12M (‘NM12’), V4L2_PIX_FMT_NV21M (‘NM21’), V4L2_PIX_FMT_NV12MT_16X16
  • 2.6.25. V4L2_PIX_FMT_NV12MT (‘TM12’)
  • 2.6.26. V4L2_PIX_FMT_NV16 (‘NV16’), V4L2_PIX_FMT_NV61 (‘NV61’)
  • 2.6.27. V4L2_PIX_FMT_NV16M (‘NM16’), V4L2_PIX_FMT_NV61M (‘NM61’)
  • 2.6.28. V4L2_PIX_FMT_NV24 (‘NV24’), V4L2_PIX_FMT_NV42 (‘NV42’)
  • 2.6.29. V4L2_PIX_FMT_M420 (‘M420’)

五、YUV与RGB的转换公式

参看:YUV -- 维基百科

这部分我没看懂...   

六、推荐一个工具

参看:Image Analyzer

参看:GSG:Debugging projects

参看:软件操作演示

文章最后,是有视频都哦!!可以下载下来看看。

  • Bayer File:Bayer.zip
    • bayer720480_8of16_prop.txt: size 720 x 480 pixels, even B lines, GR/BG order, 8 bits out of 16 bits
    • bayer720480_10of16_prop.txt: size 720 x 480 pixels, even B lines, GR/BG order, 10 bits out of 16 bits
  • DaVinci HD File:DaVinciHD.zip
  • NV12 Tiled File:Nv12 tiled.zip
  • YUV 4:2:0 planar File:Yuv420planar.zip
  • YUV 4:2:2 packed File:Yuv422packed.zip
  • YUV 4:2:2 planar File:Yuv422planar.zip

七、RGB 介绍

既然都提到RGB了,就简单讲一下吧。

参看:三原色光模式 -- 维基百科

三原色光模式(RGB color model),又称RGB颜色模型或红绿蓝颜色模型,是一种加色模型,将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以产生多种多样的色光。(且三原色的红绿蓝不可能用其他单色光合成)

三原色光的相加:红光加绿光为黄光,黄光加蓝光为白光

再有一个是  RGB颜色查询对照表  

八、像素

最后,我要讲一下像素,上面提到很多次了。

参看:分辨率和像素是什么关系? -- 知乎

像素即px,是画面中最小的点(单位色块)。像素的大小是没有固定长度值的,不同设备上1个单位像素色块的大小是不一样的。

分辨率=画面水平方向的像素值 * 画面垂直方向的像素值。分辨率可以分为两方面:屏幕分辨率和图像分辨率。

1. 屏幕分辨率:     

例如,屏幕分辨率是1024×768,也就是说设备屏幕的水平方向上有1024个像素点,垂直方向上有768个像素点。像素的大小是没有固定长度的,不同设备上一个单位像素色块的大小是不一样的。    例如,尺寸面积大小相同的两块屏幕,分辨率大小可以是不一样的,分辨率高的屏幕上面像素点(色块)就多,所以屏幕内可以展示的画面就更细致,单个色块面积更小。而分辨率低的屏幕上像素点(色块)更少,单个像素面积更大,可以显示的画面就没那么细致。

2. 图像分辨率:    

例如,一张图片分辨率是500x200,也就是说这张图片在屏幕上按1:1放大时,水平方向有500个像素点(色块),垂直方向有200个像素点(色块)。    在同一台设备上,图片分辨率越高,这张图片1:1放大时,图片面积越大;图片分辨率越低,这张图片1:1缩放时,图片面积越小。(可以理解为图片的像素点和屏幕的像素点是一个一个对应的)。    但是,在屏幕上把图片超过100%放大时,为什么图片上像素色块也变的越大,其实是设备通过算法对图像进行了像素补足,我们把图片放的很大后看到的一块一块的方格子,虽然理解为一个图像像素,但是其实是已经补充了很多个屏幕像素;同理,把图片小于100%缩小时,也是通过算法将图片像素进行减少。     

最后,虽然不同设备上像素块大小会不一样,但是同一台硬件设备上的屏幕分辨率、像素块大小是不会变的。PC电脑上之所以可以调整屏幕分辨率,其实也是通过算法转换了。

举个例子吧,我用的华为P8手机(是该换了...),看看其参数。

这里就有摄像头参数介绍了,后置摄像头 1300万像素。或者说 vivo X9前置2000万柔光双摄,这个广告熟不熟悉。

1300万像素啥意思呢?

打开手机相机设置,查看分辨率,你可以看到有如下几个选项。

其中图片大小最大的 13M 4160x3120(4:3) 即摄像头最大像素

4160x3120 = 12979200 = 1300 万像素

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78283369

相关阅读

搭配黑科技降噪效果更出色 索尼真无线蓝牙降噪耳机WF-

我们生活中所说的真无线耳机其实就是两个&ldquo;耳塞&rdquo;,主体没有任何的可见线材,索尼真无线蓝牙降噪耳机WF-1000XM3就是如此

2018家用显示器多大好 6款1000左右23-27英寸显示器推

现在千元左右就能买到2K显示器了,但对于家庭用户来说,2K分辨率还是太超前了。一方面,千元左右的2K产品多是23英寸产品,点距太小用着会

读《我在碧桂园的1000天》有感

这两天拜读了吴建斌的“我在碧桂园的1000天”,记录下几段自己觉得好的文字: “作为成功的企业都十分重视管理、业务及技术学习。所

2019中国最富1000人榜:凛冬望春 马云问鼎中国首富

A5创业网(公众号:iadmin5)2月28日消息,界面发布&ldquo;2019中国最富1000人&rdquo;榜单,马云、马化腾、许家印夫妇依次以2311亿,2219亿

重庆简搜G3云推广AI万词霸屏推广保证7天上词10000+

在这个互联网迅速革新的时代,网络整合营销环境变得越来越复杂,多变的市场需求让企业的营销系统思维都发生了很大的转变。就市场及企

分享到:

栏目导航

推荐阅读

热门阅读