一、视频图像基础
- 像素:图像的基本单元,即一个带有颜色的小块
- 分辨率:图像的大小或尺寸,用像素个数来表示。原始图像分辨率越高,图像就越清晰
- 位深:存储每位像素需要的二进制位数;位深越大,能够表示的颜色值就越多,色彩越丰富真实
- 跨距(Stride):图像存储时内存中每行像素所占用的空间。需要正确的设置,否则会出现花屏
- 帧率:1秒中内图像的数量,单位FPS
- 码率:视频在1s内的数据量的大小。一般码率越高,视频清晰度越高,存储时占用内存空间就越大,传输时使用流量越多,但还需要结合压缩算法和压缩速度综合考虑
二、图像颜色空间
- 颜色空间分类
RGB:指图像的每一个像素都是分别存储R、G、B三个值,且三个值依次排列存储。顺序不一定是R-B-G,RGB三个颜色有相关性,采集和渲染的时候是RBG
YUV:图像将亮度信息 Y 与色彩信息 U、V 分离开来。Y 表示亮度,是图像的总体轮廓,称之为 Y 分量。U、V 表示色度,主要描绘图像的色彩等信息,分别称为 U 分量和 V 分量 - YUV分类
YUV 4:4:4,每一个 Y 对应一组 UV
YUV 4:2:2,每两个 Y 共用一组 UV
YUV 4:2:0,每四个 Y 共用一组 UV - YUV存储方式
Planar:先连续存储所有像素点的Y,然后接着存储所有像素点的U/V,之后再存储所有像素点的V/U
Packed:先存储完所有像素的Y,然后U、V连续的交错存储
Tips:U和V在一张图片中顺序固定,不同图片U和V谁在前不一定 - YUV类型和存储类型关系
I444:YUV顺序
YV24:YVU顺序
NV16:先存储完 Y,之后 U、V 连续交错存储
NV61:先存储完 Y,之后 V、U 连续交错存储
YU16(I422):YUV顺序
YV16:YVU顺序
NV12:先存储完 Y,之后 U、V 连续交错存储
NV21:先存储完 Y,之后 V、U 连续交错存储
YU12(I420):YUV顺序
YV12:YVU顺序 - Color Range
Full Range:R、G、B取值范围都是0~255
Limited Range:R、G、B取值范围是16~235 - RBG与YUV互转规范
BT709:高清的标准
BT601:标清的标准 - RBG与YUV转换公式
三、缩放算法
- 图像的缩放算法:插值算法、AI 超分算法
- 插值算法:使用周围已有的像素值通过一定的加权运算得到“插值像素值”,包括:最近邻插值算法(Nearest)、双线性插值算法(Bilinear)、双三次插值算法(BiCubic)
- 缩放的基本原理:图像的缩放就是将原图像的已有像素经过加权运算得到目标图像的目标像素。主要包括两个部分:一个是像素位置映射过程;一个是映射位置像素的插值过程。
- 像素位置映射过程:假设原图像的分辨率是w0xh0,我们需要缩放到w1xh1。那我们只需要将目标图像中的像素位置(x,y)映射到原图像的(xw0/w1,yh0/h1),再插值得到这个像素值就可以了,这个插值得到的像素值就是目标图像像素点(x,y)的像素值
- 映射像素的插值过程:
四、编码原理
- 宏块:对于每一帧图像,划分成一个个块来进行编码。例如:16x16(H264、VP8),32x32(H265、VP9),64x64(H265、VP9、AV1),128x128(AV1)
- 图像的数据冗余
空间冗余&#