图像格式总结
RAW
raw数据是sensor输出的原始数据,一般有raw8, raw10, raw12等,分别表示一个像素点有8bit、10bit、12bit数据。是sensor将光信号转化为电信号时的电平高低的原始记录,单纯地没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。raw数据在输出的时候是有一定顺序的,主要有四种: GRBG、RGGB、BGGR、GBRG,如下图为BGGR格式:
RGB
RGB格式:即每一个像素由三原色R红色、G绿色、B蓝色组成。通过三种颜色的混合,基本就能够混合出人类视力所能感受到的所有颜色。
RGB常见的的几种格式和描述:
RGB565 每个像素用16位表示,RGB分量各使用5位、6位、5位;
RGB555 每个像素用16位表示,RGB分量都使用5位(剩下1位不用);
RGB24 每个像素用24位表示,RGB分量各使用8位;
RGB32 每个像素用32位表示,RGB分量各使用8位(剩下8位不用);
ARGB32 每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha(透明度)通道值);
bmp
- bmp有54字节的头文件:bmp file header14字节+bitmap information40字节
[筆記] BMP點陣圖格式說明,附實例圖解
C++将YUV文件转换为BMP格式的图片
BMP格式详解
bmp 头格式说明
png
ppm
其中P6表示用二进制来表示数据;\n表示换行符;width和height表示图像的宽高,用空格隔开;255表示每个颜色分量的最大值;rgb数据从上到下,从左到右排放。
图象数据以字节格式存储,每个色彩成分(r,g,b)一个字节。0表示黑色,255表示白色。色彩成分按照通常的红-绿-蓝顺序存储。
ppm格式图片可用 IrfanView 软件打开:
PPM格式其实就是RGB数据加上一个简单的文件头, 文件头部表示了图像的宽度和高度以及最大的RGB值。
文件头+rgb数据:
P6\n
width height\n
255\n
rgbrgb…
- Header: ppm有header,但是header的长度不固定
PPM(Portable Pixmap Format)还有两位兄长,大哥名叫「PBM」,二哥人称「PGM」,他们三兄弟各有所长:
PBM 是位图(bitmap),仅有黑与白,没有灰
PGM 是灰度图(grayscale)
PPM 是通过RGB三种颜色显现的图像(pixmaps)
每个图像文件的开头都通过2个字节「magic number」来表明文件格式的类型(PBM, PGM, PPM),以及编码方式(ASCII 或 Binary),magic number分别为P1、P2、P3、P4、P5、P。
Magic Number Type Encoding
P1 Bitmap ASCII
P2 Graymap ASCII
P3 Pixmap ASCII
P4 Bitmap Binary
P5 Graymap Binary
P6 Pixmap Binary
heic
YUV
是被欧洲电视系统所采用的一种颜色编码方法。其中“Y”表示明亮度(Luma),就是灰阶值,而“U”和“V”表示色度(Chroma)。
与我们熟知的RGB类似,YUV也是一种颜色编码方法;主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,
这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。
常用格式有:YUV444,YUV422,YUV420(为什么是4呢?因为这个4,实际上表达了共享的最大单位!也就是最多4个像素进行共享,因此4实际上是隐含的采样全集);
摄像头中最常用的是YUV 422格式,及Y-U-Y-V格式。以YUV422 8bit为例,每个像素点都包含亮度分量(8bit)以及UV两个颜色分量中的某一个(8bit)。
因此每个像素点需要16bit数据。如果使用YUV422 10bit,那每个像素点需要20bit来描述;
yuv 头文件
yuv没有头文件