从 Camera2 API 获取颜色矩阵和白平衡信息(用于自定义原始处理)
Getting the color matrix and white balance info from Camera2 API (for custom raw processing)
我在一个应用程序中工作,我需要拍摄很多照片(可能数万张)并且它们必须是 RAW,我用本机代码处理它们。
现在我正在将 RAW 转换为 DNG,并在本机代码中使用 libraw 解压缩它们。我得到了白平衡颜色倍增器,以及来自 dng 的颜色矩阵。
然而,将raw转换为dng然后处理dng需要相当多的时间,我想跳过这一步,直接处理raw信息,而不需要DNG中介。但为此我需要获得颜色矩阵和 WB 值。我确实看过文档,但我没有找到任何方法来做到这一点。任何帮助将不胜感激。
该信息在 CameraCharacteristics 和 CaptureResult objects that you pass to DngCreator 中可用,具体如下字段:
https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_calibration_transform1
https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_color_transform1
https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_forward_matrix1
https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_reference_illuminant1
https://developer.android.com/reference/android/hardware/camera2/CaptureResult#SENSOR_NEUTRAL_COLOR_POINT
这些字段中的大部分基本上直接映射到 DNG 规范,但您可以尝试查看 DngCreator 实现以了解如何从 camera2 API 转到 DNG 字段:
https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/jni/android_hardware_camera2_DngCreator.cpp;l=1217
虽然没有使用此信息处理原始缓冲区的官方示例,但 Android 合规性测试在 Java 中包含一个简单的 RAW 转换器,用于确认生成的图像与设备提供的 JPEG 图片(仔细检查各种元数据字段是否合理正确):https://cs.android.com/android/platform/superproject/+/master:cts/tests/camera/src/android/hardware/camera2/cts/rs/RawConverter.java;l=279
我在一个应用程序中工作,我需要拍摄很多照片(可能数万张)并且它们必须是 RAW,我用本机代码处理它们。 现在我正在将 RAW 转换为 DNG,并在本机代码中使用 libraw 解压缩它们。我得到了白平衡颜色倍增器,以及来自 dng 的颜色矩阵。
然而,将raw转换为dng然后处理dng需要相当多的时间,我想跳过这一步,直接处理raw信息,而不需要DNG中介。但为此我需要获得颜色矩阵和 WB 值。我确实看过文档,但我没有找到任何方法来做到这一点。任何帮助将不胜感激。
该信息在 CameraCharacteristics 和 CaptureResult objects that you pass to DngCreator 中可用,具体如下字段:
https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_calibration_transform1 https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_color_transform1 https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_forward_matrix1 https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraCharacteristics#sensor_reference_illuminant1 https://developer.android.com/reference/android/hardware/camera2/CaptureResult#SENSOR_NEUTRAL_COLOR_POINT
这些字段中的大部分基本上直接映射到 DNG 规范,但您可以尝试查看 DngCreator 实现以了解如何从 camera2 API 转到 DNG 字段: https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/jni/android_hardware_camera2_DngCreator.cpp;l=1217
虽然没有使用此信息处理原始缓冲区的官方示例,但 Android 合规性测试在 Java 中包含一个简单的 RAW 转换器,用于确认生成的图像与设备提供的 JPEG 图片(仔细检查各种元数据字段是否合理正确):https://cs.android.com/android/platform/superproject/+/master:cts/tests/camera/src/android/hardware/camera2/cts/rs/RawConverter.java;l=279