Получение информации о цветовой матрице и балансе белого из Camera2 API (для пользовательской необработанной обработки) - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю в приложении, где мне нужно сделать много снимков (возможно, десятки тысяч), и они должны быть RAW, которые я обрабатываю в нативном коде. Прямо сейчас я конвертирую R AWs в DNG, и в нативном коде я распаковываю их, используя libraw. Я получаю множители цвета баланса белого и цветовую матрицу из dng.

Однако преобразование необработанного в dng и последующая обработка dng занимает довольно много времени, и я хотел бы пропустить этот шаг, и обрабатывать необработанную информацию напрямую, без посредника DNG. Но для этого мне нужно получить цветовую матрицу и значения WB. Я посмотрел на документы, но не нашел способа как это сделать. Любая помощь будет оценена.

1 Ответ

1 голос
/ 27 апреля 2020

Эта информация доступна в CameraCharacteristics и CaptureResult объектах, которые вы передаете 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 spe c, но вы можете попытаться взглянуть на реализацию DngCreator, чтобы узнать, как go из API camera2 в поля DNG: https://cs.android.com/android/platform/superproject/+/master: frameworks / base / core / jni / android_hardware_camera2_DngCreator. cpp; l = 1217

Хотя официального примера использования этой информации для обработки необработанного буфера нет, в тестах на соответствие Android включен простой преобразователь RAW в Java, используемый для подтверждения того, что результирующее изображение разумно совпадает с изображением JPEG, предоставленным устройством (чтобы дважды проверить, что различные поля метаданных достаточно корректны): https://cs.android.com/android/platform/superproject/+/master: cts / tests / camera / src / android / hardware / camera2 / cts / rs /RawConverter.java;l=279

...