图像处理基础
编码
RGB
RGB代表红绿蓝三种颜色,每种颜色分别用8bit来表示,一个像素点占用24个bit即3个字节。
对于一张1280*720的图片,说明它有1280×720个像素点,存储需要1280×720×3个bit,即2.63MB存储空间。
RGB565:每个像素用16bit表示,RGB分别使用5位、6位、5位
RGB555:每个像素用16bit表示,RGB各用5位,余1位不用
RGB24:每个像素用24位,RGB各8位
RGB32:每个像素用32位,RGB各8位,余8位不用
ARGB32:每个像素用32位,RGB各8位,余8位表示alpha通道值
YUV
YUV采用明亮度和色度来指定像素的颜色。
Y表示亮度,对于一张图像来说单独的Y分量即可表示,但显示出来是黑白的。
UV分量代表色度,色度又细分为色调和饱和度。
对于YUV图像来说并不是每个像素点都需要包含YUV三个分量,按照不同的采样格式,Y与UV之间存在不同的比例关系。
格式转换
对图像进行各种算法操作时都使用YUV格式,如果不涉及颜色甚至可以只对Y分量进行处理。在实际显示时要转为RGB通过显示器来进行显示。
采样分类
4:4:4采样
YUV444指Y、U、V三个分量比例相同,每个像素的三个元素包含完整信息,每个像素存储占用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
最后映射出的像素点:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
占用内存和RGB表示方法一致,不节省资源
4:2:2采样
YUV422指Y和UV按照2:1比例采样。每两个Y分量公用一个U分量和一个V分量,一个YUV占(8+4+4=16bits)2个字节
采样举例
图像像素:[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]
Y0和Y1之间存在U和V分量的共用,减少了1个字节的空间占用
4:2:0采样
每四个Y分量共用一个U分量和一个V分量,一个YUV占(8+2+2=12bits)1.5个字节
采样举例
图像像素:[Y0 U0 V0]、[Y1 U1 V1]、[Y2 U2 V2]、[Y3 U3 V3]
[Y4 U4 V4]、[Y5 U5 V5]、[Y6 U6 V6]、[Y7 U7 V7]
采样码流:Y0 U0 Y1 Y2 U2 Y3 Y4 V4 Y5 Y6 V6 Y7
最后映射出的像素点:[Y0 U0 V4]、[Y1 U0 V4]、[Y2 U2 V6]、[Y3 U2 V6]
[Y4 U0 V4]、[Y5 U0 V4]、[Y6 U2 V6]、[Y7 U2 V6]
Y0 Y1 Y2 Y3
? U0 U2
? V4 V6
Y4 Y5 Y6 Y7
示意图如上,也就是说至少需要扫描两行才能获得完整UV分量。
四个Y分量共用一套UV分量,原本存储8个像素需要24字节,现在只需要12字节,节省一半存储空间。
存储格式
两种存储格式
- planar平面格式:连续存储所有像素点的Y分量,再存储U分量,最后存储V分量
- packed打包模式:YUV分量连续交替存储
基于4:2:2采样的存储格式
YUYV
Y0和Y1共用U0V0分量,Y2和Y3共用U2V2分量
Y0 U0 Y1 V0 Y2 U2 Y3 V2
UYVY
Y0和Y1共用U0V0分量,Y2和Y3共用U2V2分量
U0 Y0 V0 Y1 U2 Y2 V2 Y3
类似还有YVYU/VYUY等格式
YUV 422P
采用平面格式存储。连续存储所有像素点的Y分量,再存储U分量,最后存储V分量。
基于4:2:0采样的存储格式
YUV 420P
按照UV顺序的不同又分为YU12和YV12,上图为YU12
YUV 420SP
NV12常用于IOS系统,先Y分量再UV分量
Y Y Y Y
Y Y Y Y
Y Y Y Y
Y Y Y Y
U V U V
U V U V
NV21常用于安卓系统,先Y分量再VU分量。
Y Y Y Y
Y Y Y Y
Y Y Y Y
Y Y Y Y
V U V U
V U V U
参考
1、https://blog.csdn.net/qq_41554005/article/details/100147657?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164627681416780265468557%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164627681416780265468557&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_ran