关于前端:YUV基础知识转

4次阅读

共计 2531 个字符,预计需要花费 7 分钟才能阅读完成。


本文均为原文截取片段。文中我在原文作者的内容上再补充一些正文,对重点也会以红色字体标记进去。

版权申明:本文为 CSDN 博主「~HardBoy~」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/fanzong…

四, 视频编码

4.1, 色彩空间
YCbCr 色调空间和它的变形(有时被称为 YUV)是最罕用的无效的示意彩色图像的办法。Y 是图像的亮度(luminance/luma)重量,应用以下公式计算,为 R,G,B 重量的加权平均值:

        Y = kr R + kgG + kbB

        其中 k 是权重因数。

其中每个色差重量为 R,G,B 值和亮度 Y 的差值:

Cb = B -Y(正文:蓝色的色差)

Cr  = R -Y

    Cg = G- Y

其中,Cb+Cr+Cg 是一个常数(其实是一个对于 Y 的表达式),所以,只须要其中两个数值联合 Y 值就可能计算出原来的 RGB 值。所以,咱们仅保留亮度和蓝色、红色的色差值,这就是(Y,Cb,Cr)。

相比 RGB 色调空间,YCbCr 色调空间有一个显著的长处。Y 的存储能够采纳和原来画面一样的分辨率,然而 Cb,Cr 的存储能够应用更低的分辨率。

在 RGB 格局中,对于宽度为 w, 高度为 h 的画面,须要 w h 3 个字节(正文:一个像素用 1 个字节)来存储其每个像素的 rgb 信息,画面的像素数据是间断排列的.

在 YUV 格局中,以 YUV420 格局为例。宽度为 w 高度为 h 的画面,其亮度 Y 数据须要 w h 个字节来示意(每个像素点一个亮度)。而 Cb 和 Cr 数据则是画面中 4 个像素共享一个 Cb,Cr 值。这样 Cb 用 w h/ 4 个字节,Cr 用 w *h/ 4 个字节。

YUV 的长处:

1、YUV 表示法的重要性是它的亮度信号 (Y) 和色度信号 (U、V) 是互相独立的。

2、YUV 表示法的另一个长处是能够利用人眼的个性来升高数字彩色图像所须要的存储容量。
————————————————
版权申明:本文为 CSDN 博主「~HardBoy~」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/fanzong…

版权申明:本文为 CSDN 博主「异界工程师」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/huayu_h…

4.yuv 采样

yuv 的采样是 uv 的采样率比 y 低,但又不会升高视觉品质,因为人眼对于亮度会敏感度较高,对于黑白信息的敏感度较低,色度信号并不是用全分辨率存储的,所以没必要全采样。

目前有 YUV444,YUV422,YUV420,YUV411 等采样形式。

YUV444: 示意每 4 点 Y 采样(正文:我了解采样就是对一帧画面的像素做采样),就有 4 点 Cb 和 4 点 Cr,每个象素都有与之对应的色度和亮度采样信息;

YUV422:示意每 4 点 Y 采样,就有 2 点 Cb 和 2 点 Cr,当 4:2:2 信号被解码的时候,“缺失”的色度采样,通常由肯定的内插补点算法通过它两侧的色度信息运算补充;

YUV420:依照字面上了解,4:2:0 应该是每 4 点 Y 采样,就有 2 点 Cb 和 0 点 Cr,但事实上齐全不是 这样。事实上,4:2:0 的意思是,色度采样在每条横向扫描线上只有亮度采样的一半,扫描线的条数上,也只有亮度的一半!换句话说,无论是横向还是纵向,色度信号的分辨率都只有亮度信号的一半。举个例子,如果整张画面的尺寸是 720480,那么亮度信号是 720480,色度信号只有 360*240。在 4:2:0 中,“缺失”的色度采样不单单要由左右相邻的采样通过内插补点计算补充,整行的色度采样也要通过它高低两行的色度采样通过内插补点运算取得

YUV411: 示意每 4 点 Y 采样,就有 1 点 Cb 和 1 点 Cr, 但不是支流的采样形式,这里吉祥解;
————————————————
版权申明:本文为 CSDN 博主「异界工程师」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/huayu_h…

版权申明:本文为 CSDN 博主「刘长福」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/u012618…

4:4:4
示意色度没有下采样,每一个 Y 对应一组 UV 重量 即每一个像素都有 y u v 重量,没有下采样,跟 rgb 一样,用的较少。

 如图,圆圈为 uv 重量,叉为 y 重量,它们的对应关系为一对一,这图好多博客里有,源自微软对 yuv 的官网阐明,我看这图也蒙了良久,这是怎么存的呢,想了良久这图跟存储没有任何关系,就是代表对应关系,如何存储就是看 FOURCC 和 packed、planar。
4:2:2
示意 2:1 的程度下采样,没有竖直下采样。每条扫描线蕴含 4 个 y 对应 2 个 u 或者 v。即每两个 Y 共用一组 UV 重量

4:2:0
示意 2:1 的程度下采样,2:1 的竖直下采样,每四个 Y 共用一组 UV 重量,这 4 个 y 不是一条线上的 4 个是一个正方形的 4 个,
它有两种对应关系,一种是 mpeg1 一种是 mpeg2

上图为 mpeg1 规定的对应形式

上图为 mpeg2 规定的对应形式
————————————————
版权申明:本文为 CSDN 博主「刘长福」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/u012618…

正文:

视频原文件每一帧每一个像素其实就用色彩,而且就是由 RGB 三种色彩的混合。因为人眼对亮度比拟敏感,对色度并不是那么敏感,因而能够对 RGB 做编码,计算出亮度 Y,而后色度只需计算杰出差就行,反正未来解码时能够依据色差还原出原色。把 RGB 换算成 YUV 后,每一帧画面的大小就大大减小了。

对于 YUV4:2:0 而言,转换为 YUV 格局时,一帧的所有像素点都要采样亮度,而且是每采样 4 个像素点,这 4 个像素点是 2 X 2 的正方形,也就是程度上采样 2 个像素点,垂直上采样 2 个像素点,U 和 V 采样个数是程度和垂直上的 Y 的一半,这么一算在这个正方形中就只有一个 U 重量和一个 V 重量。

正文完
 0