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

На этой странице представлен полный список тестов Camera Image Test Suite (ITS), который является частью Android Compatibility Test Suite (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_tele : переключение телеобъектива
  • scene_flash : Автовспышка, минимальная частота кадров
  • scene_video : Пропуски кадров
  • sensor_fusion : смещение синхронизации камеры/гироскопа
  • feature_combination : Комбинации функций
  • scene_ip : Соответствие изображения между приложением камеры по умолчанию и JCA

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

сцена0

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

тест_джиттер

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

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

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

test_jitter_plot.png

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

тестовые_метаданные

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

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

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

test_request_capture_match

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

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

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

тестовые_события_датчика

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

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

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

тестовый_сплошной_цвет_тестовый_шаблон

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

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

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

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

тестовый_тестовый_шаблон

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

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

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

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

тестовые_тестовые_шаблоны_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:

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

ограничение_вибрации_теста

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

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

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

сцена1_1

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

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

сцена1

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

test_ae_precapture_trigger

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

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

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

тест_авто_против_ручного

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

Протестированные 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

тест_черный_белый

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

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

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

тест_черный_белый_черныйтест_черный_белый_черный
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_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

тестовые_регионы_урожая

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

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

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

test_ev_compensation

Тесты, в которых применяется компенсация значения экспозиции (EV). Тест состоит из базовой и расширенной частей.

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

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

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

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

test_ev_compensation_basic

test_ev_compensation_basic.png

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

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.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_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

тест_линейности

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

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

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

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Тесты 3A lock и YUV burst (с использованием автоматической настройки). Этот тест разработан для прохождения даже на ограниченных устройствах, которые не имеют 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

сцена1_2

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

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_шум_снижения

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

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

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

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_шум_снижение_низкого_усиления

test_param_noise_reduction_low_gain.jpg

режим_затенения_тестовых_параметров

Проверяет, применяется ли параметр 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_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_reprocess_шум_снижения

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

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

Проход: БЫСТРО >= ВЫКЛ, HQ >= БЫСТРО, HQ >> ВЫКЛ

Типичный график 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

тест_yuv_plus_dng

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

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

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

тест_yuv_plus_dng

test_yuv_plus_dng.jpg

сцена1_3

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

test_capture_result

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

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

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

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_dng_noise_model

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

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

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

test_dng_noise_model_plog

test_dng_noise_model_plog.png

тест_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_raw_burst_sensitivity

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

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

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

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

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_sensitivity

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

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

Пас: Разница увеличивается с каждым броском.

тест_сырой_чувствительности_дисперсия

test_raw_sensitivity_variance.png

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 и RAW схожи и имеют разницу менее 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

приоритет_чувствительности_теста

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

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

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

Критерии пропуска теста

Тест test_sensitivity_priority.py пропускается, если выполняется любой из следующих критериев:

приоритет_времени_экспозиции_теста

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

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

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

Критерии пропуска теста

Тест test_exposure_time_priority пропускается, если выполняется любой из следующих критериев:

сцена2_а

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

сцена2_а

сцена2_а

test_autoframeing

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

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

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

тест_дисплей_p3

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

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

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

тестовые_эффекты

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

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

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

тестовые_эффекты_МОНО

тестовые_эффекты_МОНО.jpg

test_exposure_keys_consistent

В этом тесте сравнивается средняя яркость захвата с включенной АЭ и захвата с выключенной АЭ, в котором вручную применяются параметры экспозиции (чувствительность, время экспозиции, длительность кадра, повышение чувствительности после обработки), полученные в CaptureResult захвата с включенной АЭ.

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

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

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_preview_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% RMS от изображений YUV с вариантом использования STILL_CAPTURE .

сцена2_c

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

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

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

test_default_camera_hdr

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

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

сцена2_д

test_preview_num_faces

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

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

Пройдено: Находит 3 лица с ориентирами в ограничивающих их рамках.

сцена2_е

тест_непрерывный_рисунок

Захватывается 50 кадров с разрешением VGA, при этом запрос на захват сначала устанавливает android.control.afMode = 4 (CONTINUOUS_PICTURE).

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

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

test_num_faces

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

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

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

сцена2_ф

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

сцена2_f.png

сцена2_ф

test_preview_num_faces

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

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

Пройдено: Находит 3 лица с ориентирами в ограничивающих их рамках.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

сцена2_г

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

сцена2_g.png

сцена2_г

test_preview_num_faces

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

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

Пропуск: находит 3 лица с достопримечательностями лица в боксах с ограничивающими лицами.

test_preview_num_faces

test_preview_num_faces

сцена3

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

test_edge_enhancement

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

Пропустите: режим HQ (2) острее, чем режим OFF (0). FAST режим (1) острее, чем OFF режимом. HQ Mode Sharper или равен 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 кадрами на оптимальном расстоянии фокусировки (как найдено 3А) и последние 12 кадров на минимальном расстоянии фокуса. Вокруг кадра 12 линза движется, вызывая резкость падать. Резкость в конечном итоге стабилизируется, когда объектив перемещается в конечную позицию. Флаг движения линз должен быть утвержден во всех кадрах, где резкость является промежуточной до резкости в первых нескольких кадрах с объективом, стационарным на оптимальном фокусном расстоянии, и в последних нескольких кадрах, где объектив является стационарным на минимальном фокусном расстоянии. Точная кадра, которую движутся линзы, не важна: то, что проверяется, так это то, что флаг движения утверждается, когда объектив движется.

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

Пропуск: флаг движения объектива 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

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

сцена4

сцена4

test_30_60fps_preview_fov_match

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

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

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

Механизмы провал:

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

test_aspect_ratio_and_crop

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

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

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

Механизмы провал:

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

test_multi_camera_alenment

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

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

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

Механизмы провал:

  • LENS_INTRINSIC_CALIBRATION , LENS_POSE_TRANSLATION или LENS_POSE_ROTATION - это проектные значения, а не фактические данные калибровки.
  • Система камеры не подходит для тестовой настройки. Например, тестирование широкой и сверхуровневой системы камеры с помощью испытательной установки RFOV. Для получения дополнительной информации см. Camera ITS IT-в-коробку FAQ1 .

test_preview_aspect_ratio_and_crop

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

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

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

test_preview_stabilization_fov

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

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

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

test_video_aspect_ratio_and_crop

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

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

Pass: видео кадры не растянуты, центр кадров не отличается более чем на 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 с Auto 3A. Затенение линз оценивается на основе канала Y. Измеряют среднее значение y для каждого указанного блока выборки и определяет проход или сбой, сравнивая с центром y. Тест на однородность цвета оценивается в пространстве R/G и B/G.

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

Пропуск: при указанном радиусе изображения дисперсия значения R/G и B/G должна составлять менее 20% для прохождения теста.

Сцена6

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

Сцена6

Сцена6

test_in_sensor_zoom

Проверяет поведение функции Zoom Zoom in-Camer, которая создает обрезанные необработанные изображения.

С вариантом использования потока, установленным в CROPPED_RAW , тест берет два захвата над диапазоном масштабирования, полное полевое изображение (FOV) и обрезанное сырое изображение. Тест преобразует изображения в массивы RGB, снижает полноразмерное обрезанное сырое изображение в размер, сообщаемый SCALER_RAW_CROP_REGION , и вычисляет разницу средней квадратной (среднеквадратичной) трехмерного корня (среднеквадратичных) между двумя изображениями.

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

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

test_zoom

Проверяет поведение камеры от ультравидного объектива до широкого объектива. Принимает захваты через диапазон увеличения и проверяет, становятся ли маркеры ARUCO больше по мере увеличения камеры. Тест также проверяет, изменяется ли положение центрального маркера предсказуемо за каждый захват. Расстояние от центра центрального маркера до центра изображений может либо меняться с постоянной скоростью по отношению к соотношению Zoom до физического переключателя камеры, либо он может монотонно меняться в направлении места одного и того же маркера после физического переключателя камеры. Приложение JetPack Camera ( JCA ) должно быть установлено на устройстве перед тестированием.

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

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

test_zoom

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

test_low_latency_zoom

Проверяет камеру низкого уровня задержки. Принимает захваты через диапазон Zoom с android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) и проверяет, соответствуют ли маркеры в выходных изображениях соотношениях Zoom в метаданных захвата. Тот же сеанс захвата камеры используется для сходимости 3A и захвата.

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

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

test_preview_video_zoom_match

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

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

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

HD_1280x720_key_frame.png

HD_1280x720_key_frame.png (до увеличения Zoom)

preview_1280x720_key_frame.png

preview_1280x720_key_frame.png (до Zoom)

Hd_1280x720_key_frame_zoomed.png

HD_1280x720_key_frame.png (после Zoom)

preview_1280x720_key_frame_zoomed.png

preview_1280x720_key_frame.png (после Zoom)

test_preview_zoom

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

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

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

test_zoom

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

test_session_characteristics_zoom

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

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

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

Сцена7

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

Сцена7

Сцена7

test_multi_camera_switch

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

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

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

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

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

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

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

  • Проверка AE: изменение LUMA (значение y) между изображениями UW и W Lens должно составлять менее 4% для всех цветовых патчей, если устройство поддерживает как ae_regions , так и awb_regions . Если поддерживается только ae_regions , то только серо -цветовые значения должны соответствовать критериям.
  • Проверка AWB: разница между значениями R/G и B/G для изображений UW и W Lens должна составлять менее 3% для патча серого цвета и должно составлять менее 10% для других цветных патчей, если устройство поддерживает как ae_regions так и awb_regions .
  • Проверка AF: резкость изображения для захвата линзы должна быть выше резкости с захватом UW.

test_multi_camera_switch_gray_uw_y

Серый пятно, взятое с UW Lens

test_multi_camera_switch_gray_w_y

Серый пятно, взятый с W Lens

Сцена8

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

Сцена8

Сцена8

test_ae_awb_regions

Проверки, что значения RGB и LUMA различаются, когда просмотр записи в различных регионах Auto Expusi (AE) и Auto Balance Balance (AWB).

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

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

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

Проход: AE и AWB проверяют оба прохода.

test_ae_awb_regions_dark_region

Область темного измерения рамки с повышенной экспозицией

test_ae_awb_regions_light_region

Более легкая область для измерения рамки с уменьшением воздействия

Механизмы провал:

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

    Аруко маркеры смещения

test_color_correction_mode_cct

Тесты COLOR_CORRECTION_MODE по различным температурам цветов и оттенки, проверка изменений в соотношении RGB по сравнению с сценой захвата, Scene8 .

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

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

Тестовые критерии пропуска

Тест test_color_correction_mode_cct пропускается, если выполняется какой -либо из следующих критериев:

Сцена9

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

Сцена9

Сцена9

test_jpeg_high_entropy

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

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

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

test_jpeg_quality

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

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

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

test_jpeg_quality

Pixel 4 Задняя камера Luma/Chroma DQT Матрица Средняя по сравнению с качеством JPEG

test_jpeg_quality не удалось

Неудачный тестовый пример

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

Scene_video

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

Scene_video

test_preview_frame_drop

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

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

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

Scene_extensions

Тесты scene_extensions предназначены для расширений камеры и должны использовать камеру ITS в коробке , поскольку они требуют точного управления средой тестирования. Кроме того, вся утечка света должна контролироваться. Это может потребовать покрытия испытательной установки, DUT и планшета капельной тканью, а также устранение утечки света с переднего экрана DUT.

Scene_hdr

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

Scene_hdr

Scene_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

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

  • Обнаруживает наличие 20 квадратов
  • Вычисляет люму, ограниченную каждым квадратом
  • Вычисляет среднее значение LUMA первых 6 квадратов в соответствии с ориентацией сетки Hilbert Curve
  • Вычисляет разницу в значении LUMA последовательных квадратов (например, Square2 - Square1) до квадратов 5 и 6 (Square6 - Square5), и находит среднее из пяти вычисленных различий.

Для устройств, работающих на Android 16 или выше, запрос на захват включает измеренную область, соответствующую прямоугольнику, ограничивающую сетку квадратов. Это дополнение меняет критерии порогового прохода.

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

Проходить:

  • Для устройств, работающих на Android 16 или выше, среднее значение LUMA первых 6 квадратов должно быть не менее 80, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 18,75.
  • Для устройств, работающих на 15 и ниже, среднее значение LUMA первых 6 квадратов должно составлять не менее 85, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 17.

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

SCHEEE_LOW_LIGHT_INATE_PASS

test_low_light_boost_extension

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

  • Обнаруживает наличие 20 коробок
  • Вычисляет Luma, ограниченную каждой коробкой
  • Вычисляет среднее значение LUMA первых 6 квадратов в соответствии с ориентацией сетки Hilbert Curve
  • Вычисляет разницу в значении LUMA последовательных квадратов (например, Square2 - Square1) до квадратов 5 и 6 (Square6 - Square5), и находит среднее из пяти вычисленных различий.

Для устройств, работающих на Android 16 или выше, запрос на захват включает измеренную область, соответствующую прямоугольнику, ограничивающую сетку квадратов. Это дополнение меняет критерии порогового прохода.

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

Проходить:

  • Для устройств, работающих на Android 16 или выше, среднее значение LUMA первых 6 квадратов должно составлять не менее 54, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 17.

  • Для устройств, работающих на 15 и ниже, среднее значение LUMA первых 6 квадратов должно составлять не менее 70, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 18.

Scene_tele

Ключевым требованием для тестов scene_tele является то, что расстояние диаграммы должно быть как минимум минимальным расстоянием фокусировки телеобъектива. Поскольку это минимальное расстояние фокуса может отличаться между устройствами, вы должны настроить свою настройку в соответствии с конкретной телеобъективной камерой.

Установка Scene_tele на основе расстояния фокусировки широкой и телевизионной камеры

Для получения дополнительной информации о настройке тестового оборудования см. Настройку расширения Tele .

scene6_tele

Сцена scene6_tele состоит из сетки маркеров Aruco на белом фоне.

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

remove_phone_mount

Отключите испытательную установку WFOV от расширения и снимите крепление телефона.

remove_front_plate

Снимите переднюю пластину.

test_zoom_tele

Проверяет поведение камеры от широкого объектива до телеобъектива. Тест идентичен test_zoom , но проверяет поведение камеры от широкого объектива до телеобъектива.

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

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

test_preview_zoom_tele

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

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

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

сцена7_теле

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

test_multi_camera_switch_tele

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

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

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

Проверка AE гарантирует, что изменение LUMA находится в пределах ожидаемого диапазона как для изображений W, так и для Tele Lens. Проверка AWB проверяет, что отношения R/G и B/G находятся в пределах порогового значения как для изображений W, так и для Tele Lins. Проверка AF оценивает значение оценки резкости на основе средней величины градиента между изображениями W и телезмектором.

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

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

  • Проверка AE: изменение LUMA между изображениями W и Tele Lins должно составлять менее 4%.
  • Проверка AWB: в цветовом пространстве лаборатории дельта C между R/G и B/G для широкого и телефона не может превышать 10.
  • Проверка AF: резкость изображения телефона должна быть выше, чем у линзы W.

Scene_flash

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

test_auto_flash

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

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

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

test_flash_strength

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

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

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

Проходить:

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

test_led_snapshot

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

Because the capture has a distinctive hotspot due to flash, the test computes the flash image mean of the entire capture and verifies whether the value is within the (68, 102) range. To check if the image is reasonably white-balanced, the test calculates the R/G and B/G ratios and verifies whether the ratios are within 0.95 and 1.05.

APIs tested:

Pass: The R/G and B/G ratios are within 0.95 and 1.05. The flash image mean is within the (68, 102) range.

test_night_mode_indicator

Tests the functionality of the night mode indicator, a feature that indicates whether the camera is operating in low light conditions and will benefit from a Night Mode Camera Extension still capture. This feature is only available on devices that support Night Mode Camera Extensions.

This test checks that the night mode indicator correctly reflects the lighting conditions during camera preview. The test performs the following steps:

  1. Initialization: The test initializes an ItsSession and retrieves camera properties. It also establishes a connection with the lighting controller.
  2. Skip Conditions: The test is skipped if the device doesn't support the required API level or the night mode indicator feature.
  3. Camera2 Session:
    • The test starts a preview capture session using a Camera2 session.
    • The light is turned on and a preview frame is captured.
    • The test verifies that the night mode indicator is in the OFF state.
    • The light is turned off and a preview frame is captured.
    • The test verifies that the night mode indicator is in the ON state.
  4. Camera extension session:
    • The test repeats the same procedure as for the Camera2 session, but using a CameraExtension session with the EXTENSION_NIGHT extension.
  5. Cleanup: The test closes ItsSession and releases the lighting controller.

APIs tested:

Проходить:

  • When the light is on, the night mode indicator should be in the OFF state.
  • When the light is off, the night mode indicator should be in the ON state.
  • Applies for both Camera2 and CameraExtension sessions.

test_preview_min_frame_rate

Tests that the preview frame rate decreases correctly in a dark scene. For this test to work correctly, the lights in the test rig must be turned off by the controller or manually by the test operator.

APIs tested:

Pass: The preview frame rate is at the minimum of the requested frame rate range, and the variation between frames is less than the absolute tolerance set in the test.

test_torch_strength

Tests that flash strength control in TORCH mode is implemented correctly.

Verifies that if the device supports flash strength control during camera use in TORCH mode, the torch strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES . For example, if the auto-exposure mode is ON or OFF , the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH , the flash strength level has no effect on brightness. Verifies that the torch strength stays the same throughout the duration of a burst, simulating a video capture session. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.

APIs tested:

Проходить:

When the auto-exposure mode is ON or OFF , the brightness of the image burst patches increases as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL . When the auto-exposure mode is ON_AUTO_FLASH , the difference in brightness of the image burst patches are within tolerance as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL .

sensor_fusion

Sensor fusion tests require specific phone movement in front of a checkerboard pattern and ArUco markers. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The chart must fill the back of the sensor fusion box by printing at 17"x17" (43x43 cm). The sensor_fusion tests can be automated with the Sensor Fusion Box .

Sensor fusion chart

Sensor fusion chart

Sensor fusion chart in Rig

Sensor fusion chart that fills the back of the sensor fusion box

test_lens_intrinsic_calibration

Tests that the optical center of the lens intrinsic changes when the lens moves due to optical image stabilization (OIS). If lens intrinsic samples are supported, tests that the optical center of the lens intrinsic samples changes when the lens moves due to optical image stabilization (OIS).

APIs tested:

Pass: The optical center of the lens intrinsic changes by one pixel or more. If lens intrinsic samples are supported, the optical centers of the lens intrinsic samples change by one pixel or more.

test_lens_intrinsic_calibration_example.png

Example of test_lens_intrinsic_calibration plot showing changes of principal points in pixels for each frame

test_multi_camera_frame_sync

Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.

APIs tested:

Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.

test_preview_distortion

Tests that distortion is corrected throughout each preview frame taken at various zoom levels. For each preview frame, the test calculates ideal points based on camera intrinsics and extrinsics. In the example image, ideal points are shown in green; actual points are shown in red. The distortion error is calculated based on the root mean square (RMS) pixel distance between the actual points and ideal points. The green and red highlights on the image are used to visually detect the area of distortion error.

test_preview_distortion_example.jpg

Image of checkerboard with ideal points as green and actual points as red

APIs tested:

Pass: The normalized distortion error of each preview frame is less than the threshold set in the test.

test_preview_stabilization

Tests that stabilized preview video rotates less than gyroscope.

APIs tested:

Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.

The following are sample videos with and without stabilization.

  • Sample video with stabilization

  • Sample video without stabilization

test_sensor_fusion

Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME parameter is not enabled.

The test_sensor_fusion test generates a number of plots. The two most important plots for debugging are:

  • test_sensor_fusion_gyro_events : Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

APIs tested:

Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .

Fail mechanisms:

  • Offset error: The camera-gyroscope offset isn't correctly calibrated to within +/-1 ms.
  • Frame drops: The pipeline isn't fast enough to capture 200 frames consecutively.
  • Socket errors: adb can't reliably connect to the DUT long enough to execute the test.
  • The chart isn't mounted flat. The plot test_sensor_fusion_plot_rotations has frames where the gyroscope and camera rotation vary considerably as the camera rotates through the parts of the chart that aren't flat.
  • The camera isn't mounted flat. The plot test_sensor_fusion_gyro_events shows movement in the X and Y planes. This failure is more common in front-facing cameras as the rear camera often has a raised bump to the rest of the phone body, creating a tilt when mounting the rear of the phone to the mounting plate.

test_video_stabilization

Tests that stabilized video rotates less than gyroscope.

APIs tested:

Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.

The following are sample videos with and without stabilization.

  • Sample video with stabilization

  • Sample video without stabilization

test_video_stabilization_jca

Tests that stabilized video captured using the Jetpack Camera App (JCA) rotates less than the gyroscope. The JCA must be installed on the device before testing.

APIs tested:

Pass: The maximum angle rotation over frames extracted from video captured using the JCA is less than 70% of gyroscope rotation.

feature_combination

The feature_combination tests verify that features work correctly when multiple camera features are enabled at the same time. These tests use the same checkerboard image that is used in the sensor fusion scene .

test_feature_combination

Tests all combinations of different stream combinations, video stabilization mode, target FPS range, 10-bit HDR video, and Ultra HDR that are supported by the camera device.

For 16 and higher, the test runs all combinations of supported features, and logs the results into a proto file. Failure assertions are called only for combinations of features for which isSessionConfigurationSupported returns True .

APIs tested:

Pass: For each supported feature combination:

  • The preview stream is stabilized if preview stabilization is on.
  • The preview frame rate falls within the configured AE_TARGET_FPS_RANGE .
  • The recorded preview stream's color space matches what's set.
  • The Ultra HDR capture has a valid gain map.

scene_ip

(Available from Android 16) Scene scene_ip enables image parity checks between the default camera app and the Jetpack camera app (JCA) to identify major differences between captured images. The JCA replicates social media app captures and provides a baseline image that that social media apps then process and refine.

Hardware setup requirements

The following hardware setup is required for scene_ip tests:

  • Tests are executed in the Gen2 camera ITS-in-a-box .
  • The lighting and servo controllers that are part of the Gen2 rig are used to control the test environment
  • A test feature chart is placed inside the Gen2 rig.

test_chart_gen2

Gen2chart_sample.png

Test skip criteria

The scene_ip tests are skipped if any of the following criteria are met:

  • The device has a first API level ( first_api_level ) of 35 or lower.
  • The device isn't a phone device with front and rear primary camera devices (for example, a tablet or TV).

test_default_jca_ip

Takes captures of the test feature chart under controlled lighting conditions using the default camera app and the JCA and performs the following checks:

  • FoV: Checks that the default camera app and JCA captures have the same FoV. This check uses the center QR Code feature extracted from the captures chart image.

  • Brightness: Checks that the brightness difference measured between the default camera app and JCA doesn't exceed 10. This check uses the dynamic range patch for brightness measurement.

  • White balance: Checks that the white balance difference between the default camera app and JCA doesn't exceed 4. This check uses the dynamic range patch for brightness measurement.

Basic section pass: Test passes the FoV, brightness, and white balance checks. In Android 16, this test isn't mandated ( NOT_YET_MANDATED ).