ИТС тесты камеры

На этой странице представлен полный список тестов в рамках набора тестов изображения камеры (ITS), который является частью набора тестов совместимости Android (CTS) Verifier. Тесты ITS являются функциональными тестами, то есть они не измеряют качество изображения, а показывают, что все заявленные функции камеры работают должным образом. Этот документ позволяет разработчикам и тестировщикам понять, что делают отдельные тесты и как устранять сбои тестов.

Камера ITS проверяет тесты по требуемым свойствам камеры, уровню API и уровню класса производительности мультимедиа (MPC). На уровне API ITS использует ro.product.first_api_level для проверки добавленных на определенном уровне API тестов, которые проверяют негативное взаимодействие пользователей с функциональностью на более низких уровнях API. ITS использует ro.vendor.api_level для тестирования функций, добавленных на определенном уровне API, которые требуют новых аппаратных возможностей. Если для устройства определен ro.odm.build.media_performance_class , ITS требует выполнения определенных тестов в зависимости от уровня MPC.

Тесты сгруппированы по сценам следующим образом:

  • Scene0 : Захват метаданных, дрожания, гироскопа, вибрации.
  • сцена 1 : экспозиция, чувствительность, компенсация EV, YUV против JPEG/RAW.
  • сцена2 : распознавание лиц, тесты, требующие цветных сцен.
  • сцена 3 : улучшение краев, движение объектива.
  • сцена4 : Соотношение сторон, обрезка, поле зрения.
  • сцена5 : Затенение линзы
  • сцена6 : масштабирование
  • Scene7 : Переключение нескольких камер.
  • Scene8 : измерение региона AE и AWB
  • сцена9 : сжатие JPEG.
  • Scene_extensions : Расширения камеры.
  • Scene_flash : автоматическая вспышка, минимальная частота кадров.
  • Scene_video : Пропадает кадр.
  • Sensor_fusion : смещение времени камеры/гироскопа
  • Feature_combination : Комбинации функций.

См. отдельные разделы для описания каждой сцены.

сцена0

Тесты сцены 0 не требуют никакой конкретной информации о сцене. Однако для проведения испытаний на гироскоп и вибрацию телефон должен быть неподвижен.

test_jitter

Измеряет дрожание временных меток камеры.

Протестированные API:

Пройдено: разница между кадрами составляет не менее 30 мс.

test_jitter_plot.png

test_jitter_plot.png (Обратите внимание на небольшой диапазон по оси Y. На этом графике джиттер на самом деле небольшой.)

test_metadata

Проверяет достоверность записей метаданных. Просматривает результаты захвата и характеристики объектов камеры. В этом тесте используются значения экспозиции и усиления auto_capture_request , поскольку содержимое изображения не важно.

Протестированные API:

Пройдено: аппаратный уровень, rollingShutterSkew , теги frameDuration , timestampSource , croppingType , blackLevelPattern , pixel_pitch , FoV, гиперфокальное расстояние присутствуют и имеют допустимые значения.

test_request_capture_match

Проверяет, что устройство записывает правильные значения экспозиции и усиления, считывая метаданные захвата.

Протестированные API:

Пройдено: значения метаданных запроса и захвата совпадают для всех снимков.

test_sensor_events

Тестирует, что устройство запрашивает и распечатывает события датчиков для устройств, рекламирующих поддержку объединения датчиков. Ожидаемые датчики — акселерометр, гироскоп и магнитометр. Этот тест работает только в том случае, если экран включен, то есть устройство не находится в режиме ожидания.

Протестированные API:

Pass: Получены события для каждого датчика.

test_solid_color_test_pattern

Проверяет правильность создания сплошных цветных тестовых шаблонов для отключения звука камеры. Если поддерживается отключение звука камеры, должны поддерживаться сплошные цветные тестовые шаблоны. Если отключение звука камеры не поддерживается, тестовые шаблоны сплошного цвета проверяются только в том случае, если такая возможность заявлена.

Если поддерживаются изображения RAW, также проверяется назначение цветов. Тестируемые цвета: черный, белый, красный, синий и зеленый. Для камер, которые не поддерживают изображения RAW, тестируется только черный цвет.

Протестированные API:

Пройдено: поддерживаются сплошные тестовые шаблоны правильного цвета и небольшая дисперсия изображения.

test_test_pattern

Проверяет параметр android.sensor.testPatternMode для захвата кадров для каждого допустимого тестового шаблона и проверяет, правильно ли генерируются кадры для сплошных цветов и цветных полос. Этот тест включает в себя следующие шаги:

  1. Захватывает изображения для всех поддерживаемых тестовых шаблонов.
  2. Выполняет простую проверку правильности тестового шаблона сплошного цвета и цветных полос.

Протестированные API:

Пройдено: поддерживаемые тестовые шаблоны генерируются правильно.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

Тестирует преобразование тестового шаблона из RAW в YUV с линейной картой тонов. Для этого теста требуется android.sensor.testPatternMode = 2 (COLOR_BARS) для создания идеального шаблона изображения для преобразования тональной карты. Гарантирует, что конвейер имеет правильные выходные цвета с линейной картой тонов и идеальным входным изображением (зависит от test_test_patterns ).

Протестированные API:

Пройдено: YUV и RAW похожи друг на друга.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Проверяет, находятся ли события изображения и датчика движения в одном временном интервале.

Протестированные API:

Пройдено: временные метки движения находятся между двумя временными метками изображения.

test_vibration_restriction

Проверяет, работает ли вибрация устройства должным образом.

Протестированные API:

Пройдено: устройство не вибрирует при отключении звука с помощью API ограничения звука камеры.

сцена 1

сцена1 представляет собой серую диаграмму. Серая диаграмма должна охватывать центральные 30 % поля зрения камеры. Ожидается, что серая диаграмма будет в некоторой степени бросать вызов 3A (автоэкспозиция, автоматический баланс белого, автофокусировка), поскольку в центральной области нет никаких особенностей. Однако запрос на захват определяет всю сцену, которая включает в себя достаточно функций для сходимости 3A.

Камеры RFoV можно тестировать на испытательном стенде WFoV или RFoV. Если камера RFoV тестируется на испытательном стенде WFoV, диаграмма масштабируется на ⅔, чтобы обеспечить некоторые границы серой диаграммы в поле зрения и помочь сходимости 3A. Более подробное описание стендов для тестирования камер см. в разделе Camera ITS-in-a-box .

сцена 1

сцена 1: полноразмерная диаграмма (слева). ⅔ масштабированная диаграмма (справа).

test_ae_precapture_trigger

Тестирует конечный автомат AE при использовании триггера предварительного захвата. Захватывает пять ручных запросов с отключенным AE. Последний запрос имеет триггер предварительного захвата AE, который следует игнорировать, поскольку AE отключен.

Протестированные API:

Пройдено: AE сходится.

test_auto_vs_manual

Тесты, в которых были сделаны автоматические и ручные снимки, выглядят одинаково.

Протестированные API:

Успешно: усиление и преобразование баланса белого вручную, сообщаемые в каждом результате съемки, совпадают с estimate автоматического баланса белого по алгоритму 3A камеры.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

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

Протестированные API:

Pass: Создает черно-белые изображения. Насыщенные каналы белых изображений имеют значения RGB [255, 255, 255] с погрешностью менее 1%.

test_black_white_blacktest_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_capture

Проверяет, что весь конвейер захвата может соответствовать скорости полноразмерного захвата и процессорному времени.

Протестированные API:

Пройдено: захватывает серию полноразмерных изображений, проверяет отсутствие кадров и яркость изображения.

test_burst_sameness_manual

Делает 5 серий по 50 изображений с ручной настройкой съемки и проверяет их идентичность. Этот тест можно использовать для определения наличия спорадических кадров, которые обрабатываются по-разному или содержат артефакты.

Протестированные API:

Пройдено: изображения идентичны визуально и в значениях RGB.

Неудачно: показывает скачок или падение средней диаграммы RGB в начале каждого пакета.

  • Допуск составляет 3% для first_API_level < 30.
  • Допуск составляет 2 % для first_API_level >= 30.

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

Проверяет, что действительные данные возвращаются в объекты CaptureResult . Выполняет автоматический, ручной и автоматический захват.

Протестированные API:

Пройдено: метаданные действительны для всех захватов, а ручные настройки не попадают во второй автоматический захват. Выводит на график коррекцию затенения объектива для снимков.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Проверяет, что потоки RAW невозможно обрезать.

Протестированные API:

Пройдено: изображения YUV обрезаются по центру, но не изображения RAW.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

Тесты на то, что регионы посева работают. Делает полное изображение и создает фрагменты из 5 различных областей (углы и центр). Делает изображения с кадрированием для 5 областей. Сравнивает значения патча и изображения обрезки.

Протестированные API:

Пройдено: изображение обрезанной области соответствует фрагменту, соответствующему обрезанному изображению.

test_dng_noise_model

Проверяет правильность параметров необработанной модели DNG. На графике изображена измеренная дисперсия центрального участка серой карты в необработанных снимках, снятых в диапазоне чувствительности, и сравниваются эти значения с дисперсией, ожидаемой при каждой чувствительности с помощью модели шума DNG в камере HAL (на основе Параметры O,S, возвращаемые в объектах результатов захвата). Для получения более подробной информации о модели шума DNG загрузите следующий документ о модели шума DNG .

Протестированные API:

Пройдено: параметры необработанной модели DNG верны. Ожидаемые значения RGB соответствуют фактически измеренным значениям RGB.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Проверяет, применяется ли компенсация величины экспозиции (EV). Тест увеличивает экспозицию в восемь этапов и сравнивает измеренную яркость с ожидаемой. Ожидаемые значения рассчитываются на основе яркости изображения без применения компенсации EV, и ожидаемое значение будет насыщаться, если рассчитанные значения превышают диапазон фактических значений изображения. Тест не пройден, если ожидаемые значения и измеренные значения не совпадают или изображения переэкспонированы в течение пяти шагов.

Протестированные API:

Пройдено: изображения показывают увеличение экспозиции без переэкспонирования в течение пяти шагов.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

Проверяет, что компенсация EV применяется с использованием диапазона, созданного с помощью CONTROL_AE_COMPENSATION_STEP . При каждом значении компенсации захватывается восемь кадров.

Протестированные API:

Пройдено: фиксируется увеличение яркости с увеличенной настройкой компенсации EV, и восемь кадров, снятых для каждой настройки компенсации EV, имеют стабильные значения яркости.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure_x_iso

Тесты на достижение постоянной экспозиции при изменении ISO и времени экспозиции. Делает серию снимков, в которых ISO и время экспозиции выбраны так, чтобы сбалансировать друг друга. Результаты должны иметь одинаковую яркость, но с течением времени изображение должно становиться более шумным. Проверяет, что средние значения пикселей выборки близки друг к другу. Гарантирует, что изображения не привязаны к 0 или 1 (из-за чего они будут выглядеть как плоские линии). Тест также можно запустить с изображениями RAW, установив флаг debug в файле конфигурации.

Протестированные API:

Пройдено: изображения имеют одинаковую яркость, но становятся более шумными при более высоком значении ISO. Плоскости RGB являются плоскими, когда значение экспозиции ISO* постоянно в тестируемом пространстве усиления.

Механизм отказа:

  • В test_exposure_plot_means.png по мере увеличения значений множителя усиления (ось X) нормализованные средние значения плоскости RGB (ось Y) начинают отклоняться от значений множителя низкого усиления.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1,00test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

Тесты, конвертирующие изображения YUV и изображения устройств в формате JPEG, выглядят одинаково. Тест берет центральные 10% изображения, вычисляет значения RGB и проверяет их совпадение.

Протестированные API:

Пройдено: средняя разница RGB между каждым изображением составляет менее 3%.

test_jpeg_fmt=jpg.jpgtest_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

Проверяет, что настройки (экспозиция и усиление) фиксируются на правом кадре для камер FULL и LEVEL_3 . Делает серию снимков, используя последовательные запросы, изменяя параметры запроса захвата между кадрами. Проверяет, имеют ли изображения ожидаемые свойства.

Протестированные API:

Пройдено: изображения [2, 3, 6, 8, 10, 12, 13] имеют увеличенное значение ISO или экспозицию и отображаются с более высокими средними значениями RGB в test_latching_plot_means.png .

test_latching_i=00.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

Тестирует, что обработку устройства можно инвертировать в линейные пиксели. Захватывает последовательность снимков, когда устройство направлено на однородную цель.

Протестированные API:

Успешно: значения R, G, B должны увеличиваться линейно с увеличением чувствительности.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Тестирует блокировку 3A и пакет YUV (с использованием автоматической настройки). Этот тест предназначен для прохождения даже на ограниченных устройствах, у которых нет MANUAL_SENSOR или PER_FRAME_CONTROLS . Тест проверяет согласованность изображения YUV, в то время как проверка частоты кадров выполняется в CTS.

Протестированные API:

Пройдено: снимки выглядят стабильно.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_param_color_correction

Проверяет, что параметры android.colorCorrection.* применяются, если они установлены. Делает снимки с разными значениями преобразования и усиления и проверяет, выглядят ли они соответственно по-разному. Преобразование и коэффициенты усиления выбираются таким образом, чтобы выходной сигнал стал все более красным или синим. Использует линейную карту тонов. Тональное отображение — это метод, используемый при обработке изображений для сопоставления одного набора цветов с другим, чтобы аппроксимировать внешний вид изображений с расширенным динамическим диапазоном в среде с более ограниченным динамическим диапазоном.

Протестированные API:

Пройдено: значения R и B увеличиваются в соответствии с трансформацией.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*Ось X — запросы на захват: 0 = единица, 1 = усиление красного цвета, 2 = усиление синего цвета.

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (усиление R)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (увеличение B)

test_param_flash_mode

Проверяет применение параметра android.flash.mode . Вручную устанавливает экспозицию на темной стороне, чтобы было видно, сработала вспышка или нет, и использует линейную карту тонов. Проверяет центр изображения плитки, чтобы увидеть, создан ли большой градиент, чтобы проверить, сработала ли вспышка.

Протестированные API:

Пройдено: центр изображения плитки имеет большой градиент, что означает, что сработала вспышка.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

Проверяет правильность применения параметра android.noiseReduction.mode , если он установлен. Съемка изображений при слабом освещении камеры. Использует высокое аналоговое усиление, чтобы обеспечить зашумленность захваченного изображения. Захватывает три изображения: отключенное шумоподавление, «быстрое» и «высокое качество». Также захватывает изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии. Чем выше SNR (отношение сигнал/шум), тем лучше качество изображения.

Протестированные API:

Pass: SNR варьируется в зависимости от режима шумоподавления и ведет себя так же, как показано на графике ниже.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: ВЫКЛ, 1: БЫСТРО, 2: HQ, 3: МИН, 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_shading_mode

Проверяет применение параметра android.shading.mode .

Протестированные API:

Пройдено: режимы затенения переключаются, а карты затенения объектива изменяются, как ожидалось.

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

Проверяет применение параметра android.tonemap.mode. Применяет разные кривые карты тонов к каждому каналу R, G, B и проверяет, что выходные изображения изменяются должным образом. Этот тест состоит из двух тестов: test1 и test2.

Протестированные API:

Проходить:

  • test1: Оба изображения имеют линейную карту тонов, но n=1 имеет более крутой градиент. Канал G (зеленый) ярче для изображения n=1.
  • test2: Та же карта тонов, но разная длина. Изображения те же самые.
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

Проверяет повышение чувствительности после RAW. Захватывает набор изображений RAW и YUV с разной чувствительностью, публикует комбинацию повышения чувствительности RAW и проверяет, соответствует ли среднее значение выходного пикселя настройкам запроса.

Протестированные API:

Пройдено: изображения RAW становятся темнее по мере увеличения усиления, в то время как изображения YUV остаются постоянной яркости.

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

Захватывает набор необработанных изображений с возрастающим усилением и измеряет шум. Захватывает только в сыром виде, пакетно.

Протестированные API:

Pass: каждый выстрел шумнее предыдущего, так как усиление увеличивается.

Использует дисперсию центральной ячейки сетки статистики.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Захватывает набор необработанных изображений с увеличением времени экспозиции и измеряет значения пикселей.

Протестированные API:

Пройдено: увеличение ISO (усиления) делает пиксели более чувствительными к свету, поэтому график смещается влево.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ — 1 мс, 10¹ — 10 мс, 10⁻¹ — 0,1 мс)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

Захватывает набор необработанных изображений с повышенной чувствительностью и измеряет шум (дисперсию) в центре 10% изображения. Тестирует, что каждый выстрел шумнее предыдущего.

Протестированные API:

Пас: дисперсия увеличивается с каждым выстрелом.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

Проверяет, что android.noiseReduction.mode применяется для повторной обработки запросов. Захватывает обработанные изображения при слабом освещении камеры. Использует высокое аналоговое усиление, чтобы обеспечить зашумленность захватываемого изображения. Захватывает три обработанных изображения: отключенное шумоподавление, «быстрое» и «высокое качество». Захватывает обработанное изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии.

Протестированные API:

Пройдено: FAST >= OFF, HQ >= FAST, HQ >> OFF

Типичный график зависимости SNR от NR_MODE

Типичный график зависимости SNR от NR_MODE

test_tonemap_sequence

Тестирует последовательность снимков с различными кривыми тональной карты. Делает 3 ручных снимка с линейной картой тонов. Делает 3 ручных снимка с тональной картой по умолчанию. Вычисляет дельту между каждой последовательной парой кадров.

Протестированные API:

Пройдено: есть 3 одинаковых кадра, за которыми следует другой набор из 3 одинаковых кадров.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

Проверяется работоспособность всех заявленных размеров и форматов для захвата изображений. Использует ручной запрос с линейной картой тонов, чтобы YUV и JPEG выглядели одинаково при преобразовании модулем image_processing_utils . Изображения не сохраняются по умолчанию, но их можно сохранить, включив debug_mode .

Протестированные API:

Пройдено: все центры изображений имеют максимальную разницу RMS (среднеквадратичное значение сигнала) в изображениях, преобразованных в RGB, с 3% от изображения YUV с самым высоким разрешением.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Проверяет работоспособность заявленных размеров и форматов для захвата изображений.

Протестированные API:

Пройдено: тест завершается и возвращает запрошенные изображения.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Тестирует захват одного кадра как в формате YUV, так и в формате JPEG. Использует ручной запрос с линейной картой тонов, чтобы YUV и JPEG выглядели одинаково при преобразовании модулем image_processing_utils .

Протестированные API:

Пройдено: изображения YUV и JPEG схожи и имеют разницу менее 1 % RMS (среднеквадратичное значение сигнала).

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Тестируется захват одного кадра как в формате RAW/RAW10/RAW12, так и в формате YUV, если он поддерживается. Использует ручной запрос с линейной картой тонов, поэтому ожидается, что RAW и YUV будут одинаковыми. Сравнивает центральные 10% значений RGB преобразованных в RGB изображений. Журналы android.shading.mode .

Протестированные API:

Пройдено: YUV и необработанные изображения схожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).

test_yuv_plus_raw_shading=1_raw.jpgtest_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

сцена2_а

Scene2_a имеет три лица на сером фоне и нейтральную одежду. Лица подбираются с учетом широкого спектра оттенков кожи. Диаграмма должна иметь правильную ориентацию, чтобы распознавание лиц работало оптимально.

сцена2_а

сцена2_а

test_autoframing

Тестирует поведение автокадрирования устройства камеры. Выполняет большое масштабирование, чтобы ни одно из лиц в сцене не было видно, включает режим автокадрирования, устанавливая AUTOFRAMING в CaptureRequest значение True , и проверяет, можно ли обнаружить все лица в исходной сцене, когда состояние сходится (то есть, когда Для AUTOFRAMING_STATE в CaptureResult установлено значение AUTOFRAMING_STATE_CONVERGED ).

Протестированные API:

Пройдено: обнаружены все три лица.

test_display_p3

Тесты Отображение захвата P3 в формате JPEG с использованием API ColorSpaceProfiles . Проверяет, что захваченный JPEG имеет соответствующий профиль ICC в заголовке и что изображение содержит цвета за пределами гаммы sRGB.

Протестированные API:

Пройден: JPEG содержит профиль Display P3 ICC и цвета за пределами гаммы sRGB.

test_effects

Захватывает кадр для поддерживаемых эффектов камеры и проверяет, правильно ли они сгенерированы. Тест проверяет только эффекты OFF и MONO , но сохраняет изображения для всех поддерживаемых эффектов.

Протестированные API:

Пройдено: захватывается изображение сцены с OFF эффектами и монохромное изображение с эффектами, установленными на MONO .

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

Тестирует различные комбинации выходных форматов.

Протестированные API:

Пас: Все комбинации успешно собраны.

test_num_faces

Тестирует распознавание лиц.

Протестированные API:

Пройти: находит три лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_reprocess_uv_swap

Проверяет, что обработка YUV не меняет местами плоскости U и V. Это обнаруживается путем расчета суммы абсолютных разностей (SAD) между обработанным изображением и необработанным снимком. Если замена выходных плоскостей U и V повторно обработанного захвата приводит к увеличению SAD, то предполагается, что выходные данные имеют правильные плоскости U и V.

Протестированные API:

Пройдено: плоскости U и V не меняются местами.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

сцена2_б

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Захватывает два изображения, используя самые большие распространенные форматы YUV и JPEG с тем же соотношением сторон, что и самый большой формат JPEG, но не превышающее разрешение 1920x1440. Устанавливает jpeg.quality на 100 и фиксирует запрос двойной поверхности. Преобразует оба изображения в массивы RGB и вычисляет трехмерную среднеквадратическую разницу (RMS) между двумя изображениями.

Кроме того, этот тест проверяет, что выходные данные YUV для всех поддерживаемых вариантов использования потока достаточно похожи на YUV со сценарием использования STILL_CAPTURE .

Протестированные API:

Пройдено: изображения YUV и JPEG для варианта использования STILL_CAPTURE имеют разницу менее 3% RMS (среднеквадратичное значение сигнала); Изображения YUV для всех поддерживаемых вариантов использования имеют среднеквадратичное отличие менее 10 % от изображений YUV со сценарием использования STILL_CAPTURE .

сцена2_с

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Тестирует задержку захвата JPEG для класса производительности S, как указано в разделе 2.2.7.2 Камера на CDD.

Пройдено: ДОЛЖНА иметь задержку захвата JPEG камерой 2 < 1000 мс для разрешения 1080p, измеренную с помощью теста производительности камеры CTS в условиях освещения ITS (3000K) для обеих основных камер.

test_camera_launch_perf_class

Тестирует задержку запуска камеры для класса производительности S, как указано в разделе 2.2.7.2 Камера в CDD.

Пройдено: ДОЛЖНА иметь задержку запуска камеры 2 (открытая камера до первого кадра предварительного просмотра) < 600 мс, измеренная с помощью теста производительности камеры CTS в условиях освещения ITS (3000K) для обеих основных камер.

test_default_camera_hdr

Проверяет, что захват камеры по умолчанию имеет режим Ultra HDR для класса производительности 15, как указано в разделе 2.2.7.2 Камера CDD.

Пройдено: захват камеры по умолчанию ДОЛЖЕН быть Ultra HDR для устройства с классом производительности 15.

сцена2_d

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

сцена2_е

test_continous_picture

50 кадров разрешения VGA захватываются с первой установкой запроса захвата android.control.afMode = 4 (CONTINUOUS_PICTURE).

Протестированные API:

Пройдено: система 3A стабилизируется к концу захвата 50 кадров.

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

сцена2_ф

Scene2_f имеет три лица с белым фоном и белую одежду. Лица имеют широкий диапазон оттенков кожи и высокий контраст с фоном.

сцена2_f.png

сцена2_ф

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

сцена3

В сцене 3 используется диаграмма ISO12233, и в большинстве тестов используется метод извлечения диаграммы для поиска диаграммы в сцене. По этой причине большинство сохраненных изображений не имеют границ, как изображения для сцен 1, 2 или 4, а имеют только диаграмму. Для оптимальной работы искателя карт карта должна быть в правильной ориентации.

test_edge_enhancement

Проверяет правильность применения параметра android.edge.mode . Захватывает изображения без повторной обработки для каждого режима границ и возвращает резкость выходного изображения и метаданные результата захвата. Обрабатывает запрос захвата с заданным режимом края, чувствительностью, временем экспозиции, расстоянием фокусировки и параметром выходной поверхности.

Пройдено: режим HQ (2) резче, чем режим OFF (0). Режим FAST (1) резче, чем режим OFF . Режим HQ более резкий или равен режиму FAST .

Протестированные API:

Затронутые параметры камеры:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (быстрый режим)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (режим высокого качества)

test_flip_mirror

Проверяет правильность ориентации изображения в соответствии с разделом CDD 7.5.2 «Фронтальная камера» [C-1-5] .

Зеркальные, перевернутые или повернутые изображения можно отличить по ромбу рядом с центром.

Пройдено: изображение не перевернуто, не зеркально отражено и не повернуто.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_imu_drift

Проверяет, имеет ли инерциальный измерительный блок (IMU) стабильный выходной сигнал в течение 30 секунд, пока устройство неподвижно и выполняет предварительный просмотр в высоком разрешении.

Протестированные API:

Проходить:

  • Дрейф гироскопа за время испытаний составляет менее 0,01 рад.
  • Отклонение показаний гироскопа составляет менее 1E-7 рад 22 /Гц за время испытания.
  • Дрейф вектора вращения составляет менее 0,01 рад за время испытаний.
  • (Пока не обязательно) дрейф гироскопа составляет менее 1 градуса в секунду.

test_imu_drift_gyro_drift.png

test_imu_drift_gyro_drift.png

test_imu_drift_rotation_vector_drift.png

test_imu_drift_rotation_vector_drift.png

test_landscape_to_portrait

Проверяет, правильно ли работает переопределение альбомной ориентации на портретную для датчиков, ориентированных на альбомную ориентацию.

Протестированные API:

Пройдено: тест позволяет найти диаграмму с ожидаемым поворотом (0 градусов, если переопределение альбомной ориентации отключено, 90 градусов, если включено).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Проверяет, правильно ли сообщается о флаге движения объектива. Снимает серию из 24 изображений, причем первые 12 кадров находятся на оптимальном расстоянии фокусировки (согласно 3A), а последние 12 кадров — на минимальном расстоянии фокусировки. В районе 12 кадра объектив движется, из-за чего резкость падает. Резкость со временем стабилизируется по мере перемещения объектива в конечное положение. Флаг перемещения объектива должен быть установлен на всех кадрах, где резкость является промежуточной по отношению к резкости, в первых нескольких кадрах, когда объектив неподвижен на оптимальном фокусном расстоянии, и в последних нескольких кадрах, когда объектив неподвижен на минимальном фокусном расстоянии. Точный кадр, в котором движется объектив, не важен: проверяется, что флаг движения устанавливается при движении объектива.

Протестированные API:

Pass: Флаг перемещения объектива имеет True в кадре с изменением резкости.

Механизмы отказа:

  • lens_moving: True ( android.hardware.camera2.CaptureResult#LENS_STATE = 1) в test_log.DEBUG утверждается только в тех кадрах, где резкость не меняется.
  • Кадры с lens_moving: False ( android.hardware.camera2.CaptureResult#LENS_STATE = 0) в test_log.DEBUG имеют разницу в резкости по сравнению с первыми несколькими кадрами на оптимальном фокусном расстоянии или последними несколькими кадрами на минимальном фокусном расстоянии.

test_reprocess_edge_enhancement

Проверяет, правильно ли работают поддерживаемые методы обработки для улучшения краев. Обрабатывает запрос на захват с заданным пограничным режимом повторной обработки и сравнивает различные режимы для захвата с отключенными пограничными режимами повторной обработки.

Протестированные API:

Пройдено: резкость для различных режимов края правильная. HQ (режим 2) резче, чем OFF (режим 0), и улучшение между различными режимами аналогично.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

сцена4

Сцена 4 состоит из черного круга на белом фоне внутри квадрата. Тесты в сцене 4 могут быть чувствительны к выравниванию, поэтому, начиная с версии 15, вы можете использовать check_alignment.py в каталоге инструментов, чтобы включить проверку тестируемого устройства и выравнивания диаграммы.

сцена4

сцена4

test_30_60fps_preview_fov_match

Тестирует, что видео предварительного просмотра с частотой 30 кадров в секунду и 60 кадров в секунду имеют одинаковое поле зрения. Тест захватывает два видео: одно с частотой 30 кадров в секунду, а другое — с 60 кадрами в секунду. Из каждого видео выбирается репрезентативный кадр и анализируется, чтобы убедиться, что изменения поля зрения в двух видео находятся в пределах спецификаций. Проверяет, что соотношение сторон круга остается постоянным, центр круга остается стабильным, а радиус круга остается постоянным.

Протестированные API:

Пройдено: изображения не растянуты, центр изображений не отличается более чем на 3%, а максимальное изменение соотношения сторон между видео с частотой 30 и 60 кадров в секунду составляет не более 7,5%.

Механизмы отказа:

  • Круг из видео 30 FPS существенно отличается по размеру от видео 60 FPS.
  • Круг на захваченном изображении искажается конвейером обработки.
  • Круг на захваченном изображении обрезается из-за запроса на захват с экстремальным соотношением сторон, уменьшающего высоту или ширину изображения.
  • Круг на захваченном изображении имеет отражение в центре и не кажется полностью заполненным.

test_aspect_ratio_and_crop

Проверяет, не искажаются или неожиданно ли обрезаются изображения в конвейере изображений. Фотографирует круг по всем форматам. Проверяет, что круг не искажен, круг не перемещается из центра изображения и круг не меняет неправильно размер при различных соотношениях сторон или разрешениях.

Протестированные API:

Пройдено: изображения не растягиваются, центры изображений не отличаются более чем на 3%, максимально возможное поле зрения (поле зрения) сохраняется.

Механизмы отказа:

  • Камера не совмещена с кругом, отображаемым на планшете в центре захваченной сцены.
  • Круг на захваченном изображении искажается конвейером обработки.
  • Изображение с более низким разрешением дважды обрезается в конвейере изображений, создавая разное поле зрения между изображениями с высоким и низким разрешением.
  • Круг на захваченном изображении обрезается из-за запроса на захват с экстремальным соотношением сторон, уменьшающего высоту или ширину изображения.
  • Круг на захваченном изображении имеет отражение в центре и не кажется полностью заполненным.

test_multi_camera_alignment

Тестирует параметры калибровки камеры, связанные с позиционированием камеры в многокамерных системах. Используя физические дополнительные камеры с несколькими камерами, можно сделать снимок с помощью одной из физических камер. Находит центр круга. Проецирует центр окружности на мировые координаты для каждой камеры. Сравнивает разницу между центрами окружностей камер в мировых координатах. Перепроецирует мировую координату обратно в пиксельные координаты и сравнивает ее с оригиналами для проверки достоверности. Сравнивает размеры кругов, проверяя, различаются ли фокусные расстояния камер.

Протестированные API:

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

Механизмы отказа:

  • LENS_INTRINSIC_CALIBRATION , LENS_POSE_TRANSLATION или LENS_POSE_ROTATION — это расчетные значения, а не фактические данные калибровки.
  • Система камер не подходит для тестовой установки. Например, тестирование системы широкоугольных и сверхширокоугольных камер с помощью испытательного стенда RFoV. Дополнительную информацию см. в разделе Часто задаваемые вопросы о камере ITS-in-a-box1 .

test_preview_aspect_ratio_and_crop

Подобно тесту test_aspect_ratio_and_crop для снимков, этот тест проверяет поддерживаемые форматы предварительного просмотра, чтобы убедиться, что кадры предварительного просмотра не растянуты или не обрезаны ненадлежащим образом. Проверяет, что соотношение сторон круга не меняется, обрезанные изображения сохраняют круг в центре кадра, а размер круга не меняется для постоянного формата или с разными разрешениями (проверка поля зрения).

Протестированные API:

Пройдено: изображения не растягиваются, центры изображений не отличаются более чем на 3%, максимально возможное поле зрения (поле зрения) сохраняется.

test_preview_stabilization_fov

Проверяет поддерживаемые размеры предварительного просмотра, чтобы убедиться, что поле зрения обрезано правильно. Тест захватывает два видео: одно с ON стабилизацией предварительного просмотра, а другое с OFF стабилизацией предварительного просмотра. Из каждого видео выбирается репрезентативный кадр и анализируется, чтобы убедиться, что изменения поля зрения в двух видео находятся в пределах спецификации.

Протестированные API:

Пройдено: соотношение сторон круга остается примерно постоянным, расположение центра круга остается стабильным, а размер круга изменяется не более чем на 20%.

test_video_aspect_ratio_and_crop

Снимает видео круга внутри квадрата во всех видеоформатах. Извлекает ключевые кадры и проверяет, что соотношение сторон круга не меняется, обрезанные изображения сохраняют круг в центре, а размер круга не меняется для постоянного формата или с другим разрешением (проверка поля зрения).

Протестированные API:

Пройдено: Кадры видео не растянуты, центры кадров не отличаются более чем на 3%, максимально возможное FoV (поле зрения) сохраняется.

сцена5

Для сцены 5 требуется равномерно освещенная серая сцена. Это достигается за счет рассеивателя, расположенного над объективом камеры. Мы рекомендуем следующий рассеиватель: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

Чтобы подготовить сцену, прикрепите рассеиватель перед камерой и направьте камеру на источник освещения мощностью около 2000 люкс. Изображения, снятые для сцены5, требуют рассеянного освещения без видимых особенностей. Ниже приведен пример изображения:

сцена5

захват сцены5

test_lens_shading_and_color_uniformity

Проверяет, что коррекция затенения объектива применяется правильно и цвет монохромной однородной сцены распределяется равномерно. Выполняет этот тест на кадре YUV с автоматическим 3A. Затенение линзы оценивается на основе канала y. Измеряет среднее значение y для каждого указанного блока выборки и определяет годность или неудачу путем сравнения с центральным значением y. Тест на однородность цвета оценивается в пространстве r/g и b/g.

Протестированные API:

Пройдено: для прохождения теста при указанном радиусе изображения отклонение значений r/g и b/g должно быть менее 20 %.

сцена6

Scene6 представляет собой сетку из маленьких кругов с квадратом в одном углу, обозначающим ориентацию. Маленькие кружки необходимы для проверки функции масштабирования в большом диапазоне. Тесты в сцене 6 могут быть чувствительны к выравниванию, поэтому, начиная с версии 15, вы можете использовать check_alignment.py в каталоге инструментов, чтобы включить проверку DUT и выравнивания диаграммы.

сцена6

сцена6

test_in_sensor_zoom

Тестирует работу встроенной в матрицу камеры функции масштабирования, которая позволяет создавать обрезанные изображения в формате RAW.

Если для варианта использования потока установлено значение CROPPED_RAW , тест выполняет два захвата в диапазоне масштабирования: изображение RAW с полным полем зрения (FoV) и обрезанное изображение RAW. Тест преобразует изображения в массивы RGB, уменьшает масштаб полноразмерного обрезанного изображения RAW до размера, сообщаемого SCALER_RAW_CROP_REGION , и вычисляет среднеквадратическую 3D-разность (RMS) между двумя изображениями.

Протестированные API:

Пройдено: среднеквадратическая 3D-разность (RMS) между уменьшенным кадрированным изображением RAW и изображением RAW с полным полем зрения меньше порогового значения, установленного в тесте.

test_zoom

Тестирует поведение масштабирования камеры. Делает снимки во всем диапазоне масштабирования и проверяет, увеличиваются ли круги по мере увеличения камеры. Для каждого формата (YUV, JPEG) один и тот же сеанс захвата камеры используется для сближения 3A и съемки.

Протестированные API:

Пройдено: относительный размер захваченного круга точно соответствует требуемому коэффициенту масштабирования, чтобы обеспечить правильное масштабирование камеры.

test_zoom

test_zoom, чтобы найти контур круга, ближайший к центру.

test_low_latency_zoom

Тестирует поведение масштабирования камеры с малой задержкой. Делает захваты в диапазоне масштабирования с помощью android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) и проверяет, соответствуют ли круги на выходных изображениях коэффициентам масштабирования в метаданных захвата. Один и тот же сеанс захвата камеры используется для объединения 3A и съемки.

Протестированные API:

Пройдено: относительный размер захваченного круга точно соответствует метаданным результата коэффициента масштабирования.

test_preview_video_zoom_match

Проверяет, что во время записи и масштабирования предварительный просмотр видео и вывод видео отображаются и записывают один и тот же результат. Вычисляет размер круга, ближайшего к центру, при различных коэффициентах масштабирования и проверяет, увеличивается ли размер круга при увеличении коэффициента масштабирования.

Протестированные API:

Пройдено: относительный размер захваченного круга соответствует требуемому коэффициенту масштабирования в видео и предварительном просмотре.

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png (до масштабирования)

Preview_640x480_key_frame.png

Preview_640x480_key_frame.png (до масштабирования)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (после масштабирования)

Preview_640x480_key_frame_zoomed.png

Preview_640x480_key_frame.png (после масштабирования)

test_preview_zoom

Проверяет, соответствует ли коэффициент масштабирования каждого кадра предварительного просмотра соответствующим метаданным захвата. Тест берет кадры предварительного просмотра в диапазоне масштабирования и находит контур круга, ближайший к центру. Затем тест проверяет, увеличивается ли выбранный круг и перемещается ли центр круга от центра изображения по мере увеличения камеры.

Протестированные API:

Пройдено: относительный размер выбранного круга соответствует заявленному коэффициенту масштабирования соответствующего результата захвата для всех кадров предварительного просмотра. Относительное расстояние выбранного круга от центра изображения соответствует указанному коэффициенту масштабирования соответствующего результата захвата всех кадров предварительного просмотра.

test_zoom

test_preview_zoom изображения, показывающие выбранный круг, ближайший к центру

test_session_characteristics_zoom

Проверяет диапазон коэффициента масштабирования для всех поддерживаемых конфигураций сеанса, перечисленных в CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION . Если для каждой из этих конфигураций CameraDeviceSetup#isSessionConfigurationSupported возвращает true, тест проверяет, может ли быть достигнут диапазон коэффициента масштабирования, возвращенный в CameraDeviceSetup#getSessionCharacteristics .

Протестированные API:

Пройдено: как минимальный, так и максимальный коэффициент масштабирования могут быть достигнуты для каждой поддерживаемой SessionConfiguration указанной в CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION .

сцена7

Сцена7 представляет собой прямоугольный кадр, разделенный на четыре равных квадранта, каждый из которых заполнен разным цветом. В центре прямоугольника находится таблица со скошенными краями для проверки резкости. Четыре маркера ArUco выровнены по четырем внешним углам прямоугольника, что помогает получить точные координаты основного кадра прямоугольника при различных коэффициентах масштабирования.

сцена7

сцена7

test_multi_camera_switch

Этот тест подтверждает, что во время записи предварительного просмотра с различными коэффициентами масштабирования переключение между сверхшироким (UW) и широким (W) объективами приводит к одинаковым значениям RGB.

В тесте используются различные коэффициенты масштабирования в заранее заданном диапазоне для выполнения записи динамического предварительного просмотра и определения точки, в которой меняется физическая камера. Эта точка отмечает переход от линзы UW к линзе W.

Кадры, снятые в точке пересечения и до нее, анализируются на предмет автоматической экспозиции (AE), автоматического баланса белого (AWB) и автофокусировки (AF).

Проверка автоэкспозиции гарантирует, что изменение яркости находится в пределах ожидаемого диапазона для изображений объективов UW и W. Проверка AWB проверяет, что соотношения R/G и B/G находятся в пределах пороговых значений для изображений объективов UW и W. Проверка автофокусировки оценивает значение оценки резкости на основе средней величины градиента между изображениями объективов UW и W.

Протестированные API:

Пройдено: чтобы тест был пройден, все проверки AE, AWB и AF должны быть пройдены. Ниже приведены критерии для каждой проверки:

  • Проверка автоэкспозиции: изменение яркости между изображениями объективов UW и W должно составлять менее 0,5%.
  • Проверка AWB: разница между значениями R/G и B/G для изображений объективов UW и W должна быть менее 0,5%.
  • Проверка автофокусировки: разница в резкости между изображениями объективов UW и W должна составлять менее 2%.

сцена8

Сцена8 представляет собой прямоугольный кадр, разделенный на четыре равные области, каждая из которых содержит портрет, снятый с разной экспозицией или наложенный разным цветовым оттенком (синий оттенок, увеличенная экспозиция, уменьшенная экспозиция, желтый оттенок). Четыре маркера ArUco выравниваются по четырем внешним углам прямоугольника для получения точных координат основного кадра прямоугольника.

сцена8

сцена8

test_ae_awb_regions

Проверяет, что значения RGB и яркости различаются при предварительной записи в разных регионах автоматической экспозиции (AE) и автоматического баланса белого (AWB).

Тест записывает восьмисекундную запись предварительного просмотра, выполняя измерения AE и AWB в каждом квадранте в течение двух секунд каждый. Затем тест извлекает кадр из записи предварительного просмотра каждого региона и использует извлеченные кадры для выполнения следующих проверок AE и AWB:

  • Проверка автоэкспозиции: проверяет, что кадр, замеряющий область с уменьшенной экспозицией, имеет увеличенное значение яркости более чем на 1 %, чем кадр, замеряющий область с увеличенной экспозицией. Это подтверждает, что изображения становятся ярче при замере темной области.
  • Проверка AWB: проверяет, что соотношение красного и синего (средних значений RGB изображения) в кадре с синей областью замера более чем на 2 % выше, чем в кадре с желтой областью замера. Это подтверждает, что изображения имеют сбалансированное значение RGB при измерении желтой (теплой) или синей (холодной) области.

Протестированные API:

Пройдено: обе проверки AE и AWB проходят успешно.

сцена9

Scene9 состоит из тысяч кругов произвольного размера и цвета, что позволяет создать сцену с очень низкой повторяемостью, что затрудняет работу алгоритмов сжатия JPEG.

сцена9

сцена9

test_jpeg_high_entropy

Проверяет, что сжатие JPEG камеры работает на сцене 9 с высокой энтропией и коэффициентом качества JPEG, установленным на 100%. Коэффициент масштабирования увеличивается, чтобы сцена, отображаемая на планшете, заполнила поле зрения камеры.

Протестированные API:

Пройдено: файл JPEG правильно сжимается, записывается и считывается с диска.

test_jpeg_quality

Проверяет качество сжатия JPEG камеры. Шаг качества JPEG через android.jpeg.quality и обеспечение правильного изменения таблиц квантования.

Протестированные API:

Пройдено: матрица квантования уменьшается с увеличением качества. (Матрица представляет коэффициент деления.)

test_jpeg_quality

Средние значения яркости/цветности матрицы DQT задней камеры Pixel 4 в сравнении с качеством JPEG

test_jpeg_quality не удалось

Пример неудачного теста

Обратите внимание, что для изображений очень низкого качества (jpeg.quality < 50) сжатие в матрице квантования не увеличивается.

сцена_видео

Сцена scene_video — это видеосцена. Он состоит из четырех кругов разного цвета, движущихся вперед и назад с разной частотой кадров на белом фоне.

сцена_видео

test_preview_frame_drop

Проверяет, что запрошенная частота кадров предварительного просмотра поддерживается в динамической сцене. Этот тест выполняется на всех камерах, на которых установлены сторонние приложения.

Протестированные API:

Пройдено: частота кадров предварительного просмотра находится на максимальном уровне запрошенного диапазона частоты кадров, а среднее отклонение между последовательными кадрами меньше относительного допуска, установленного в тесте.

Scene_extensions

Тесты scene_extensions предназначены для расширений камеры и должны использовать Camera ITS-in-a-Box , поскольку они требуют точного контроля над средой тестирования. Кроме того, необходимо контролировать все утечки света. Для этого может потребоваться накрыть испытательный стенд, тестируемое устройство и планшет тканью, а также устранить утечку света через передний экран тестируемого устройства.

сцена_hdr

Сцена scene_hdr состоит из портрета слева и низкоконтрастного QR-кода справа.

сцена_hdr

сцена_hdr

test_hdr_extension

Тестирует расширение HDR . Делает снимки с включенным расширением и без него и проверяет, делает ли расширение более заметным QR-код.

Протестированные API:

Пройдено: расширение HDR уменьшает количество изменений контрастности, необходимых для обнаружения QR-кода, или уменьшает градиент QR-кода.

Scene_low_light

Сцена scene_low_light состоит из сетки квадратов различных оттенков серого на черном фоне, причем сетка квадратов ограничена красным контуром. Квадраты расположены в соответствии с ориентацией кривой Гильберта.

Scene_low_light

Scene_low_light

test_night_extension

Тестирует расширение Night . Делает снимки с включенным расширением и выполняет следующее:

  • Обнаруживает наличие 20 квадратов
  • Вычисляет яркость, ограниченную каждым квадратом
  • Вычисляет среднее значение яркости первых 6 квадратов в соответствии с ориентацией сетки кривой Гильберта.
  • Вычисляет разницу в значении яркости последовательных квадратов (например,квадрат2–квадрат1) до квадратов 5 и 6 (квадрат6–квадрат5) и находит среднее из пяти вычисленных разностей.

Протестированные API:

Пройдено: среднее значение яркости первых 6 квадратов должно быть не менее 85, а средняя разница в значении яркости последовательных квадратов до квадратов 5 и 6 должна быть не менее 17.

Следующий график яркости показывает, как выглядит пройденный результат теста.

Scene_low_light_night_pass

test_low_light_boost_extension

Тестирует режим AE Low Light Boost . Если Камера2 поддерживает режим усиления автоэкспозиции при слабом освещении, этот тест выполняется для Камеры2. Если расширение камеры ночного режима поддерживается и расширение поддерживает режим усиления AE при слабом освещении, то этот тест также выполняется для расширения камеры ночного режима. Этот тест устанавливает режим автоэкспозиции на усиление при слабом освещении, берет кадр из предварительного просмотра и выполняет следующее:

  • Обнаруживает наличие 20 ящиков
  • Вычисляет яркость, ограниченную каждым блоком
  • Вычисляет среднее значение яркости первых 6 квадратов в соответствии с ориентацией сетки кривой Гильберта.
  • Вычисляет разницу в значении яркости последовательных квадратов (например,квадрат2–квадрат1) до квадратов 5 и 6 (квадрат6–квадрат5) и находит среднее из пяти вычисленных разностей.

Протестированные API:

Пройдено: среднее значение яркости первых 6 квадратов должно быть не менее 70, а средняя разница в значении яркости последовательных квадратов до квадратов 5 и 6 должна быть не менее 17.

Scene_flash

Тесты scene_flash требуют наличия темной сцены в блоке слияния датчиков.

test_auto_flash

Проверяет, что автоматическая вспышка срабатывает в темной сцене для фронтальных и задних камер. Для фронтальных камер автоматическая вспышка использует экран для освещения сцены, а не физическую вспышку. Тест проверяет срабатывание автоматической вспышки, проверяя, что центр мозаичного изображения становится ярче при включенной автоматической вспышке. Чтобы активировать автоматическую вспышку, освещение на испытательном стенде должно быть выключено. Свет можно выключить автоматически с помощью контроллера Arduino. Для корректной работы теста сцена должна быть полностью темной. Перед тестированием на устройстве необходимо установить приложение Jetpack Camera ( JCA ). Автоматическая вспышка для камер на задней панели зависит от состояния автоэкспозиции, но автоматическая вспышка для фронтальных камер не зависит от автоэкспозиции и срабатывает всегда.

Протестированные API:

Пройдено: центр мозаичного изображения с включенной автоматической вспышкой ярче исходного изображения сцены для всех камер.

test_flash_strength

Тестирует, что контроль силы вспышки в режиме SINGLE реализован корректно.

Проверяет, что если устройство поддерживает управление мощностью вспышки во время использования камеры в режиме SINGLE , мощность вспышки изменяется в зависимости от запрошенных уровней мощности. Проверяет, что управление силой вспышки работает с разными AE_MODES . Например, если режим автоматической экспозиции ON или OFF , уровень мощности вспышки влияет на яркость, а если режим ON_AUTO_FLASH , уровень мощности вспышки не влияет на яркость. Для проведения испытания освещение на испытательном стенде должно быть выключено. Свет можно выключить автоматически с помощью контроллера Arduino. Для корректной работы теста сцена должна быть полностью темной.

Протестированные API:

Проходить:

Когда режим автоматической экспозиции ON или OFF , яркость участков изображения увеличивается по мере увеличения уровня мощности вспышки от отсутствия вспышки до FLASH_SINGLE_STRENGTH_MAX_LEVEL . Когда режим автоматической экспозиции установлен на ON_AUTO_FLASH , разница в яркости участков изображения находится в пределах допуска, поскольку уровень мощности вспышки увеличивается от отсутствия вспышки до FLASH_SINGLE_STRENGTH_MAX_LEVEL .

test_led_snapshot

Проверяет, что снимки светодиодов не насыщают и не окрашивают изображение.

В этом тесте к блоку датчиков добавляется контроллер освещения для управления освещением. Когда индикаторы OFF , тест выполняет съемку с режимом AUTO_FLASH установленным на ON . Во время этого захвата тест запускает последовательность предварительного захвата с триггером aePrecapture , установленным на START , и устанавливает намерение захвата на Preview чтобы выполнить захват со вспышкой.

Поскольку на снимке имеется характерная горячая точка из-за вспышки, тест вычисляет среднее значение изображения со вспышкой для всего снимка и проверяет, находится ли это значение в диапазоне (68, 102). Чтобы проверить, достаточно ли сбалансировано белое изображение, тест вычисляет соотношения красного/зеленого и синего/зеленого и проверяет, находятся ли эти соотношения в пределах 0,95 и 1,05.

Протестированные API:

Пройдено: Соотношения R/G и B/G находятся в пределах 0,95 и 1,05. Среднее значение флэш-изображения находится в диапазоне (68, 102).

test_preview_min_frame_rate

Проверяет правильность снижения частоты кадров предварительного просмотра в темной сцене. Чтобы этот тест работал правильно, освещение на испытательном стенде должно быть выключено контроллером или вручную оператором-испытателем.

Протестированные API:

Пройдено: частота кадров предварительного просмотра находится на минимальном уровне запрошенного диапазона частоты кадров, а разница между кадрами меньше абсолютного допуска, установленного в тесте.

test_torch_strength

Тестирует, что контроль мощности вспышки в режиме TORCH реализован корректно.

Проверяет, что если устройство поддерживает управление мощностью вспышки во время использования камеры в режиме TORCH , мощность фонаря изменяется в зависимости от запрошенных уровней мощности. Проверяет, что управление силой вспышки работает с разными AE_MODES . Например, если режим автоматической экспозиции ON или OFF , уровень мощности вспышки влияет на яркость, а если режим ON_AUTO_FLASH , уровень мощности вспышки не влияет на яркость. Проверяет, что мощность факела остается неизменной на протяжении всей серии, имитируя сеанс видеозахвата. Для проведения испытания освещение на испытательном стенде должно быть выключено. Свет можно выключить автоматически с помощью контроллера Arduino. Для корректной работы теста сцена должна быть полностью темной.

Протестированные API:

Проходить:

Когда режим автоматической экспозиции ON или OFF , яркость фрагментов серийной съемки увеличивается по мере увеличения уровня мощности вспышки от отсутствия вспышки до FLASH_TORCH_STRENGTH_MAX_LEVEL . Когда режим автоматической экспозиции установлен на ON_AUTO_FLASH , разница в яркости участков серийной съемки находится в пределах допуска, поскольку уровень мощности вспышки увеличивается от отсутствия вспышки до FLASH_TORCH_STRENGTH_MAX_LEVEL .

датчик_fusion

Тесты слияния датчиков требуют определенного движения телефона перед шахматной доской и маркерами ArUco. Для получения оптимальных результатов убедитесь, что испытательная таблица установлена ​​ровно. Неплоские диаграммы влияют на расчеты вращения во многих тестах. Таблица должна заполнить заднюю часть коробки для слияния датчиков и распечатать ее размером 17 x 17 дюймов (43 x 43 см). Тесты sensor_fusion можно автоматизировать с помощью Sensor Fusion Box .

Схема объединения датчиков

Схема объединения датчиков

Схема объединения датчиков в Rig

Таблица слияния датчиков, которая находится на задней стороне блока слияния датчиков.

test_lens_intrinsic_калибровка

Проверяет, что оптический центр объектива изменяется при его перемещении из-за оптической стабилизации изображения (OIS). Если поддерживаются собственные образцы объектива, проверяется изменение оптического центра собственных образцов объектива при движении объектива из-за оптической стабилизации изображения (OIS).

Протестированные API:

Пройдено: оптический центр линзы изменяется на один пиксель или более. Если поддерживаются собственные образцы линзы, оптические центры собственных образцов линзы изменяются на один пиксель или более.

test_lens_intrinsic_калибровка_example.png

Пример графика test_lens_intrinsic_calibration , показывающего изменения главных точек в пикселях для каждого кадра

test_multi_camera_frame_sync

Тесты показывают, что временные метки кадров, снятых логической камерой, находятся в пределах 10 мс путем вычисления углов квадратов на шахматной доске для определения временной метки.

Протестированные API:

Успешно: Угол между изображениями с каждой камеры существенно не меняется при повороте телефона.

test_preview_distortion

Проверяет корректировку искажений в каждом кадре предварительного просмотра, снятом при различных уровнях масштабирования. Для каждого кадра предварительного просмотра тест вычисляет идеальные точки на основе внутренних и внешних характеристик камеры. На изображении в качестве примера идеальные точки показаны зеленым цветом; фактические точки показаны красным. Ошибка искажения рассчитывается на основе среднеквадратичного (RMS) расстояния в пикселях между фактическими и идеальными точками. Зеленые и красные блики на изображении используются для визуального обнаружения области ошибки искажения.

test_preview_distortion_example.jpg

Изображение шахматной доски с идеальными точками зеленого цвета и фактическими точками красными.

Протестированные API:

Пройдено: нормализованная ошибка искажения каждого кадра предварительного просмотра меньше порогового значения, установленного в тесте.

test_preview_stabilization

Тесты показали, что стабилизированное предварительное видео вращается меньше, чем гироскоп.

Протестированные API:

Пройдено: максимальный угол поворота кадров составляет менее 70 % от угла поворота гироскопа.

Ниже приведены примеры видео со стабилизацией и без нее.

  • Пример видео со стабилизацией

  • Пример видео без стабилизации

test_sensor_fusion

Проверяет разницу временных меток между камерой и гироскопом для приложений AR и VR. Телефон поворачивается на 90 градусов 10 раз в шахматном порядке. Движение составляет около 2 с туда и обратно. Этот тест пропускается, если гироскоп не включен или если параметр REALTIME источника меток времени не включен.

Тест test_sensor_fusion генерирует несколько графиков. Два наиболее важных графика для отладки:

  • test_sensor_fusion_gyro_events : показывает события гироскопа телефона во время теста. Движение в направлениях x и y означает, что телефон ненадежно закреплен на монтажной пластине, что снижает вероятность прохождения теста. Количество тактов в графике зависит от скорости записи для сохранения кадров.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : показывает выравнивание событий гироскопа и камеры. Этот график должен отображать совпадающее движение камеры и гироскопа с точностью +/- 1 мс.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

Протестированные API:

Пройдено: смещение временных меток камеры и гироскопа составляет менее 1 мс согласно разделу CDD 7.3.9 «Высокоточные датчики» [C-2-14] .

Механизмы отказа:

  • Ошибка смещения: смещение камеры-гироскопа откалибровано неправильно с точностью до +/- 1 мс.
  • Пропадание кадров: конвейер недостаточно быстр, чтобы последовательно захватывать 200 кадров.
  • Ошибки сокета: adb не может надежно подключиться к тестируемому устройству достаточно долго для выполнения теста.
  • Диаграмма установлена ​​не ровно. График test_sensor_fusion_plot_rotations содержит кадры, в которых вращение гироскопа и камеры значительно различается по мере того, как камера вращается в неплоских частях диаграммы.
  • Камера установлена ​​не ровно. График test_sensor_fusion_gyro_events показывает движение в плоскостях X и Y. Эта неисправность чаще встречается у фронтальных камер, поскольку задняя камера часто имеет выступ на остальной части корпуса телефона, что создает наклон при установке задней части телефона на монтажную пластину.

test_video_stabilization

Тесты показали, что стабилизированное видео вращается меньше, чем гироскоп.

Протестированные API:

Пройдено: максимальный угол поворота кадров составляет менее 60 % от угла поворота гироскопа.

Ниже приведены примеры видео со стабилизацией и без нее.

  • Пример видео со стабилизацией

  • Пример видео без стабилизации

Feature_combination

Тесты feature_combination проверяют правильность работы функций при одновременном включении нескольких функций камеры. В этих тестах используется то же изображение шахматной доски, что и в сцене слияния датчиков .

test_feature_combination

Тестируется все комбинации различных комбинаций потоков, стабилизация предварительного просмотра, целевой диапазон FPS, 10-битное HDR-видео и Ultra HDR, которые поддерживаются устройством камеры. Этот тест требует очень много памяти, поэтому мы рекомендуем использовать хост с объемом оперативной памяти не менее 128 ГБ.

Для Android 15 и более поздних версий файл конфигурации включает поле log_feature_combo_support , для которого по умолчанию установлено значение False . Если для поля log_feature_combo_support установлено значение True , тест запускает все комбинации поддерживаемых функций и записывает результаты в файл прототипа, не проваливая тест. Для тестирования на соответствие поле log_feature_combo_support должно быть установлено в False .

Протестированные API:

Пройдено: для каждой поддерживаемой комбинации функций:

  • Поток предварительного просмотра стабилизируется, если стабилизация предварительного просмотра включена.
  • Частота кадров предварительного просмотра находится в пределах настроенного AE_TARGET_FPS_RANGE .
  • Цветовое пространство записанного потока предварительного просмотра соответствует установленному.
  • Захват Ultra HDR имеет действительную карту усиления.