android 自动测光,Android Camera1中的对焦与测光

Android Camera1开发系列连载:

Android Camera1详解

Android Camera1显示预览的四种方式

对焦模式

在使用特定的对焦模式的时候,必须确保相机支持该模式,相机支持的对焦模式可以通过Parameters#getFocusMode接口来获取:

9a13610272f9d093abd91bd66564f0db.png

常用的对焦模式为:

// 连续自动对焦caf,预览场景变化时会自动去对焦

Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO

Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE

// 单次自动对焦af,下发一次请求则对焦一次

Camera.Parameters.FOCUS_MODE_AUTO

对焦区域

当对焦模式为caf或者af时,可以指定对焦区域,如果未设置,则驱动程序将会自己选择焦点目标,看一张来自官网描述对焦坐标系的图:

ef95e8874c0c71f504983f3d2c06acd7.png

如图所示,无论屏幕是横屏还是竖屏,预览视图的中心点坐标都是(0,0),左上角为(-1000,-1000),右下角为(1000,1000)

在计算屏幕坐标系中的UI点击坐标(x,y)到sensor对焦坐标系对焦区域focusRect的时候,还需要考虑预览的旋转角和前置镜像,计算过程大致如下:

00b598bcae7c741bceacbcbc15b70f88.png

设置对焦区域的时候,需要先查询一下可设置对焦区域的最大个数:

// 返回0的时候表示不支持设置对焦区域,通常都是返回1

// 当返回个数大于1的时候,可以设置对焦区域列表,

// 每个对焦区域可以设置权重,权重范围为1~1000

Parameters#getMaxNumFocusAreas

常见对焦模式的切换场景

单拍时,先对焦再拍照,拍照结束后切换到caf

连拍时,先对焦再拍照,连拍结束后切换到caf

触屏对焦TouchAF后,可以进行锁焦,预览场景变化时再转为caf;或者设置超时机制,3-5s后从af转为caf。不同手机的系统相机中选择的策略不同,主流策略大概就这两种

af切换到caf的时候,需要切换对焦模式和callback,从af切换到caf:

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);

camera.setAutoFocusMoveCallback(cafCallback);

从caf切换到af:

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);

camera.autoFocus(afCallback);

对焦画框逻辑

autoFocus流程:五种状态,三类UI

// 三类UI:正在对焦画白框,对焦成功画绿/黄框,失败画红框

// 五种状态

IDEL // focus is not active

FOCUSING // focus is in progress

FOCUSING_SNAP_ON_FINISH // will take picture after focus finish

SUCCESS  // focus finished and success

FAIL     // focus finished and fails

autoFocusMoving流程:三种状态,两类UI

// 两类UI:moving的时候画白框,对焦成功画绿/黄框,超时直接清除UI

// 三种状态

MOVING_START // caf start

MOVING_END  // caf end

TIMEOUT     // time out

上面的显示策略对对焦状态的展示是很明晰的,不过现在的主流相机app都不会搞这么复杂,比如我手头的iPhone和小米手机的系统相机就没这么多颜色切换

测光

测光的坐标系和使用流程与对焦是一样的,就不具体描述了。

在TouchAF的时候,测光区域可以和对焦区域一样,也可以区域中心点相同,而框的大小不同,或者对焦区域和测光区域设置为不同区域,这种焦侧分离的功能一般都是在相机app中的专业模式中提供。考虑用户体验选择不同的策略即可

常见测光方式

c4334ed06393b7f2e42d0489c199b729.png

注:Redmi k30 5G版 系统相机专业模式

点测光:对画面中较小的区域(占整体面积的1.5% - 3%)进行测光,不考虑周边环境亮度,测光点所侦测的画面非常小,结果比较精确。这种测光模式适合用于场景光线反差大,或者主体在画面中所占比例较小的时候使用;

中央重点测光:测光重点放在画面的中心约75%的区域。在光线色差反差较大的情况下,这种测光模式比矩阵测光更容易控制效果;

平均测光:又叫矩阵测光,对画面中整体区域的光线强弱和色彩等情况进行侦测分析后,得到一个平均比较科学的测光值。这种测光模式适合在场景中光线、色彩等反差 不大的情况下使用;

以下面这张照片为例,在逆光场景下展示花瓣的纹路,为了让花瓣显得通透一点,可以采用点测光模式进行拍摄

ef19999d26f9c648afb4afb172f5f575.png

测光方式的选择依赖于芯片提供支持或者相机Turing实现,在标准api中是没有直接提供相关接口的

该功能多见于系统相机专业模式,一般在第三方的相机类app启动相机预览后,都是默认的中央重点测光。第三方相机要实现测光方式的选择,除了依赖于厂商提供支持外,其实也可以自己研究一套AE权重表然后利用OpenGL来实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值