参考:
1.烫手的洋芋 https://www.zhihu.com/question/24406900/answer/42875785
2.酒杯怎么空了 https://blog.csdn.net/xiaoyouck?t=1
概述
影响camera最终效果有以下几个方面:
1、硬件
image sensor:供应商有Sony、OV、Samsung等,决定摄像头的像素、感光能力等;
镜头:决定摄像头的光圈、解析度;
ISP:决定数据处理速度,会对帧率有影响;
2、算法
由AP供应商提供,一般的手机公司不会动;
3、Tuning
修改算法的参数,让画质达到最优。
选定了硬件之后,能提升画质的工作就只有tuning了,通过不断的权衡tuning参数,让camera在主观效果和客观效果方面都有较好的表现,tuning的工作就完成了。
Tuning
Black Level Calibration
黑电平(Black Level Correction)也就是黑色的最低点,以8bit数据来说,指在经过一定校准的显示装置上,没有一行光亮输出的视频信号电平。定义图像数据为0时对应的信号电平。
校正原因
那么为什么要进行黑电平校正呢?原因如下:
- CMOS传感器采集的信息经过一系列转换生成原始RAW格式数据。以8bit数据为例,单个pixel的有效值是0~255,但是实际AD芯片(模数转换芯片)的精度可能无法将电压值很小的一部分转换出来,因此,sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,当然同时也会损失一些亮部细节,由于对于图像来说,我们的关注度更倾向于暗部区域,ISP后面会有很多增益模块(LSC、AWB、Gamma等),因此亮区的一点点损失是可以接受的。
- sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。
校正
现在的主流cmos sensor都是自己把black level已经处理完了。在isp部分减掉的其实不是black level,而是sensor统一做出来的pedestal。sensor端不会将bl减完,因为sensor输出不能为负数,若将bl减完,就等于小于0的部分直接就丢掉了,这样做会改变noise的分布。
算法
一般BLC模块会放在ISP比较靠前的位置,因为我们希望图像在进入其他模块之前能够还原最为真实的图像。有些sensor会在sensor内部集成BLC的模块,那么此时ISP里的BLC模块只做微调即可。
由于硬件设计人员在设计BLC模块时需要考虑效果和成本,因此目前市场上使用的ISP一般采用的方法是在sensor输出的图像上减去一个数值。
BLC各个通道均需要校正,目前比较常用的方法有:
- 中值
- 全局均值
- 局部均值
- 自定义
Lens Shade Calibration
简介
镜头阴影校正(Lens Shading Correction)是为了解决由于lens的光学特性,由于镜头对于光学折射不均匀导致的镜头周围出现阴影的情况。
shading可以细分为luma shading和color shading:
- luma shading:
由于Lens的光学特性,Sensor影像区的边缘区域接收的光强比中心小,所造成的中心和四角亮度不一致的现象。镜头本身就是一个凸透镜,由于凸透镜原理,中心的感光必然比周边多。
- chrom/color shading:
由于各种颜色的波长不同,经过了透镜的折射,折射的角度也不一样,因此会造成color shading的现象,这也是为什么太阳光经过三棱镜可以呈现彩虹的效果。
此外,还有CRA的原因会导致shading现象的出现。
校正
lens shading的校正是分别对于bayer的四个通道进行校正,每个通道的校正过程是相对独立的过程。
考虑到芯片设计的成本,因此一般情况下不会存储整幅图像的lut,目前主流的都是存储128*128个点的增益,利用双线性插值的方法计算每个pixel的增益。
算法
- 网格校正
- 最小模型建模
Color Calibration
拍摄color checker24色板,将相机拍摄图片值与色板标准值之间进行对比(RGB颜色空间),得出一组能将拍摄值校正到最接近标准值的3x3矩阵。通过这个矩阵对所有相机拍摄的图片进行颜色校正
Noise Calibration
去噪。采用特定的LPF(Low Pass Filter)对图片进行滤波,滤除图像的噪声成分,而Bilateral filtering即双边滤波器,它是一种保护边缘的平滑滤波器,这样既可以滤除噪声,edge又可以保留下来。
总结
上面只是列举了很少一部分的tuning项,实际上有非常多的tuning项目。camera tuning是由专门的tuning工程师来调试的。下图是一张tuning 工程师大概需要掌握的知识和技能。
作为android驱动或者系统工程师,只需要大概了解这些校正项的成因,现象就可以了。这样在调试摄像头出现问题时有助于我们快速定位属于那一类问题,并了解大致的原因和解决方法。