最近在学习3A技术,简单记录一下。
我们先来看下什么是3A技术?
3A即自动对焦(AF),自动曝光(AE),自动白平衡(AWB)
补充:通常在进行3A算法的时候会有一个先后顺序:AWB->AE->AF
问:为什么调节白平衡只有R和B的增益
答:简化电路,减少调节过程以及带来的工作量相应的增加。2、通过合理调节R-Drive和B-Drive,配合固定的G-DriVe完成亮平衡校对工作。这好比一只三条腿的桌子,一条腿固定,调节另外两条腿的长短,使桌面达到水平状态。亮平衡只有R和B,一般是长虹彩电的特征。
AF控制着对焦马达,是镜头的基本功能,AE与AWB自动白平衡算法来实现图像对比度最大、改善主体拍摄物曝光或曝光不足、使画面在不足光线照射下的色差得到补偿。3A是每个相机的基本算法功能,每个A都代表了成像的基本组件,总结一下:
- AE控制着ISO/快门,是sensor的基本功能
- AF控制着对焦马达,是镜头的基本功能
- AWB是camera色彩系统的第一个基础模块,3A准确率是成像的基本保证
关于上面的光圈,快门,ISO的含义知乎上有一个很绝的解释:
感兴趣的也可以跳转到这个话题看一下:如何理解 ISO、快门、光圈、曝光这几个概念?。
先来看下自动曝光的概念,然后在看几个跟其相关的概念:
Auto Exposure即自动曝光,是相机根据外界光线的强弱自动调整曝光量和增益,防止曝光过度或者不足的一种机制。
可见,AE的输入为当前影像的亮度值Y,输出为sensor的曝光时间和增益,isp增益和镜头光圈(如果镜头光圈可调)。当AE algorithm得到当前帧的亮度后,便会与target Y做比较,然后计算出下一次需要调整的参数,以便让影像的亮度越来越接近target Y,如下所示(target只是一个范围):
解释下上面照度的意思:
照度又称为投射光,是描述被摄体受照表面被照明的程度。照度定义为单位面积上所接受的光通量,照度E用公式表示为:
E = Φ / A E=\Phi/ A E=Φ/A
Φ \Phi Φ 为光通量, 单位为流明 ( I m ) (I m) (Im) ; A A A 为受照面积, 单位为平方米 ( m 2 ) \left(\mathrm{m}^2\right) (m2) 。
相机上的光圈是固定的,所以只需要考虑曝光时间和ISO(增益值的一种表示,这里的增益又分为Analog Gain,Digital Gain以及ISP
增益。这里记住ISO指的就是信号增益大小就行了)。
4. 自动曝光
有了上面的三个概念,我们再来看下相机的自动曝光怎么定义的,相机上的自动曝光就是让相机根据当前的图像信息自动配置曝光大小,也就是曝光时间和ISO的值。下面是一组不同曝光强度下的相机成像对比。
我们再来看下曝光相关的另一个概念,18%灰。在介绍这个概念之前,我们需要了解两个相关概念:韦伯定律和曝光分区系统。
再来看一个相关概念,测光区域。通常一个图片中同时存在亮与暗的区域,如果把所有区域都纳入考虑来算一个平均值,可能不能如实反映拍照者的期望,所以会有个重点测光区域。根据不同算法,测光区域也不同。比较原始的是将整个区域分为 M × N M \times N M×N个区域,取中心的 X × Y X \times Y X×Y区域;手机上通常有针对人脸区域测光、中心测光与点测光。测光区域也有一定的权重分布,通常在中心的区域权重会更大一些。
E V = A V + T V = B V + S V EV =AV+ TV= BV+ SV EV=AV+TV=BV+SV
关于上面每个值的计算方法如下:
根据上面的公式可以得到 E V = A V + T V = B V + S V EV =AV+ TV= BV+ SV EV=AV+TV=BV+SV的公式为:
2 ∗ log 2 ( F number ) − log 2 ( 1 exposure time ) = log 2 ( B / 0.3 K ) + log 2 ( 0.3 S ) 2 * \log _2(\mathrm{F}_ \text {number })-\log _2\left(\frac{1}{\text { exposure time }}\right)=\log _2(B / 0.3 K)+\log _2(0.3 S) 2∗log2(Fnumber )−log2( exposure time 1)=log2(B/0.3K)+log2(0.3S)
其中
在了解了上面的基本概念之后,我们来看下AE的算法步骤以及需要考虑的问题。
在一个响应周期内,AE算法需要处理的具体事项如下:
- 根据ISP硬件生成的图像曝光统计数据评估当前图像的曝光质量
- 如果曝光质量需要调整,则根据当前的工作参数和理想曝光目标生成下一帧图像的工作参数
- 将新的工作参数写入各硬件设备,驱动光圈、sensor快门及增益达到新的位置
- 对当前图像进行亮度统计
- 根据当前图像亮度确定曝光值
- 计算新的曝光参数,曝光时间,光圈和增益
- 将新的曝光参数应用到相机中
- 重复1-4的步骤,直到满足亮度需求
自动对焦是利用物体光反射原理,将反射的光被相机上的传感器CCD(光电转换器,将光信号转换为电信号的传感器)所接受,通过计算机处理,带动电动对焦设备进行对焦的方式叫做自动对焦。就是移动对焦设备使得成像清晰。
在了解自栋对焦算法之前我们需要知道几个常见名词,有些是初中物理已经见过的。
我们来看一下凸透镜成像原理:
人眼其实就是个可变焦的凸透镜。视网膜可以等效成CCD,人的大脑会自动的把倒立的像给处理成正向的。
成像公式:
1 f = 1 u + 1 v \frac{1}{f} = \frac{1}{u} + \frac{1}{v} f1=u1+v1
既然自动对焦是要让CCD接受清晰的图像,我们知道人眼很容易判断一个图像是否清晰,那么相机应该怎么判断一个图像是否清晰呢?方法有很多,我们简单介绍常用的几个。
Brenner梯度函数是最简单的梯度评价函数,它只是简单的计算相邻两个像素灰度差的平方:
其中:f(x,y) 表示图像f对应像素点(x,y)的灰度值,D(f)为图像清晰度计算结果。
Tenengrad 梯度函数采用Sobel算子分别提取水平和垂直方向的梯度值,基与Tenengrad 梯度函数的图像清晰度定义如下:
G(x,y) 的形式如下:
Laplacian 梯度函数与Tenengrad梯度函数基本一致,用Laplacian算子替代Sobel算子即可,该算子定义如下:
因此基于Laplacian 梯度函数的图像星清晰度的定义如下:
其中G(x,y)是像素点(x,y)处Laplacian算子的卷积。
因为清晰聚焦的图像有着比模糊图像更大的灰度差异,可以将方差函数作为评价函数:
其中 μ \mu μ为整幅图像的平均灰度值,该函数对噪声比较敏感,图像画面越纯净,函数值越小。
图像对比度通常也称为锐度,是用来描述图像细节分辨程度和清晰度的度量值。对比度检测聚焦采用锐度来评价聚焦的准确程度,图像锐度越大也就是聚焦值越大,说明越接近准确聚焦的位置。在聚焦调节范围内,每 个调焦位置会对应个锐度值,也就是聚焦值,这些聚焦值形成 曲线,通常称为聚焦曲线 。锐度值通过锐度评价函数计算获得,锐度评价函数有时也称为聚焦函数。一个良好的锐度评价函数对应的聚焦曲线应该是 个如下图所示的单峰曲线,并且曲线峰值对应的调焦位置即为准确聚焦的位置。
什么是聚焦峰值,聚焦的准确位置对应于锐度评价函数(锐度评价函数就是聚焦函数)的最大峰值,也只有找到最大峰值才能知道准确聚焦的位置。那么最大峰值应该怎么确定吗?可以看出,锐度评价函数决定了聚焦的精度,而聚焦的峰值搜索算法决定了自动聚焦的速度。下图展示几种搜索算法:
这部分的内容详细可以参考:自动聚焦技术(AF)。
补充:
图像清晰评价函数用来后期评估聚焦的效果,聚焦函数是用来找图像焦点的,注意区分两者的差别。
统计信息是和聚焦算法以一一对应的,什么样的算法就需要ISP计算相应的统计信息。不同的对焦算法就又形成了不同的自动对焦方式,不同的对焦方式有不同的对焦速度和硬件需求及设计(主要针对摄像头传感器)。不管什么对焦算法,他的目的都是要快准狠迅速完成高质量的对焦。
我们来介绍几个常见的对焦算法。
一种主动聚焦方式,摄像头发出红外光或超声波并接收返回光线,实现测距,然后借此距离计算物距实现对焦,此方法精度略差,高端机上已较少使用,或作为其他方法的补充。(现在也有激光实现快速准确聚焦,如iPhone的LiDAR)
相位检测聚焦是单反相机中用的最普遍的自动对焦方法,这种聚焦系统一般由反光镜、微透镜,以及多个成像敏感器等硬件构成 其对焦原理如图所示,简单地说,通过镜头的光束被分为两个部分,分别在不同的两组成像敏感器上成像 如果对焦准确,则两幅图像相同;如果对焦不准 ,则两幅图像会出现偏移 通过比较两幅图像而检测这个偏,就能检测出聚焦的偏离状态。 相位检测自动聚焦的优点在于对焦迅速且比较精确, 缺点在于 要独特的硬件构造,造价高,且其复杂的构造不适合需要结构紧凑的情况,比如不适合在一般的数码相机及移动手机等平台上应用。如下图所示:
对比度检测聚焦是另外一种被动聚焦方法,这种方法不需要额外的硬件构造,它仅仅通过对连续获得的实际图像进行分析处理,根据前后两帧或多帧图像的对比度计算结果来控制调焦的方向和大小。其基本原理是随着调焦向准确位置越 近,图像越清晰,对应的图像对比度也越大。由于不需要额外的硬件支持,这种聚焦方法广泛应用于摄像机、数码相机等成像系统。
会有以下缺点:
- 聚焦速度相对较慢;
- 对光照较为敏感,尤其是在低照度情况下容易失效;
- 当目标物缺乏明显的纹理细节(比如白色墙壁)时,难以准确聚焦;
下面是一个对比度检测聚焦的框架,对比度检测聚焦的关键因素有两点: ①锐度评价函数:②峰值判定和搜索策略。
先看一组图。同一光源下,左边的图是在AWB没开的情况下显示的图像,右边的是在AWB打开的情况下拍摄的。
在学习AWB之前,我们需要先了解几个概念:
下面我们来看几个矫正方法。
任一幅图像,当它有足够的色彩变化则它的RGB分量的均值会趋于相等。这是一个在自动白平衡方面应用极为广泛的理论。算法流程如下:
完全反射也是基于一个假说:基于这样一种假设,一幅图像中最亮的像素相当于物体有光泽或镜面上的点,它传达了很多关于场景照明条件的信息。如果景物中有纯白的部分,那么就可以直接从这些像素中提取出光源信息。因为镜面或有光泽的平面本身不吸收光线,所以其反射的颜色即为光源的真实颜色,这是因为镜面或有光泽的平面的反射比函数在很长的一段波长范围内是保持不变的。完美反射法就是利用用这种特性来对图像进行调整。算法执行时,检测图像中亮度最高的像素并且将它作为参考白点。基于这种思想的方法都被称为是完美反射法,也称镜面法。通俗的意思就是整个图像中最亮的点就是白色或者镜面反射出来的,那么最亮的点就是光源的属性,但是该点本身应该是白点,以此为基础就可计算出gain值从而进行校正。下面怡红色通道为例展示怎么计算的:
这种方法将灰度世界和完全反射以正交的方式结合。下面仍以红色通道为例演示怎么计算的:
u r R a v e 2 + v r R a v e = K a v e ; u r R max 2 + v r R max = K max K a v e = R a v e + G a v e + B a v e 3 ; K max = R max + G max + B max 3 \begin{aligned} & u^r R_{\mathrm{ave}}^2+v^r R_{\mathrm{ave}}=K_{\mathrm{ave}} ; \\ & u^r R_{\max }^2+v^r R_{\text {max }}=K_{\max } \\ & K_{\mathrm{ave}}=\frac{R_{\mathrm{ave}}+G_{\mathrm{ave}}+B_{\mathrm{ave}}}{3} ; \\ & K_{\max }=\frac{R_{\max }+G_{\max }+B_{\max }}{3} \end{aligned} urRave2+vrRave=Kave;urRmax2+vrRmax =KmaxKave=3Rave+Gave+Bave;Kmax=3Rmax+Gmax+Bmax
通过上面的方程组就可以解出和 然后对原像素进行校正:
R n e w = u r R o r g 2 + v r R o r g R_{new} = u^rR_{org}^{2} +v^rR_{org} Rnew=urRorg2+vrRorg
如图圆圈表示该颜色本身应该在坐标系中所处的位置,箭头分别表示随色温的变化发生的偏移,这个是通过先验知识得到的,后面再通过这个进行校正。
通过以上两种方式将图像分成8块,然后通过模糊逻辑的方式计算出每个快的一个权重,这个权重和亮度和色度相关,然后通过模糊逻辑方式进行确定。求得权重后就可以计算出整个图像的加权均值,如下图10a,黑点表示八个块的分布,X表示加权后整个图像的位置。然后目的是要让加权的这个值往白点上靠,就通过调整增益的方式调试,调整完增益后,每个块儿的均值又会发生变化,然后又重新计算出每个块的权重,再通过权重计算出整个图像的均值,如图10b,整个图像的均值已经靠近原点了。然后如果X和白点的差距在一个设定的范围内则认为完成白平衡,否则继续调整增益重复上述步骤进行校正。
将RGB颜色空间转换到YUV空间,转换公式如下:
[ Y U V ] = [ 0.3 0.59 0.11 − 0.15 − 0.29 0.44 0.51 − 0.52 − 0.095 ] [ R G D ] \left[\begin{array}{l} Y \\ U \\ V \end{array}\right]=\left[\begin{array}{lll} 0.3 & 0.59 & 0.11 \\ -0.15 & -0.29 & 0.44 \\ 0.51 & -0.52 & -0.095 \end{array}\right]\left[\begin{array}{l} R \\ G \\ D \end{array}\right] YUV = 0.3−0.150.510.59−0.29−0.520.110.44−0.095 RGD
通过限定YUV的区域来判断是否为白点,如下论文通过四个限制条件俩限制白点,满足条件的点就是白点,参与后续的计算,否则不是点直接舍弃
通过以上四个限制条件找到白点集合后,就可以对白点集合运用GW算法或者其他算法计算gain值从而进行后续的校正。
下面看展示几个白平衡算法效果图:灰度世界理论,完全反射,QCGP算法。