YUV色彩空间浅析

Table of Contents

什么是RGB

什么是YUV

YUV基本概念

YUV 和RGB 的转化:

YUV 的分类:

YUVFormats分成两个格式:

YUV采样:

YUV格式:

YUV444格式:

YUV422格式:

UYVY422:

YUV422P:

YUV420P(YU12和YV12)格式

YU12格式

​ YV12格式 :

YUV420SP(NV21和NV12)

NV21格式

​NV12格式:         

写在后面的话:

参考文献:


什么是RGB

         在RGB模式下(如下图), 每一种颜色都是红、绿、蓝三种颜色的混合, 这种模式被称为叠加, 这三种颜色被称为是主颜色(primary colors)。可以通过对主颜色的叠加, 来得到二级颜色(secondary colors), 洋红色(红加蓝),青色(绿加蓝),黄色(红加绿)。在RGB 颜色空间上,当任何一个基色的亮度值为零时,即在原点处,就显示为黑色。当三种基色都达到最高亮度时,就表现为白色。
         RGB 模型是目前常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色。该模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。

Primary and Secondary Colors for RGB

                                       

RGB 颜色空间可以看作是三维直角颜色坐标系中的一个正立方体。如上右图所示。红绿蓝三色在立方体的三个顶点上;洋红、青、黄色在立方体的立方体的另外三个顶点;黑色在坐标原点;而白色在离原点最远的定点上。在连接黑色与白色的对角线上,是亮度等量的三基色混合而成的灰色,该线称为灰色线。

什么是YUV

YUV基本概念

        YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCrYPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。在 最近十年中,视频工程师发现人眼对色度的敏感程度要低于对亮度的敏感程度。在生理学中,有一条规律,那就是人类视网膜上的视网膜杆细胞要多于视网膜锥细 胞,说得通俗一些,视网膜杆细胞的作用就是识别亮度,而视网膜锥细胞的作用就是识别色度。所以,你的眼睛对于亮和暗的分辨要比对颜色的分辨精细一些。基于此原理, 在使用YUV的时候, 保证Y分量的前提下, 可以舍弃一部分UV分量,来减少对带宽的需求。却也并不会太影响图像的质量。

       YUV颜色空间是彩色电视兴起后, 对黑白电视兼容的产物。因为RGB颜色空间中, 每一个像素都需要三个分量的叠加, 就需要三通道的信号,即便是表示黑白像素。 但是在YUV颜色空间中,Y就表示了灰度信息, 也就是黑白图像。所以YUV像素编码, 成功的兼容了黑白电视信号。

        能看到这篇文章的朋友肯定都知道RGB颜色模式。可能会像我一样, 总是在想, RGB三色代表了红绿蓝, YUV三个分量就究竟长啥样呢, 能不能举例直观的看一下呢??需要看视频中YUV分量的请移步我的另一篇博客:ffmpeg 分离视频中的YUV分量

下图演示了RGB 和YUV的关系,以及Y对UV的影响

 

UV组成的颜色平面如下:

当Y取不一样的值对UV平面影响几何呢?

来个更加直观YUV色彩空间立方体:

YUV Color Cube, from the Y = 0 side.YUV Color Cube, from the Y = 1 side.

左上立方体前面Y = 0, 他的正中心是纯黑的, 此处为YUV坐标系的零点。

右上立方体前面Y = 1, 他的正中心是纯白色的;此立方体只是改变了左边立方体的方位。

 

YUV 和RGB 的转化

Y'= 0.299*R' + 0.587*G' + 0.114*B'

U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')

V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')

R' = Y' + 1.140*V'

G' = Y' - 0.394*U' - 0.581*V'

B' = Y' + 2.032*U'

英文水平不错的朋友一定要好好读读以下的英文原文,可以更好的理解:

The YUV color model is the basic color model used in analogue color TV broadcasting. Initially YUV is the re-coding of RGB for transmission efficiency (minimizing bandwidth) and for downward compatibility with black-and white television. The YUV color space is “derived” from the RGB space. It comprises the luminance (Y) and two color difference (U, V) components. The luminance can be computed as a weighted sum of red, green and blue components; the color difference, or chrominance, components are formed by subtracting luminance from blue and from red.

The principal advantage of the YUV model in image processing is decoupling of luminance and color information. The importance of this decoupling is that the luminance component of an image can be processed without affecting its color component. For example, the histogram equalization of the color image in the YUV format may be performed simply by applying histogram equalization to its Y component.

There are many combinations of YUV values from nominal ranges that result in invalid RGB values, because the possible RGB colors occupy only part of the YUV space limited by these ranges. Figure "RGB Colors Cube in the YUV Color Space" shows the valid color block in the YUV space that corresponds to the RGB color cube RGB values that are normalized to [0..1]).

The Y'U'V' notation means that the components are derived from gamma-corrected R'G'B'. Weighted sum of these non-linear components forms a signal representative of luminance that is called luma Y'. (Luma is often loosely referred to as luminance, so you need to be careful to determine whether a particular author assigns a linear or non-linear interpretation to the term luminance).

叨叨了半天重点是 Y分量是 RGB三色的加权和, U、V 分量则可以视为 是亮度减去蓝、红

PS:大家一定要十分的清楚,YUV色彩空间是一种表示颜色的方法,RGB才是真正的物理色彩,也就是说,不管你咋表示, 最后要显示的时候, 还得要依靠红、绿、蓝三色叠加而成。铁证就是各种屏幕都是由红、绿、蓝三种发光点组成的。

下图就是某oled的像素点排布

YUV 的分类:

YUVFormats分成两个格式:

  • 紧缩格式(packedformats):将Y、U、V值存储成MacroPixels数组,和RGB的存放方式类似。

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

YUV采样:

      色度通道相比较亮度通道,可以采用较低的采样率,并不会太影响图像质量。通常用A:B:C的形式来描述 U、V相对于Y的采样比。

ps: 大家对采样要有个基本的概念,也就是以点盖面的意思,通过密集的取点,利用人眼分辨率有限的特点来达到面的效果。在图像采集的时候,按照采样格式对呈面的图像进行采集。

因为本人从事CT相关工作,举个例子:CT是利用射线透过人体之后会衰减来成像。就需要收集透过人体后的射线强度。所以会在发射端的180°上安置一个接收器,接收器就是在一个板子上密集排列射线敏感元件。射线敏感元件的排列方式就可以认为是一种采样格式。

  • 4:4:4 表示不对色度(UV)下采样。(也就是说Y、U、V都是一样的采样次数)
  • 4:2:2 表示按照2:1横向下采样,纵向不下采样。每4次Y采样,对应两次U、V采样。
  • 4:2:0 表四横纵均2:1下采样。
  • 4:1:1 means 4:1 horizontal downsampling, with no vertical downsampling. Every scan line contains four Y samples for each U and V sample. 4:1:1 sampling is less common than other formats, and is not discussed in detail in this article.

下图是根据我的理解画出的采样示例:

下图是微软官网给出的示范。十字代表亮度点,圆代表色度采样点。

上面两幅图的采样示例有一些差异,主要是YUV420的图解。不知道在采样的时候是不是真的采样图中的点,还是采样后整理成这种像素格式。但是有一点是一定的:四个Y分量,共用一组UV分量。此处还有疑问,期待大神的指点,十分感谢。

PS:在此,大家务必要明白YUV在应用中所处的位置,像素采集设备---->编码----->显示设备, 在此过程中, 只有编码是用的YUV, 两端靠的还是RGB,每个像素均有三个通道,所谓的采样,也就是采用各个像素不同的RGB分量, 来转化为YUV色彩模式,这种转化是基于人眼对色度不太敏感的理论基础。等到了显示端,还得再转换为RGB呢。

YUV格式:

       个人理解。所谓的YUV格式,指的是针对一帧图像的数据组织形式。请与YUV采样对比理解。

YUV444格式:

        YUV是最好理解的采样格式。请大家结合下面的YUV422和YUV420自行脑补以下哈。

YUV422格式:

       YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个U、V,分析,对于像素点Y1、Y2 而言,其U、V的值均为 U1、V1,其他的像素点的YUV取值依次类推。YUVY422: 

UYVY422:

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

YUV422P:

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

YUV420P(YU12和YV12)格式

      YUV420P又叫plane平面模式,Y , U , V分别在不同平面,也就是有三个平面,它是YUV标准格式4:2:0,主要分为:YU12和YV12

YU12格式

       在android平台下也叫作I420格式,首先是所有Y值,然后是所有U值,最后是所有V值。 

       在SDL中对应的是SDL_PIXELFORMAT_IYUV, 大家不要换个马甲就不认识了

       YU12:亮度(行×列) + U(行×列/4) + V(行×列/4)


 YV12格式 :

       YV12格式与YU12基本相同,首先是所有Y值,然后是所有V值,最后是所有U值。只要注意从适当的位置提取U和V值,YU12和YV12都可以使用相同的算法进行处理。     

YV12占用内存:亮度Y(行×列) + V(行×列/4) + U(行×列/4)

YUV420SP(NV21和NV12)

        YUV420SP格式的图像阵列,首先是所有Y值,然后是UV或者VU交替存储,NV12和NV21属于YUV420SP格式,是一种two-plane模式,即Y和UV分为两个plane,但是UV(CbCr)为交错存储,而不是分为三个平面。

NV21格式

         android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,NV21存储顺序是先存Y值,再VU交替存储:YYYYVUVUVU,以 4 X 4 图片为例子,占用内存为 4 X 4 X 3 / 2 = 24 个字节


NV12格式:         

          NV12与NV21类似,也属于YUV420SP格式,NV12存储顺序是先存Y值,再UV交替存储:YYYYUVUVUV,以 4 X 4 图片为例子,占用内存为 4 X 4 X 3 / 2 = 24 个字节。

写在后面的话:

        YUV颜色空间,是视频像素格式(每一帧视频数据的组织形式)。大家在理解的时候最好能知道它在视频传递中所处的位置。视频在采集和显示的两端,还得仰仗RGB,在流通环节,才是YUV的势力范围。

         本文参看学习了很多资料, 足足收集整理了一周才搞完,有很多自己的理解。困于能力有限,水平一般,肯定有一些下次,还望各位不吝赐教,共同进步。

参考文献:

https://docs.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering

https://www.baslerweb.com/en/sales-support/knowledge-base/frequently-asked-questions/how-does-the-yuv-color-coding-work/15182/

https://scc.ustc.edu.cn/zlsc/sugon/intel/ipp/ipp_manual/IPPI/ippi_ch6/ch6_color_models.htm

https://blog.csdn.net/byhook/article/details/84037338

  • 28
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: YUV颜色空间是一种以亮度(Y)和色度(U、V)来表示彩色图像的方式,常用于视频编码和传输领域。在YUV颜色空间下的图片,其实是RGB颜色空间下的图片通过颜色转换算法得到的。Y表示亮度信号,通常对应于人眼对图像亮度的感觉,而U和V分别表示蓝色和红色的色度信号。在数字图像处理中,可以通过对亮度和色度信号进行不同的处理来实现图像的调节和处理。 在YUV颜色空间下的图片,其最大的优势是能够达到更高的图像压缩比,从而在视频传输和存储等方面具有更高的效率。此外,YUV颜色空间下的图片对于肤色和自然场景的色彩表现也更为准确和自然。因此,现代数字摄像机和电视等设备都采用YUV颜色空间作为视频处理的标准。 总而言之,在YUV颜色空间下的图片具有极高的实用价值和广泛的应用前景。从基础的视频编码和传输到高级的图像处理和特效制作,都离不开这一颜色空间的支持和应用。 ### 回答2: YUV颜色空间是一种基于亮度和色度分离的颜色模型,通常用于数字视频和图像处理中。在YUV颜色空间中,Y表示亮度,U和V表示色度。亮度表示图像中的灰度级,而色度表示颜色信息。 YUV图像是通过将RGB图像转换为YUV颜色空间而获得的。该转换可以通过矩阵变换实现,矩阵的系数可以根据实际应用进行调整。对于标准的YUV颜色空间,矩阵变换如下: | Y' | | 0.299 0.587 0.114| | R | | U' | = |-0.14713 -0.28886 0.436| * | G | | V' | | 0.615 -0.51498 -0.100| | B | 在YUV颜色空间中,亮度Y和色度U、V可以通过单独的调节实现对图像的亮度和颜色的调整。这种调节不会影响图像的细节,因此对于图像的后期处理非常有用。 在数字视频编解码中,YUV图像也非常常见。由于人的视觉系统对亮度信息更为敏感,因此视频编码可以利用这种特性,将亮度和色度分别压缩,以减少压缩后的数据量,从而实现更高的压缩比。 总之,YUV颜色空间下的图片在数字视频和图像处理中发挥着重要作用,通过对亮度和色度的分离,可以实现更好的图像处理和高效的视频编解码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值