Примечания к выпуску пакета тестирования изображения камеры Android 11

На этой странице кратко описаны изменения в наборе тестов изображений камеры (Camera Image Test Suite, ITS) в Android 11. Изменения подразделяются на следующие категории:

Изменения в аппаратном обеспечении

В Android 11 внесен ряд аппаратных изменений, направленных на снижение стоимости и повышение доступности. Эти изменения подразделяются на следующие категории:

Дополнительный производитель

Компания Rahi Systems, помимо нашего существующего поставщика, MYWAY design, имеет квалификацию для производства испытательных корпусов ITS. Информация о компаниях-поставщиках, имеющих квалификацию, приведена ниже:

  • Rahi Systems Inc.
    48303 Fremont Blvd, Fremont CA 94538, США
    rahisystems.com/products/android-device-testing-equipment/
    androidpartner@rahisystems.com
    +1-510-319-3802

  • Дизайн MYWAY
    4F., № 163, улица Фу-Ин, район Синьчжуан, город Нью-Тайбэй, Тайвань
    twmyway.com
    sales@myway.tw
    +886-2-29089060

Единые методы производства

В тестовом корпусе rev1 с обычным полем зрения (RFoV) ITS-in-a-box используются методы производства, аналогичные тем, что применяются в тестовых корпусах с широким полем зрения (WFoV) и корпусах для объединения данных с датчиков . Функциональность идентична, и для простоты конструкция обозначается как rev1a . Перепроектирование позволяет производителям использовать один тип пластика для изготовления всех тестовых корпусов. Кроме того, крепление для планшета и держатели для ламп переработаны для работы с большим разнообразием планшетов и светодиодных балок.

Чтобы загрузить последние описания и чертежи, см. раздел RFoV (версия 1a) и раздел WFoV (версия 2.9) .

Расширенный выбор планшетов

В список рекомендуемых планшетов добавлены такие модели, как Samsung Galaxy Tab A 10.1 и Chuwi Hi9 Air 10.1. Важно, чтобы планшет не поддерживал широтно-импульсную модуляцию (ШИМ) для регулировки яркости экрана и устранения полос на полученных изображениях.

Актуальную информацию о рекомендуемых планшетах см. в разделе «Требования к планшетам» .

Уменьшенное отверстие для таблетки

Для обеспечения возможности использования Galaxy Tab A 10.1 высота отверстия для планшета немного уменьшена как в тестовом корпусе RFoV (rev1a), так и в корпусе WFoV (rev2). Изменения внесены в версиях rev1a.1 и rev2.9. Чертежи этих изменений см. в блоке RFoV (rev1a) и блоке WFoV (rev2.9) .

Новый контроллер объединения данных с датчиков

Аппаратная часть контроллера для объединения данных с датчиков была переработана для повышения технологичности производства. Новый контроллер основан на Arduino , с пользовательской платой расширения, которая устанавливается поверх Arduino. На рисунке 1 показана плата расширения, а на рисунке 2 — механическая схема корпуса. Новый контроллер питается от одного источника питания 5 В, который напрямую питает двигатель. Электроника полностью управляется через USB-разъем. Отдельный источник питания обеспечивает полную изоляцию между управляющей электроникой и сервомотором. Кроме того, один контроллер может управлять до шести сервомоторами.

Вид сверху на Arduino

Рисунок 1. Вид сверху на плату расширения Arduino.

Конструкция корпуса

Рисунок 2. Конструкция корпуса.

Android 11 обратно совместим с существующими контроллерами. Для запуска тестирования с контроллером на базе Arduino используйте:

python tools/run_all_tests.py device=# camera=# rot_rig=arduino:1 scenes=sensor_fusion

Первый уровень API

В Android 10 тесты ITS обозначаются как MANDATED и NOT_YET_MANDATED . Для запуска на устройстве Android 10 необходимо пройти все MANDATED тесты. ПОКА NOT_YET_MANDATED тесты могут завершиться неудачей, но в отчете верификатора CTS они будут отмечены как PASS . Требование MANDATED тестов также распространяется на обновленные устройства. Это требование о прохождении всех MANDATED тестов на обновленных устройствах привело к задержке в преобразовании тестов MANDATED поскольку старые устройства также должны пройти эти тесты.

В Android 11 MANDATED тесты запускаются с помощью первого флага уровня API в свойствах телефона. Для устройств, обновляющихся до Android 11, тесты запускаются как NOT_YET_MANDATED tests), что означает, что тест может завершиться неудачей, но быть отмечен как PASS в файле CtsVerifier.apk .

Например:

  • В Android 11 проверка test_channel_saturation MANDATED для устройств с первым уровнем API выше 29.
  • В Android 10 проверка test_channel_saturation MANDATED для всех устройств.

Проверка освещения сцены

В Android 11 проверка освещения сцены осуществляется путем анализа яркости в углах сцены. Все сцены, созданные вручную, проверяются на освещение, а сцены, созданные на планшетах, проверяются для камер RFoV в тестовом стенде RFoV и камер WFoV в тестовом стенде WFoV. Если уровень освещения недостаточен, выдается ошибка, и тестирование завершается неудачей.

Изменение названия сцены

В Android 10 сцена 1 составляет большинство тестов и значительную часть общего времени тестирования. Если какой-либо тест в сцене 1 не проходит, всю сцену необходимо запустить заново. По задумке, повторный запуск всей сцены уменьшает вероятность успешного прохождения тестов, находящихся на грани допустимого. В Android 11 время повторного запуска сокращается за счет разделения сцены 1 на две сцены: scene1_1 и scene1_2.

В таблице ниже показано время тестирования задней камеры Pixel 4 в различных условиях. Количество тестов распределено таким образом, чтобы уравнять время тестирования, а не количество тестов.

Кроме того, проведена очистка названий. Сцена 2 разделена буквами, а сцена 1 — цифрами. Номенклатура для различных расширений следующая:

  • Сцены с одной и той же диаграммой, но разными тестами: *_1,2,3
  • Сцены с разными диаграммами, но одинаковыми тестами: *_a,b,c
Сцена Количество тестов Время работы Pixel 4 (мин:сек)
0 11 1:12
1_1 22 5:12
1_2 13 5:20
2_а 5 3:22
2_б 1 0:24
2_c 1 0:24
3 6 2:04
4 2 2:46

Тестовые изменения

Тесты обновлены для использования первого уровня API.

В Android 11 тесты в следующей таблице обновлены и используют флаг первого уровня API. Все эти тесты используют первый уровень API 29, за исключением теста test_tonemap_curve , который использует первый уровень API 30.

Сцена Название теста Первый уровень API Описание
0 test_tonemap_curve 30 Убедитесь, что конвейер обработки данных обеспечивает корректный вывод цвета с использованием линейной тоновой карты и идеального входного изображения (зависит от параметра test_test_patterns ).
1 test_ae_precapture_trigger 29 Проверьте работу конечного автомата AE при использовании триггера предварительного захвата. Убедитесь, что при отключенном AE триггер предварительного захвата не оказывает никакого эффекта.
test_channel_saturation 29 Чтобы устранить оттенок в перенасыщенных областях, убедитесь, что насыщенность каналов RGB установлена ​​на схожие значения.
2_a/b/c test_num_faces 29 Увеличьте возрастное разнообразие в сценах с лицами.

Тесты с изменениями

Тесты, представленные в таблице ниже, обновлены в Android 11. Изменения описаны в столбце «Описание изменений» .

Сцена Название теста Первый уровень API Описание изменений
1 test_burst_sameness_manual 30 Снизьте допустимый уровень до 2%.
4 test_aspect_ratio_and_crop 30 Измените настройки для работы на ОГРАНИЧЕННОМ количестве устройств.
test_multi_camera_alignment 30 Если многокамерная съемка не поддерживается, переключайтесь между камерами по отдельности. Переработайте логику выбора камер с учетом трех- и четырехкамерных систем и пропускайте монохромные, только глубинные и ИК-камеры.

Новые тесты

Тесты, представленные в таблице ниже, включены в Android 11. В таблице приведено краткое описание тестов, а подробные описания — в следующих разделах.

Сцена Название теста Первый уровень API Описание
0 test_vibration_restrictions 30 Убедитесь, что оповещения и вибрация не активируются во время съемки изображений.
2_а test_jpeg_quality 30 Проверьте, снижают ли таблицы квантования степень сжатия для повышения качества JPEG-изображений.
2_d/2_e test_num_faces 30 Увеличьте разнообразие возрастных особенностей лиц.
2_е test_continuous_picture 30 Убедитесь, что 3A устанавливается в значение android.control.afAvailableModes = CONTINUOUS_PICTURE.
изменять test_scene_change 31 android.control.afSceneChange применяется при смене сцены.
6 test_zoom 30 Проверьте значение android.control.zoomRatioRange .

scene0/test_vibration_restriction

Для этого теста не требуется определенная обстановка, но тестируемое устройство (DUT) должно быть размещено или установлено на твердой поверхности. Это включает в себя установку на тестовые корпуса ITS-in-a-box.

Утверждения

  • Отсутствие вибраций во время работы камеры

scene2_a/test_jpeg_quality

Метод

Различные участки файла JPEG определяются 2-байтовыми маркерами. Для получения дополнительной информации см. раздел JPEG .

Тест извлекает матрицы квантования из JPEG-изображения. Маркером для матриц квантования в JPEG-изображении является последовательность [255, 219]. Когда маркер найден, следующие два элемента списка указывают размер. Маркер размера DQT в JPEG обычно равен [0, 132] = 256*0+132 = 132, что соответствует размеру данных DQT в JPEG-изображении. Встроенные данные имеют вид: [255, 219, 0, 132, 0 (маркер яркости), матрица яркости 8x8, 1 (маркер цветности), матрица цветности 8x8].

Значения 0 для маркера яркостной матрицы и 1 для маркера цветности кажутся одинаковыми для ряда устройств, включая телефоны, которые разделяют две матрицы на отдельные секции DQT в файле JPEG. Яркостные матрицы, как правило, имеют большее разнообразие значений по сравнению с цветными матрицами, поскольку человеческий глаз более чувствителен к яркости, чем к цветности, и изображения JPEG это учитывают.

Ниже приведены примеры извлеченных матриц яркости и цветности для коэффициентов качества 85 и 25, полученных с помощью задней камеры Pixel 4 при съемке сцены 2_a на тестовом стенде ITS. Значения матриц существенно увеличиваются (что указывает на усиление сжатия) при более низком значении качества. Эти матрицы выводятся скриптом только в том случае, если установлен флаг debug=True . Обратите внимание на большее различие в значениях матриц яркости по сравнению с матрицами цветности.

    luma matrix (quality = 85)    chroma matrix (quality = 85)

    [[ 5  3  4  4  4  3  5  4]    [[ 5  5  5  7  6  7 14  8]
     [ 4  4  5  5  5  6  7 12]     [ 8 14 30 20 17 20 30 30]
     [ 8  7  7  7  7 15 11 11]     [30 30 30 30 30 30 30 30]
     [ 9 12 17 15 18 18 17 15]     [30 30 30 30 30 30 30 30]
     [17 17 19 22 28 23 19 20]     [30 30 30 30 30 30 30 30]
     [26 21 17 17 24 33 24 26]     [30 30 30 30 30 30 30 30]
     [29 29 31 31 31 19 23 34]     [30 30 30 30 30 30 30 30]
     [36 34 30 36 28 30 31 30]]     [30 30 30 30 30 30 30 30]]

    luma matrix (quality = 25)            chroma matrix (quality = 25)

    [[ 32  22  24  28  24  20  32  28]    [[ 34  36  36  48  42  48  94  52]
     [ 26  28  36  34  32  38  48  80]     [ 52  94 198 132 112 132 198 198]
     [ 52  48  44  44  48  98  70  74]     [198 198 198 198 198 198 198 198]
     [ 58  80 116 102 122 120 114 102]     [198 198 198 198 198 198 198 198]
     [112 110 128 144 184 156 128 136]     [198 198 198 198 198 198 198 198]
     [174 138 110 112 160 218 162 174]     [198 198 198 198 198 198 198 198]
     [190 196 206 208 206 124 154 226]     [198 198 198 198 198 198 198 198]
     [242 224 200 240 184 202 206 198]]     [198 198 198 198 198 198 198 198]]

На рисунке 3 показаны средние значения матрицы для задней камеры Pixel 4 в зависимости от качества JPEG. С повышением качества JPEG уровень сжатия (среднее значение матрицы DQT для яркости/цветности) снижается.

Средние значения матриц пикселей 4

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

Утверждения

  • Для [25, 45, 65, 86] +20 в качестве означает снижение средних значений матрицы квантования на 20%.
  • Полезные нагрузки матрицы DQT представляют собой квадратные числа.

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

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

Рисунок 4. Пример неудачного теста.

scene2_d/e test_num_faces

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

scene2_d

Рисунок 5. scene2_d

scene2_e

Рисунок 6. scene2_e

Утверждения

  • num_faces == 3

scene2_e/test_continuous_picture

Метод

Тест test_continuous_picture использует scene2_e, но его можно включить для любой из сцен с лицами. В этом тесте захватывается 50 кадров с разрешением VGA, при этом запрос на захват сначала устанавливает android.control.afMode = 4 (CONTINUOUS_PICTURE) .

Ожидается, что система 3A стабилизируется по завершении захвата 50 кадров.

Утверждения

  • В конце захвата сигнал 3A находится в сходящемся состоянии.

scene_change/test_scene_change

Метод

Включен новый тест, проверяющий, активируется ли флаг android.control.afSceneChange при смене сцены. Смена сцены осуществляется путем отображения на планшете сцены с лицом, а затем включения и выключения планшета для создания смены сцены. Сцена повторно использует scene2_e, но находится в отдельной сцене из-за необходимости управления планшетом.

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

На рисунке 7 представлена ​​временная диаграмма теста. Время между выключением экрана и захватом изображения корректируется на основе результатов событий из предыдущих захватов.

Диаграмма синхронизации для test_scene_change

Рисунок 7. Диаграмма синхронизации для test_scene_change

Условия смены:

  • Если происходит смена сцены и afSceneChange == 1 , тест возвращает PASS .
  • Если происходит смена сцены и afSceneChange == 0 , смена сцены сдвигается на 5 кадров раньше, чтобы дать больше времени для срабатывания afSceneChange .
  • Если смена сцены не происходит и afSceneChange == 1 , тест возвращает FAIL .
  • Если смена сцены отсутствует и afSceneChange == 0 , то смена сцены происходит на 30 кадров раньше, чтобы в момент захвата кадра отобразилась смена сцены.

Утверждения

  • Переключение экрана (сцены).
  • Флаг afSceneChange находится в диапазоне [0, 1].
  • Если смена сцены отсутствует, алгоритм 3A сходится (функционально идентичен алгоритму test_continuous_picture ).
  • Если afSceneChange == 1 , яркость в сцене должна измениться.
  • PASS за шесть попыток, время скорректировано на основе предыдущих результатов.

scene6/test_zoom

Метод

Для проверки android.control.zoomRatioRange требуется новая сцена, поскольку в существующих сценах либо отсутствует достаточно мелкий объект для увеличения (сцены [1, 2, 4]), либо в сцене много объектов, которые трудно идентифицировать, что усложняет извлечение признаков (сцена 3).

На рисунке 8 показана новая сцена с регулярным расположением кругов. Расположение кругов ослабляет требования к центрированию тестируемого устройства/диаграммы и позволяет кругу всегда находиться вблизи центра захваченного изображения. В этой сцене массив из 9x5 кругов с черной рамкой покрывает весь планшет. Один круг заменен квадратом в правом верхнем углу для обозначения ориентации. Размеры кругов имеют площадь около 7500 пикселей ( radius=50pixels ) для датчика 4000x3000, захватываемого с полем зрения (FoV) около 80 градусов.

сцена test_zoom

Рисунок 8. Сцена test_zoom

Пиксель 4 нашел круг

Рисунок 9. Изображения Pixel 4 cam[0] zoom = [1, 3.33, 5.67, 8] с найденным кругом

На рисунке 9 показаны снимки, полученные с помощью задней камеры Pixel 4 при увеличении зума от 1 до 8x в четыре этапа. Этот набор изображений был получен без особой тщательности в центрировании, за исключением использования тестового отверстия телефона с двумя отверстиями для тестирования как передней, так и задней камер. Ожидается смещение относительно центра, которое наблюдается, поскольку тестовый планшет немного смещен влево от центра. Кроме того, тестовая таблица, по-видимому, достаточна для тестирования с коэффициентами увеличения более 8x.

Поиск кругов

Тест включает метод find_circle() , использующий findContours , который находит все контуры и сужает область поиска до нужных окружностей, проверяя следующее:

  • Площадь контура должна превышать 10 пикселей.
  • Контуры должны иметь NUM_PTS >= 15 .
  • Контуры должны иметь черные центры.
  • Контуры должны напоминать круг, то есть их площадь должна быть близка к площади контура, равной π*r².

Испытательный полигон

android.control.zoomRatioRange разделен на 10 шагов.

  • [1, 7] тесты [1, 1.67, 2.33, 3, 3.67, 4.33, 5, 5.67, 6.33, 7]

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

Утверждения

  • При каждом уровне масштабирования обнаруживается как минимум один круг.
  • Проверяется значение 10x или максимальное значение параметра android.control.zoomRatioRange .
  • Радиус круга изменяется в зависимости от масштабирования (RTOL на 10% выше ожидаемого).
  • Смещение центра окружности относительно центра масштабируется при увеличении масштаба (RTOL 10% от ожидаемого).
  • Достигнут достаточный уровень масштабирования (2x).

Расширенное ОГРАНИЧЕННОЕ тестирование камер

В Android 11 тесты, представленные в следующей таблице, проверяют камеры LIMITED . В дополнение к новым тестам , тест scene4/test_aspect_ratio_and_crop обновлен, чтобы обеспечить тестирование устройств с LIMITED , имеющих первый уровень API 30 или выше.

Сцена Название теста
0 test_vibration_restrictions
2_а test_jpeg_quality
2_d/2_e test_num_faces
4 test_aspect_ratio_and_crop
6 test_zoom

На рисунке 10 показано кольцо декодера секретных тестов ITS в Android 11. Кольцо декодера показывает, какие параметры тестирования определяют доступность отдельных тестов. Для удобства просмотра параметры имеют цветовую кодировку. Основные параметры тестирования:

  • MANUAL_SENSOR
  • READ_3A *требуется MANUAL SENSOR
  • COMPUTE_TARGET_EXPOSURES *требуется MANUAL SENSOR
  • PER_FRAME_CONTROL
  • RAW
  • SENSORS * REALTIME
  • MULTI_CAMERA

Параметры MANUAL SENSOR , READ_3A , COMPUTE_TARGET_EXPOSURES и PER_FRAME_CONTROL регулируют большинство тестов. Кроме того, тесты, включенные для устройств LIMITED устройств, выделены светло-зеленым цветом.

секретное кольцо дешифратора

Рисунок 10. Скрытое кольцо дешифратора Android 11.