Android Camera 测光梳理

   转载:本文为CSDN博主「vivianluomin」的原创文章,整理:york.zhou

   原文链接:https://blog.csdn.net/qq_36391075/article/details/90602302

这篇文章将从下面几点展开:

      一、什么是测光?

      二、测光的原理

      三、测光方式

      四、Android中的测光

      五、拍摄样张

一、什么是测光 ?

我们所看到的,不是物体本身,而且这个物体上反射出来的光,我们想要看东西,我们的眼睛就需要接受这个光,同理,相机想要拍出照片,也需要接收这个光。人眼是可以自动调节进光量的,但是相机是做不到的,所以,我们需要控制这个光的进入,光进入多了,照片会过曝,光进入少了,照片会欠曝,这个时候,我们就需要测光了。

测光就是测光线的明暗,使相机实现正确曝光的过程。

也就是组合曝光参数:光圈,ISO,快门

二、测光的原理 

相机在测光过程中,会将拍摄的所有物体都默认为反射率18%的灰色,专业术语叫“中级灰”,并以此作为测光的基准,曝光的目的是为了正确还原这种灰色。因为18%灰与人皮肤平均反射光的色调一样。但是18%灰也不是准确的,对于纯白,纯黑,会导致画面的影调和色彩的失真。

三、测光方式

1)评价测光 

是最常用的一个测光模式,也叫多区域测光。对画面的整体亮度进行平均测定,对逆光主体也有效。

2)局部测光 

是对画面的中央部分进行测光,相机的测光元件会对画面中心约占画面12%的范围进行测光,并最终进行平均加权而得出测光数据。

3)点测光

比局部测光更为精确,测光元件仅测量画面最中心1%-3%的极小范围区域进行测光。

4)中央重点平均测光

将画面中央约60%的区域作为测光的重点,同时并兼顾画面的边缘。与评价测光的区别在于相机会根据拍摄者的需要强调对某个区域进行重点测光,所获得的图像会很少有某个区域欠曝或过曝的问题出现,对于一些重点主体部位,图像也能很清晰地进行反映。

四、Android中的测光

1)CONTROL_AE_ANTIBANDING_MODE 用于抗闪烁的

对于某些类型的照明装置,例如一些荧光灯,以电源频率的速度闪烁,如果曝光时间不正确,则可能最终的成像中,闪烁成了图像上的一组亮带。

它的值有:OFF 50HZ 60HZ AUTO 可使用CameraCharacteristics#CONTROL_AE_AVAILABLE_ANTIBANDING_MODES查询支持的值。

2)CONTROL_AE_EXPOSURE_COMPENSATION 设置曝光补偿,可调节图像亮度

它是以step进行调整的,step的大小通过CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP进行查询,曝光补偿范围通过CameraCharacteristics#CONTROL_AE_COMPENSATION_RANGE进行查询。例如,如果曝光值(EV)步长为0.333,则“6”表示+2 EV的曝光补偿; -3意味着-1 EV的曝光补偿。一个EV表示图像亮度加倍。

只有在CaptureRequest#CONTROL_AE_MODE != OFF的情况下才有效。或者在CaptureRequest#CONTROL_AE_LOCK == true时也有效。

在曝光补偿改变的情况下,相机设备可能需要几帧才能到达新请求的曝光目标。

在此期间,CaptureResult#CONTROL_AE_STATE字段将处于SEARCHING状态。达到新的曝光目标后,CaptureResult#CONTROL_AE_STATE将从SEARCHING更改为CONVERGED,LOCKED(如果启用了AE锁定)或FLASH_REQUIRED(如果场景太暗而无法进行静态捕捉)。

3)CONTROL_AE_REGION 设置自动曝光测量区域

权重必须在[0,1000]以内,而且代表的是这个区域中每个像素的权重。

在 metering result 中,相同权重的 更大的mertring aream 比 较小的区域有更多影响。metering 区域可以重叠,而且相机设备会叠加重叠区域的权重。

权重是相对于其他计量区域的权重,因此如果仅使用一个区域,则所有非零权重将具有相同的效果。

忽略0权重的区域。这个权重是设置在MeteringRectangle中的。

手动曝光设置:只有在CaptureRequest#CONTROL_AE_MODE为OFF并且支持时才可以使用。

4)LENS_APERTURE:光圈 

支持的光圈范围可使用CameraCharacteristics#LENS_INFO_AVAILABLE_APERTURES查询。在光圈正在改变时,LENS_STATE会被设置为MOVING。

5)SENSOR_EXPOSURE_TIME:快门/曝光时间 

只有在CaptureRequest#CONTROL_AE_MODE or CaptureRequest#CONTROL_MODE为OFF时才有效。

可以通过CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE进行范围查询。

6)SENSOR_SENSITIVITY:ISO/灵敏度 

可通过 CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE进行范围查询。

只有在CaptureRequest#CONTROL_AE_MODE or CaptureRequest#CONTROL_MODE为OFF时才有效。

7)SENSOR_FRAME_DURATION:从帧曝光开始到下一帧曝光开始的持续时间。

五、拍摄样张

项目中:对于设置不同的曝光补偿:4,2,0,-2,-4 

对于华为nova2s,step为1/2,范围在-4~4

设置曝光补偿为2,AE_REGION建设一半(左图为曝光补偿为2,AE_REGION = FOCUS_REGION,右图为不设置曝光补偿)

推荐阅读:

ISP图像处理流程介绍

Camera CMOS工作原理

高通Camera数字成像系统简介

高通CamX架构

高通CamX关键流程

高通CamX术语全称

一篇文章带你了解Android 最新Camera框架

深圳上班,

生活简简单单,

14年开始从事Android Camera相关软件开发工作,

做过车载、手机、执法记录仪......

公众号记录生活和工作的点滴,

点击关注“小驰笔记”,期待和你相遇~

 觉得不错,点个赞呗~ 

posted @ 2021-07-09 08:00  小驰行动派  阅读(38)  评论(0编辑  收藏  举报  来源