好色之图 | CMOS成像如何接近人眼感受效果?图像亮度暗藏ISP算法玄机

2017-01-04 10:51:30 来源:EEFOCUS
分享到:
标签:

前言:

这篇文章是我从事ISP研究数年来的一些经验总结,没有用到深奥的理论知识,有的只是根据实际状况来处理的一些常规方法,以及曾经犯过的错误总结。我想把ISP function的原理用简单浅显的语言描述出来,希望对初学者有所帮助。这里的ISP主要是指从CMOS  sensor输出的bayer pattern,到转换成通用的YUV或者YCbCr格式的过程,通常用于USB摄像头/监控摄像头/手机/平板等芯片设计中。

 

2.图像亮度

ISP算法的目的是要让CMOS成像接近人眼的感受效果,所以首先要比较人眼成像和CMOS成像的差异。从图像亮度这方面来看,最重要的就是曝光,其次有针对显示器特性的Gamma映射,针对CMOS sensor 特性的Black Level Correction,针对镜头透光性的Lens shading Correction,以及anti-flick等,下面逐一介绍。


2.1曝光

影响CMOS Sensor 成像亮度的因素有光圈大小,曝光时间以及Sensor像素本身的感光特性。光圈越大,进光量越大,图像亮度和光圈大小成正比。曝光时间越长,接收到的光子数量越多,图像亮度和曝光时间也成正比。Sensor本身像素敏感度则和pixel size大小,以及CMOS process(FSI/BSI)相关。在Sensor内部,完成光电转化之后的电位,还需要通过一个模拟/数字增益电路,增益越大,图像越亮,同时Noise也会被放大,在sensor的参数设定中有这个analog/digital gain,即通常说的ISO。


对于人眼来说,瞳孔是人眼的口径;虹膜是光圈,像是孔径内的档板。在角膜的折射造成有效孔径 (入射瞳)。入射瞳的直径通常是4mm,但是它的范围可以从在明亮地方的2mm变化至黑暗地方的8mm。
Sensor和人眼的对比如下表格:

 

从以上表格内容可以看出,人眼是靠调整光圈来适应环境亮度,而一般的摄像头则是调整曝光时间和增益来适应环境亮度。相比而言,人眼在同一场景下所能感受的亮度动态范围要比CMOS sensor大很多倍,在很多户外场景中,摄像头拍出的照片局部过曝,或者局部太黑,因此摄像头很需要HDR技术:同一场景下拍摄不同曝光时间的多张图片(扩大动态范围),来合成一张图像。另一方面CMOS sensor的曝光时间理论上可以无限长,因此摄像头可以拍下和人眼平常所见不同的美景,例如夜晚的星空和城市夜景(通常曝光时间要好几十秒)。不过对于视频拍摄来说,较长的曝光时间意味着运动物体会变模糊,所以一般都要求帧速率在15fps以上,即曝光时间最大只有1/15s。在这个约束条件下,一般的Sensor感光效果相比人眼差很多,在暗光下为了使图像可见,必须要用很大的模拟或者数字增益,很多sensor会到64倍增益,这带来了很大的Noise,人眼是没有Noise这一说法的哦。


在ISP中,自动曝光AE有相对成熟的算法。首先以人的视觉主观感觉确定一个目标亮度,这个亮度要让用户看着合适,具体数值看用户喜好和真实环境可以调整。然后统计当前图像的实际亮度。统计的方法常见的有两种。


一种是基于亮度均值的方法,例如把整幅图像分割成若干个矩形框,分别统计矩形框中像素平均亮度,不同位置的矩形框有不同的权重系数,然后加权平均得到整幅图像的亮度均值。下图为两种常见的权重设置方式:中间优先(适用于人像拍摄)和下方优先(适用于行车记录仪)。

 

(左)中心优先     (右)下方优先

Figure 2.1.1 亮度统计权重


在人像拍摄的时候,有时并不知道人脸的位置在哪里,如果此时背景比较明亮,那么人脸可能会拍得比较暗。假如上层应用中有人脸检测功能,那么就可以告诉ISP人脸的位置在哪里,ISP对人脸所在的位置进行亮度统计,把得到人脸的亮度和整幅图像的均值做加权平均,重新得到当前亮度。


对于平板和手机而言,还有touch AE,拍摄视频/照片的时候,在屏幕上点击感兴趣的位置,那么AE 和AF 都会跟着有变化。在ISP中,就是对着touch的区域做亮度统计,把touch区域的亮度和整幅图像的均值再做加权平均,重新得到当前亮度。
 

还有一种方法是基于直方图统计的,力争让图像的灰阶分布比较好,特别是在高反差的情况下,像素主要分布在直方图的两端,亮度均值的算法不太适用。直方图数据可以明显的反映出这种状况,从而选择暗光优先模式或者亮光优先模式。
 

以上介绍了当前图像的几种亮度统计方法,得出当前亮度,接着要计算当前亮度和目标亮度的比例关系,根据这个比例关系来调整Sensor的曝光时间和增益。 我们已经知道图像亮度是和曝光时间及增益成线性比例关系,有如下公式:

目标亮度/当前亮度 = (期望曝光时间×期望增益)/(当前曝光时间×当前增益)


AE算法要在期望曝光时间和期望增益之间做一定的平衡,增益较大的话会有Noise,曝光时间长的话会导致帧速率fps下降。此外,AE控制算法还需要注意两点:一是给sensor下的曝光参数并不是实时生效的,往往会有几个Frame的延迟,要小心避免AE来回震荡;二是要切换AE参数要平稳一些,渐进的方式达到目标亮度,一步到位的视觉感受并不好,AE收敛速度和AE稳定性需要平衡。
 

机不可失!前沿科技展资料限时下载
玩转物联网,你需要先看看这个
轻松应对USB Type-C发射与接收机的测试挑战
先进汽车设计与测试完美攻略
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

作者简介
侯莅聪
侯莅聪

东南大学研究生毕业,在瑞晟微电子工作12年。是数字IC设计资深经理和数字图像处理专家,拥有多篇专利。参与研发的USB camera产品,获得市场占有率第一的位置。

微话题

工程师年终奖大PK

(有奖互动)说一说你在年会上的小幸运 ……