raw/rgb/yuv/nv21图像格式总结

1、RAW

raw格式sensor的输出格式,是sensor将光信号转换为电信号时的电平高低的原始记录,没有经过处理的原始数据
raw数据在输出的时候使用一定的顺序的,主要有四种: GRBG, RGGB, BGGR, GBRG
raw数据主要有3中常见的格式: raw8, raw10, raw12

raw/rgb/yuv/nv21图像格式总结_第1张图片

2、RGB

rgb格式:即每一个像素由三原色R、G、B蓝色组成
RGB565 每个像素用16位表示,RGB分量分别使用5位、6位、5位
RGB555 每个像素用16位表示,RGB分量分别使用5位、5位、5位(剩下一位不用)
RGB24 每个像素用24位表示,RGB分量各使用8位
RGB32 每个像素用32位表示,RGB分量各使用8位(剩下8位不用)
ARGB32每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha(透明度)通道值)

3、YUV

是被欧洲电视系统所采用的一种颜色编码方法.其中Y表示明亮度(Luma),就是灰阶值;而“u” 和 “v” 表示色度(Chroma) .常用格式: YUV444、YUV422、YUV420、YUV411等。
与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

采样格式

YUV码流的格式与采样的方式密切相关,主流的采样方式有四种:
YUV444、YUV422、YUV420、YUV411
yuv444
raw/rgb/yuv/nv21图像格式总结_第2张图片
一个YUV444就是一个家庭成员,一个像素就是一个YUV,占3个字节,如果一幅1920x1080的YUV444格式的图片,那图片的大小就是1920x1080x3,每一个像素都是YUV的顺序
raw/rgb/yuv/nv21图像格式总结_第3张图片

YUV422
raw/rgb/yuv/nv21图像格式总结_第4张图片
第一个像素是YU, 第二个像素是YV,一个家庭是YUYV,也就是说2个Y 共用一组UV,那一组YUV422占 2个字节 1Y+0.5U+0.5V
如果一幅1920x1080的YUV422格式的图片,那大小就是1920x1080x2
raw/rgb/yuv/nv21图像格式总结_第5张图片
YUV420
yuv420的意思是在yuv422的基础上,再拿掉两个v,这样不就没有v了吗?
其实yuv420应该命名为yuv420yuv402比较合适,第一行有u没v,第2行有v没u
raw/rgb/yuv/nv21图像格式总结_第6张图片
yuv的家庭成员则是yu y yu y 4个y共用UV,u和v在横向上只有 y的 1/2,在垂直方向上 也之后 y的1/2,所以 u 和 v是 y的1/4,所以一个像素 的yuv420占1y+1/4u+1/4v = 1.5个字节

由于yuv420的存储方式与 yuv444 和 yuv422不一样,所以不能用上面的 1920x1080那样的计算方式

基于YUV4:2:0采样的格式

基于 YUV 4:2:0 采样的格式主要有 YUV 420P 和 YUV 420SP 两种类型,每个类型又对应其具体格式。
YUV420P 和 YUV420SP 都是基于 Planar 平面格式 进行存储的,先存储所有的 Y 分量后, YUV420P 类型就会先存储所有的 U 分量或者 V 分量,而 YUV420SP 则是按照 UV 或者 VU 的交替顺序进行存储了,具体查看看下图:

YUV420P
raw/rgb/yuv/nv21图像格式总结_第7张图片
YUV420SP
raw/rgb/yuv/nv21图像格式总结_第8张图片

YUV420P

YU12
在android平台下也叫作I420格式,首先是所有Y值,然后是所有U值,最后是所有V值;
raw/rgb/yuv/nv21图像格式总结_第9张图片
YV12
YV12格式与YU12基本相同,首先是所有Y值,然后是所有V值,最后是所有U值;
raw/rgb/yuv/nv21图像格式总结_第10张图片

YUV420SP

NV21
android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,NV21存储顺序是先存Y值,再VU交替存储;
raw/rgb/yuv/nv21图像格式总结_第11张图片
NV12
raw/rgb/yuv/nv21图像格式总结_第12张图片

你可能感兴趣的:(图像格式,音视频,图像处理)