-------------------常见图像格式RAW, RGB, YUV
1、RAW
raw数据是sensor输出的原始数据,一般有raw8, raw10, raw12等,分别表示一个像素点有8bit、10bit、12bit数据。
**是sensor将光信号转化为电信号时的电平高低的原始记录,**单纯地没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。
raw数据在输出的时候是有一定顺序的,主要有四种: GRBG、RGGB、BGGR、GBRG,如下图为BGGR格式:
2、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(透明度)通道值);
3、YUV
3.1、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来描述;
3.2、采样格式:
从前述定义中,可以了解YUV空间描述RGB空间的像素颜色按“亮度”分量和两个“色度”分量进行了表示。这种编码表示也更加适应于人眼,据研究表明,人眼对亮度信息比色彩信息更加敏感。而YUV下采样就是根据人眼的特点,将人眼相对不敏感的色彩信息进行压缩采样,得到相对小的文件进行播放和传输。
1)YUV 444
一个家庭成员是[yuv],每个Y对应一组UV,一个YUV占24bits 3个字节;
2)YUV 422
一个家庭成员是[yu][yv],也就是2个Y公用一个UV,一个YUV占8+4+4=16bits 2个节;
3)YUV 420
yuv420的意思似乎是在yuv422的基础上,再拿掉两个v,这样不就没有v了吗?其实yuv420的取名方式不是很高明,更确切的命名为yuv420yuv402也就是第一行只有两个u,而第二行只有两个v,如下图;
对于yuv420而言,这个家庭的成员如下图所示,显然4个Y公用一组UV,每个YUV占用8+2+2=12bits,1.5个字节;
4)yuv不同采样格式对图像画质的影响
根据前述的YUV采样格式分析,这里我们分析一下对图像画质的影响。我们将一个原始图像为8*8像素的红蓝相间的图案,分别按YUV444、YUV422、YUV420不同的采用格式采样,然后再还原输出。
图5(a):我们可以看到YUV444的色度信号的分辨率和亮度信号的分辨率无损失,我们获得了与原始图案一致的还原画面图案。
图5(b):YUV422获得还原图案在水平方向上,已经出现了丢失,从绿色所框选的像素来看,YUV422在水平方向上丢失了另一个像素点的色彩值,故在画面还原时仅是对前一个像素值简单的复制重构。
图5©:YUV420获得还原图案在水平方向以及垂直方向上,均出现了丢失,获得的还原图像与原始图像出现很大的失真。
由图5所示的直观观测,对图像高频细节的图像表达上,YUV444优于YUV422,YUV422优于YUV420。
在信号传输带宽的节省上,YUV420效率优于YUV444,YUV422优于YUV444。因此在普通的视频编解码算法上,为节省传输带宽开销,普遍采用YUV420或者YUV422的采样格式。
3.3、存储格式:
- planar 平面格式:指连续存储所有像素点的Y分量,然后存储U分量,最后是V分量。
- packed 打包模式:指每个像素点的Y、U、V分量是连续交替存储的。
下面用图的形式给出常见的YUV码流的存储方式,并在存储方式后面附有取样每个像素点的YUV数据的方法,其中,Cb、Cr的含义等同于U、V。
1)基于YUV4:2:2采样的格式
YUV 4:2:2 采样规定了 Y 和 UV 分量按照 2: 1 的比例采样,两个 Y 分量公用一组 UV 分量;
YUYV格式
YUYV是采用打包格式存储的,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。
UYVY格式
UYVY也是采用打包格式存储的,它的顺序与YUYV相反,还原其每个像素点的YUV值的方法与上面一样。
YUV422P格式
YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。
其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00。
2)基于YUV4:2:0采样的格式
基于 YUV 4:2:0 采样的格式主要有 YUV 420P 和 YUV 420SP 两种类型,YUV420P 和 YUV420SP 都是基于 Planar平面格式进行存储的,先存储所有的 Y 分量后,
YUV420P 类型就会先存储所有的 U 分量或者 V 分量,
而 YUV420SP 则是按照 UV 或者 VU 的交替顺序进行存储了,具体查看看下图:
YUV420P ___ YU12
在android平台下也叫作I420格式,首先是所有Y值,然后是所有U值,最后是所有V值;
YUV420P ___ YV12
YV12格式与YU12基本相同,首先是所有Y值,然后是所有V值,最后是所有U值;
YUV420SP ___ NV21
android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,NV21存储顺序是先存Y值,再VU交替存储;
YUV420SP ___ NV12
NV12与NV21类似,也属于YUV420SP格式,NV12存储顺序是先存Y值,再UV交替存储;
内容转自:https://zhuanlan.zhihu.com/p/538058910?utm_id=0
-------------------图像格式的解析、格式转换和看图软件
在ISP的图像算法开发中,经常会涉及到YUV、RAW等格式的图像。
例如,在YUV域,经常会涉及到I420、NV12和P010等数据格式之间的转换。
在RAW域,又会经常涉及到MIPI RAW等数据的查看。
目前,YUV的格式解析软件有开源的YUView,解析RAW格式的有LibRaw等。
但是,算法开发中会经常用到图像的转换、看图等功能,所以还是自己写个软件更方便些。
根据使用习惯,软件应该能够实现下面的功能:
- 1.首先能够解析ISP中常用的格式,并且能够实现单个、批量格式转换
- 2.支持拖拽,方便快速看图
- 3.有类似Visual Studio中ImageView的功能,能够用鼠标滚轮移动、缩放图片,查看具体像素值
- 4.对于RAW图,具有简单的Black Level Subtraction、White Balance、Demosaic、Gamma等功能查看彩色图
内容转自:https://blog.csdn.net/FrankCai86/article/details/121549286