Какова цель и как использовать CaptureRequest.SENSOR_FRAME_DURATION в Camera2 API? - PullRequest
0 голосов
/ 03 мая 2019

При настройке ручного управления в Android с помощью Camera2 API, какова цель CaptureRequest.SENSOR_FRAME_DURATION ?

Я несколько раз прочитал документацию но все еще не могу понять его назначение и какое значение установить относительно времени экспозиции и ISO.

Я понимаю, что CaptureRequest.SENSOR_EXPOSURE_TIME определяет, сколько света пропускает датчик;также, что CaptureRequest.SENSOR_SENSITIVITY - это чувствительность датчика к свету (ISO), но нет понятия о SENSOR_FRAME_DURATION и как это связано со временем экспозиции и чувствительностью датчика.

Например, если я установил длительное время экспозиции1 секунда или 30 секунд, тогда какое значение я должен установить в SENSOR_FRAME_DURATION?И как это связано с другими сенсорами?

1 Ответ

0 голосов
/ 08 мая 2019

FRAME_DURATION - это та же концепция, что и выходная частота кадров. То есть как часто изображение считывается с датчика изображения? Частота кадров обычно указывается в кадрах в секунду, а FRAME_DURATION является обратной величиной - длительностью одного кадра.

Поскольку API-интерфейс camera2 предназначен для управления каждым кадром, целесообразно указывать длительность в качестве свойства для каждого кадра.

FRAME_DURATION не может быть короче, чем EXPOSURE_TIME (поскольку вы не можете прочитать изображение с датчика, пока экспозиция не будет завершена), но API обрабатывает это для вас - если вы запрашиваете FRAME_DURATION, которое слишком мало по сравнению с EXPOSURE_TIME, оно автоматически увеличивается.

Тем не менее, часто вам может потребоваться постоянная частота кадров (например, 30 кадров в секунду для записи видео), поэтому вы устанавливаете FRAME_DURATION на 1/30 с = 33333333 нс, а затем изменяете EXPOSURE_TIME для ручного управления экспозицией. Пока вы держите EXPOSURE_TIME менее 1/30 с, вы будете получать стабильную частоту кадров и все еще будете иметь ручную регулировку экспозиции.

Минимально возможная длительность кадра (и, следовательно, максимальная частота кадров) зависит от выходного разрешения (разрешений) и формата (ов), которые вы запрашивали в сеансе захвата камеры. Как правило, для считывания больших разрешений требуется больше времени, что ограничивает минимальную длительность кадра. Камеры, поддерживающие функцию камеры BURST_CAPTURE, могут обрабатывать как минимум 20 кадров в секунду для 8-мегапиксельных снимков или лучше.

На уровне датчика изображения длительность кадра реализуется путем добавления дополнительного времени вертикального гашения, чтобы EXPOSURE + VBLANK = FRAME_DURATION. Полная картина также более сложна в том, что типичные CMOS-датчики изображения могут экспонировать некоторые строки изображения, в то время как другие считываются (рольставни), поэтому фактические временные диаграммы выглядят более сложными. Однако, как правило, вам не нужно заботиться о простом ручном контроле экспозиции.

...