hir*_*lot 5 android android-camera2 exposure
我尝试使用 YUV_420_888 图像格式(我的索尼 XA1 不支持原始数据)通过camera2 API 来近似原始传感器输出。我将所有内容都改为手动并停用了我能找到的所有纠正程序:
mBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_OFF);
mBuilder.set(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_OFF);
mBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_OFF);
mBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_OFF);
mBuilder.set(CaptureRequest.TONEMAP_MODE, CameraMetadata.TONEMAP_MODE_CONTRAST_CURVE);
mBuilder.set(CaptureRequest.TONEMAP_CURVE,
new TonemapCurve(
new float[]{0.0f,0.0f,1.0f,1.0f},
new float[]{0.0f,0.0f,1.0f,1.0f},
new float[]{0.0f,0.0f,1.0f,1.0f}
));
mBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CameraMetadata.COLOR_CORRECTION_MODE_TRANSFORM_MATRIX);
mBuilder.set(CaptureRequest.COLOR_CORRECTION_TRANSFORM, new ColorSpaceTransform(new int[]{
1, 1, 0, 1, 0, 1,
0, 1, 1, 1, 0, 1,
0, 1, 0, 1, 1, 1
}));
mBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, new RggbChannelVector(1.0f,1.0f,1.0f,1.0f));
mBuilder.set(CaptureRequest.SHADING_MODE, CameraMetadata.SHADING_MODE_OFF);
mBuilder.set(CaptureRequest.STATISTICS_LENS_SHADING_MAP_MODE, CameraMetadata.STATISTICS_LENS_SHADING_MAP_MODE_OFF);
mBuilder.set(CaptureRequest.COLOR_CORRECTION_ABERRATION_MODE, CameraMetadata.COLOR_CORRECTION_ABERRATION_MODE_OFF);
mBuilder.set(CaptureRequest.CONTROL_AE_ANTIBANDING_MODE, CameraMetadata.CONTROL_AE_ANTIBANDING_MODE_OFF);
mBuilder.set(CaptureRequest.CONTROL_EFFECT_MODE, CameraMetadata.CONTROL_EFFECT_MODE_OFF);
mBuilder.set(CaptureRequest.CONTROL_ENABLE_ZSL, false);
mBuilder.set(CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTROL_SCENE_MODE_DISABLED);
mBuilder.set(CaptureRequest.EDGE_MODE, CameraMetadata.EDGE_MODE_OFF);
mBuilder.set(CaptureRequest.HOT_PIXEL_MODE, CameraMetadata.HOT_PIXEL_MODE_OFF);
mBuilder.set(CaptureRequest.NOISE_REDUCTION_MODE, CameraMetadata.NOISE_REDUCTION_MODE_OFF);
Run Code Online (Sandbox Code Playgroud)
之后,我连拍了 10 张照片,曝光时间线性增加,ISO 为 40。我分析了 Y 层(亮度分量)的值,发现它们仅在 203(8 位全范围 = 255)。与伽马校正曲线不同,203 处的过渡非常尖锐。
问题: 这是物理传感器效应(即像素饱和度)吗?我是否忘记了管道中的一些非线性校正?Camera2 API是否对YUV_420_888使用全范围线性变换?
谢谢你的帮助!
测试了不同的 ISO 值 (100,400),非线性仍然存在。这排除了传感器的物理饱和。
但后来我测试了 RGB 值,这些值是线性的。有问题的 Y 值 >203 转换到 RGB [0,255] 范围之外。问题解决了,但是改造需要很多时间。
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |