文章目录
一、RGB 的采样与编码格式
R、G、B分别代表red、green、blue,三原色。将他们按照不同比例叠加,可得到更多不同颜色。
每个像素点的颜色由R、G、B三原色表示。每一个颜色通道(原色)包含2^8= 256种不同的红/绿/蓝(八位二进制),占用8bit,也就是一字节,那么一个像素点也就占用了3字节。
图片大小计算:
一张 1280 * 720 大小的图片,就占用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存储空间。
二、YUV 的采样与编码格式
YUV(YCbCr )格式也包含三个分量:
Y——明亮度,也成灰阶,没有UV分量也可成像,图像是黑白的(基础信号)
UV——色度:色彩+色彩饱和度(正交调制信号)
每个 Y 分量可以都有自己对应的 UV 分量,也可以几个 Y 分量共用 UV 分量,这就是为何会有YUV4:4:4、YUV4:2:2、YUV4:2:0采样格式出现,用于减小图像包含的数据量大小,便于传输和存储。
采样原理
YUV4:4:4
YUV三个信道的信号全采样,每个像素的三个分量信息完整(每个分量一般用8bit),因此每个像素经量化后,未经压缩,占用3字节。
假设四个像素为:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
存放的码流为:
Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
YUV4:2:2
亮度Y分量保持不变;对UV分量进行采样,数据量减小一半
假设四个像素为:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样码流为:
[Y0 U0 ] [Y1 V1] [Y2 U2 ] [Y3 V3]
存放的码流为:
[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3 ] [Y3 U2 V3]
隔行扫描,行1出U分量,那么下一行行2则出V分量(即UV分量按照1:1的比例进行采样),最终相邻两个Y分量共用一组UV分量。
YUV4:2:0
亮度Y分量保持不变;对UV分量进行采样,数据量只有1/4
假设八个像素为:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
[Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7] [Y8 U8 V8]
采样码流为:
[Y0 U0 ] [Y1 ] [Y2 U2 ] [Y3 ]
[Y5 V5] [Y6 ] [Y7 V7] [Y8 ]
存放的码流为:
[Y0 U0 V5] [Y1 U0 V5] [Y2 U2 V7] [Y3 U2 V7]
[Y5 U0 V5] [Y6 U0 V5] [Y7 U2 V7] [Y8 U2 V7]
隔行扫描,且UV分量按照2:1的比例进行采样,第一个像素保留一半U/(V)数据,相邻第二个像素U和V分量全舍弃,第三个像素采集第二次U/(V)数据,第四个像素U和V分量全舍弃,第五个像素采集第一次V/(U),最终相邻四个Y分量共用一组UV分量,而且是按照 2*2 的小方格的形式分布。
如图:
黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。
YUV 4:4:4采样,每一个Y对应一组UV分量。
YUV 4:2:2采样,每两个Y共用一组UV分量。
YUV 4:2:0采样,每四个Y共用一组UV分量,如图中的红色部分。
图像大小计算
假设一幅图像,像素大小为1280*720
YUV 4:4:4采样,12807203/1024/1024 ≈2.64M
YUV 4:2:2采样,(128072081+12807200.52)/8/1024/1024 ≈1.76M
YUV 4:2:0采样,(128072081+12807200.252)/8/1024/1024 ≈1.32M
YUV存储格式
planar(平面)格式
对于planar格式,先连续存储所有像素点的Y分量,紧接着存储所有像素点的U分量,最后是所有像素点的V分量。
packed(打包)格式
对于packed格式,每个像素点的 Y、U、V 分量是连续交叉存储的。
常见的基于 YUV 4:2:2 采样的格式如下表:
常见的基于 YUV 4:2:0 采样的格式如下表:
YUV420P下 YU12和YV12两种格式
YUV420P中的Y、U、V分量都是平面格式,如下图所示:
YUV420P又分为YU12 和 YV12 两种格式
YU12格式和YV12格式的不同处在U平面和V平面的位置不同。
YU12格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);
YV12则是相反(即:YVU)。
YU12: YYYYYYYY UU VV =>YUV420P
YV12: YYYYYYYY VV UU =>YUV420P
YUV420SP下 NV12 和 NV21两种格式
YUV420SP中的Y分量为平面格式,UV分量为打包格式,即 U 和 V 分量交错排列。如下图所示:
YUV420SP也分为两种格式 NV12 和 NV21,这两种格式的不同在于UV交错排列的顺序不同。
NV12: YYYYYYYY UVUV =>YUV420SP
NV21: YYYYYYYY VUVU =>YUV420SP
RGB和YUV格式相互转换
图像显示器——通过RGB模型显示图像
传输图像数据——通过YUV模型传输 (YUV 模型可以节省带宽)
因此:
转换公式为:
YUV图像基本处理(含代码)