目标
- 使用连接到移动车辆的 Android 智能手机拍摄图像
- 频率:1赫兹
- 参考型号:谷歌 Pixel 3a
- 感兴趣的对象:车辆前方的道路/方式
- 图片用途:作为机器学习(如 RNN)的输入,以识别道路/路面上的损坏
- 拍摄环境:室外,仅限阴天
当前状态
- 捕获作品(由于数据大小,目前使用 JPEG 而不是 RAW)
- 自动曝光有效
- 静态焦距有效
挑战
- 图片中的道路/道路的表面通常是模糊的
- 运动模糊的来源主要来自摇晃的车辆/固定电话
- 为了减少运动模糊,我们要使用“快门速度优先模式”
- 即最小化快门速度=>增加ISO(接受增加噪点)
- 只有一个光圈 (f/1.8) 可用
- Camera2 API 中没有可用的“快门速度优先模式”(简称:Tv/S-Mode)
- CameraX API (还)没有提供我们需要的东西(静态焦点、Tv/S 模式)
脚步
- 将快门速度设置为支持的最快曝光(简单)
- 自动调整 ISO 设置以进行自动曝光(例如这个公式)
- 要计算 ISO,唯一缺少的部分是光照水平 (EV)
问题
- 如何在拍摄期间连续估计 EV 以在使用固定快门速度时自动调整 ISO?
到目前为止的想法:
- 如果我可以在没有实际启用的情况下从 Camera2 自动曝光 (AE) 例程中读出“建议”,
AE_MODE_ON
那么我可以轻松计算 EV。但是,到目前为止,我还没有找到用于此的 API。我想如果没有路由设备是不可能的。 - 如果环境光传感器能够提供自动曝光(计算 EV)所需的所有信息,这也将非常容易。但是,据我了解,它只测量入射光而不是反射光,因此测量没有考虑图片中的实际物体(它们的表面如何反射光)
- 如果我可以从最后一次捕获的像素中获取信息,这也是可行的(如果计算时间适合两次捕获之间的时间)。但是,据我所知,像素“亮度”在很大程度上取决于捕获的对象,即如果捕获的对象的亮度发生变化(路边的许多“黑马”或“白熊”)我会计算EV值不好。
- 在实际捕获之间捕获自动曝光的图像,并根据实际捕获的中间捕获中使用的自动选择设置计算光照水平。根据我的理解,这将是一种相对“好”的方式,但在资源端相当困难——我不确定两次捕获之间的可用时间是否足够。
也许我没有看到更简单的解决方案。有没有人做过这样的事情?