最近一直在做瑞芯微rv1126的开发,由于项目性质,与camera打的交道比较多,包括图像的采集,ISP处理,图像处理,H.264/H.265编解码等各个方面吧。学到了不少,在学习的过程中,也得到了不少帮助,很感激,所以将这一部分整理了一下,希望能对大家有所帮助。如有错漏,也希望批评指出,一起探讨。
1 摄像头类型
1.1 接口介绍
RV1126支持的摄像头接口主要包括MIPI、LVDS、DVP等三种。
MIPI:串行接口,当前主要摄像头接口,速度最快,抗干扰强。
LVDS:串行接口。
DVP:一种并行接口,即Digital Video Port,相对于MIPI接口,传输速率有限,一般为5M或以下摄像头。
DVP可与MIPI或LVDS接口可以同时工作,但MIPI和LVDS不能同时作。DVP接口对应一个rkcif_dvp节点,MIPI/LVDS接口对应一个rkcif_mipi_lvds节点,各节点可独立采集。为了将VICAP采集的数据信息同步给isp驱动,需要将VICAP驱动生成的逻辑sditf节点链接到isp所生成的虚拟节点,DVP接口对应rkcif_dvp_sditf节点,MIPI/LVDS接口对应rkcif_mipi_lvds_sditf节点。
1.2 数据类型
**Raw:**RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据,是camera sensor直接输出的格式。红外相机的sensor和彩色相机的sensor有些不同,有的红外相机的sensor输出的raw data就是亮度值,即灰度值,输出来就是只有Y信息的,一个像素点通常由Y10/Y16等字节来表示。彩色相机RGB格式,每个像素点表示一个颜色分量B、G或R。
RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为"原始图像编码数据"或更形象的称为"数字底片"。sensor的每一像素对应一个彩色滤光片,滤光片按Bayer pattern分布。将每一个像素的数据直接输出,即RAW RGB dataRaw data(Raw RGB)经过彩色插值就变成RGB.
raw格式是无法直接用于图像处理的,因为每个像素点颜色信息都不全,需要经过ISP处理,把raw转成yuv/rgb之类的图像(不只是格式转换,还要做白平衡调整之类的图像处理工作,调整好图像效果),才可以输入到图像处理算法中。
raw数据一般是经过tuning来还原数据,效果与摄像头镜头以及tuning参数有关。详细tuning方法见4.2节。