图像的基本概念:
视频:
1、由一组图像组成
2、为了传输/占用更小的空间而被压缩
3、最终在显示设备上展示(未被压缩)
图像:
像素:就是一张图片里图片面的一个个小格子
RGB:每一个小格子都是由RGB展示出来的
分辨率:就是一张图片,横向、纵向有多少个小格子
每个像素的位深:
就是每一个像素用多少位来表示有:
RGB888(24位=3x8)
RGBA(32位=4x8),A表示alpha透明度
分辨率:
1、X轴的像素个数 x Y轴的像素个数
2、常见的宽高比 16:9/4:3
3、360P/720/1K/2K
帧率:
1、每秒钟采集/播放图像的个数
2、动画的帧率是25帧/s
3、常见的帧率:15帧/s,30帧/s,60帧/s
未编码视频的RGB码流
RGB码流=分辨率(宽x高)x3(RGB,byte)x帧率(30帧)
例如:1280x720x3x25 = 69120000 约69M
YUV:
YUV(也称YCbCr):Y表示明亮度,UV的作用是描述影像色彩及饱和度
主要的采样格式有:YUV420(用的最多)、YUV422、YUV444
RGB与YUV关系:
RGB用于屏幕图像的展示
YUV用于采集与编码
RGB转YUV:
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)
YUV转RGB:
R = Y + 1.140*V
G = Y - 0.394*U - 0.581*V
B = Y + 2.032*U
YUV420:
4:2:0并不意味着只有Y、Cb两个分量,而没有Cr分量。它实际指的是对每行扫描线来说,只有一种色度分量,它以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0以此类推。
以图的形式展示:
YUV4:4:4每一格YUV
YUV4: 2:2就是每个一列只有一个Y
数据量的计算:
YUV = Y *1.5
YUV = RGB / 2
YUV420存储格式:
YUV存储格式:
planar(平面):
I420: YYYYYYYY UU VV =>YUV420P
YV12 YYYYYYYY VV UU =>YUV420P
packed(打包):
NV12 : YYYYYYYY UV UV =>YUV420SP
NV21: YYYYYYYY VU VU =>YUV420SP
未编码视频的YUV码流:
RGB码流 = 分辨率(宽 x 高)x 3 x 帧率
YUV码流= 分辨率(宽 x 高)x 1.5 x 帧率
相关的参考资料:https://en.wikipedia.org/wiki/YUV