本文均为原文截取片段。文中我在原文作者的内容上再补充一些注释,对重点也会以红色字体标记出来。
版权声明:本文为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的画面,需要wh3个字节(注释:一个像素用1个字节)来存储其每个像素的rgb信息,画面的像素数据是连续排列的.
在YUV格式中,以YUV420格式为例。宽度为w高度为h的画面,其亮度Y数据需要wh个字节来表示(每个像素点一个亮度)。而Cb和Cr数据则是画面中4个像素共享一个Cb,Cr值。这样Cb用wh/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分量。