Linux平台ISP架构介绍
概述
做camera驱动开发,必然离不开ISP这个模块;
但是ISP模块伴随着芯片SOC的发展已经越来越复杂,当然功能也越来越多,导致很多理解模糊;
本文主要对Linux系统下ISP驱动架构进行普及介绍
1. 基本概念
ISP --- Image Signal Processing
作用:主要用来对前端图像传感器输出信号处理的单元,以匹配不同厂商的图像传感器
功能: 图像格式转换、3A、黑电平校正、坏点校正、镜头阴影、2D/3D降噪、色彩增强等
2. 外置ISP与板端ISP对比
一般ISP IC的面积越大效果越好,不过也不一样,也要看后期调试
外置ISP: 一般和camera sensor配合使用,独立于主控系统;
这种就是方案灵活,调试周期短,能快速出成果;
而且随着芯片技术发展,外置ISP功能也越来越强大,而不是之前理解的针对低分辨率和低帧率领域了
板端ISP: 一般是SOC原厂自带ISP,国内厉害的当然是海思、还有全志等,
国外就很多了安霸(出名的就是GoPro)、英伟达等等;
但是板端ISP虽然面积更大,功能更齐全,但是伴随的是调试周期时间长,
要调出一个客户满意的多场景效果,动辄几个月,严重影响产品周期
如下是两者对比:
3. ISP处理流程
黑电平校正: 暗电流指传感器在没有入射光的情况下,存在一定的信号输出,这是由于半导体的热运动造成的
颜色插值:原始像素只包含一种颜色的信息(R 或G 或B),要重建色彩画面,就必须从相邻的像素中得到失去的信息
颜色校正:由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响,插补后得到的RGB 值颜色会存在偏差
Gamma 校正:亮度和电流之间的关系并非是线性, 保持线性关系
AWB:果使用过没有白平衡的数码相机,会发现荧光灯的光人眼看起来是白色的,但用数码相机拍摄出来却有点偏绿。同样,如果在白炽灯下,拍出图像的色彩就会明显偏红。人类的眼睛之所以把它们都看成白色,是因为人眼进行了修正
AE:自动控制曝光时间,达到曝光恰到好处的效果
4. ISP 3A实现原理
上面介绍了很多ISP的功能,当然一般关注最多当然是3A实现功能模块。
3A算法: 即AE,AWB,AF (自动曝光、自动白平衡、自动对焦),自动对焦我用的较少就不介绍了
5. ISP 驱动架构
一般ISP模块包括软件算法和硬件算法,将固定算法硬件化然后需要变动的用软件算法实现。