前言
该篇文档主要介绍当3A的状态为手动的时候,AE通过怎样的操作进行手动的调整。比较适合相机开发有一定基础的同学进行交流。今天的文档会先从理论知识开始讲解,其次会从我们常见的相机专业模式作为例子去进行加深理解。
那废话不多说,开始今天的归纳总结!
曝光的三大要素
- ISO/Gain控制
- Exposure Time 曝光时间控制
- Frame Duration 控制
ISO/Gain控制
ISO简单来说就是我们日常经常说的感光度,感光度越高表示对光线越敏感。以下将会以图解的形式描述ISO的组成。
我们对此有个印象就好,后续会对其进行一个详细的说明。
ISO的Sensor部分
Sensor包括模拟Gain和数字Gain,这两个Gain共同作用于感光度。
我们首先来看几个比较重要的语句
CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
获取Camera sensor Gain可调整的设备范围。
这个是获得Sensor所有的Gain的合计范围,包括数字Gain以及模拟Gain 。
CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
当前Camera Sensor支持的最大模拟Gain。
当后续设置SENSOR_SENSITIVITY小于等于这个值,全部用模拟Gain。
SENSOR_SENSITIVITY一般就是用于我们应用层调整ISO的一个FLAG,他这里调整的是整个Sensor Gain,后续会讲解他的使用。
需要注意的是:我们需要通过现实中相机表现理解为什么SENSOR_SENSITIVITY小于等于这个值,全部用模拟Gain。首先我们要知道一个前提知识点,拉模拟信号噪点会比较小,数字信号噪点会比较大,所以一般情况肯定是优先调整模拟Gain的。再例如就是当处于一个非常暗的环境下,会发现拍出来的照片会有非常多噪点,这里的原因就是在暗黑环境中,相机需要将感光度调整到最高,这时候模拟的Gain就会被拉满,最后只能通过数字Gain去强行拉高感光度。
ISO的ISP部分
值得注意的是这个部分的ISO一般在应用层不进行修改,当然有些手机也是可以的主要是看手机的硬件水平,我们这边先看看怎么获取他的取值范围。
CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
设置ISO
就如上面说的,我们应用层设置ISO主要就是通过设置sensor部分的Gain
CaptrueRequest#SENSOR_SENSITIVITY
这里的Gain是Total Gain
在支持postRawSensitivityBoost的设备上(支持ISP Gain),图像最终的Gain是SENSOR_SENSITIVITY*postRawSensitivityBoost
接下来我们看看postRawSensitivityBoost怎么设置的,这个不算重点,因为目前来说,许多手机都不允许设置这个值。
CaptrueRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
值得注意的是,该值表示Camera sensor输出RAW图给ISP之后,ISP在YUV/JPG图像上额外应用的Gain值,对RAW format buffer没有影响。
简单来说:对于最后感光度的体现,不同格式的图片存在差异。
YUV/JPG:SENSOR_SENSITIVITY*postRawSensitivityBoost
RAW:SENSOR_SENSITIVITY
曝光时间
曝光时间(exposure time)即快门速度(shutter speed),其单位为s. 它决定图像传感器受光时间长短。用来衡量进光的数量,自然进光的数量越多,整体的亮度越大。在应用层的使用也是偏简单的,调用Google所提供的接口即可。
CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
查看曝光时间可调节的范围
CaptureRequest#SENSOR_EXPOSURE_TIME
设置曝光时间
CaptureResult#SENSOR_EXPOSURE_TIME
捕获结果的曝光时间
Frame Duration控制
直译过来就是保留帧的持续时间,可能听着有点懵逼,接下来我将通过一个图解进行加深理解。
可以看到其实我们的帧率就是算出在一秒钟内进行了几次FD,FD其实代表的就是一帧的时间。同时FD其实也受曝光时间影响,所以从某种意义来说曝光时间往往会影响图像的帧率。曝光时间越大,帧率就会越小。
专业模式中实际运用
其实大家观察手机的专业模式会发现一个很有趣的问题,按照我原本的理解,拉高专业模式中的ISO,整体画面应该会亮一点。拉高曝光时间画面也应该更亮一些。但是事实是什么呢,现象非常有趣。
在设定上,如果只是修改ISO或者曝光时间中一个,另外一个值也会发生改变,我的理解就是有点像半自动的感觉,当你修改其中一个值的时候,相机会希望画面尽可能不会变化太大,导致另外一个值也会相应的改变,就例如你把曝光时间调大,这时候ISO就会自己变小,因为相机希望画面不要修改太多,处于一个平衡状态。
其次我们再来看看专业模式中的EV。我们其实在学习的时候会知道EV只能在3A自动的时候进行调节,因为其实调节EV,在本质上来说就是调节感光度和曝光时间去进行曝光补偿,但是有个生气的就是,在商业化的相机中,很多时候EV的值和ISO以及曝光时间的值都能同时调整,这就不符合我们一开始的学习基础。但是因为考虑到是商业化,也大抵是能理解,只是这么做的化,肯定就会出现各种问题。就例如,我这边举一个例子:
将EV调节到最大之后,将ISO调节到最小,这时候预览会掉帧。对于这种问题我们要找到他的根因,首先掉帧就肯定是因为帧率降低了,我们得找出为什么帧率会降低了。首先EV最大的情况下,相机自身首先会通过修改ISO值进行补偿,当ISO值都达不到补偿效果的时候这时候曝光时间也会被拉大,进行补偿。但是这时候你如果强行把ISO再调低,曝光时间就会把时间无限拉大。正如我们前面说的,曝光时间影响着FD,FD影响着帧率,自此问题根因找到。
最后进行总结以下
观察专业模式:
为什么之前说EV只能在3A自动的时候进行调节?
调节EV的本质其实就是修改ISO跟曝光时间
调节EV,就是3A自己在动
如果固定了ISO,调节EV,就只会动S
如果固定了S,调节EV,就只会动ISO