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

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

Изменения в оборудовании

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

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

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

  • Рахи Системс Инк.
    48303 Fremont Blvd, Fremont CA 94538, США
    rahisystems.com/products/android-device-testing-equipment/
    androidpartner@rahisystems.com
    +1-510-319-3802

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

Унифицированные методы производства

Испытательный корпус rev1 regular field-of-view (RFoV) ITS-in-a-box переработан для использования методов производства, используемых в испытательных корпусах wide field-of-view (WFoV) box и sensor fusion box . Функциональность идентична, и для простоты конструкция упоминается как rev1a . Перепроектирование позволяет производителям иметь на складе один тип пластика для производства всех испытательных корпусов. Кроме того, крепление планшета и держатели ламп переработаны для обработки большего количества планшетов и светодиодных световых полос.

Чтобы загрузить последние описания и механические чертежи, см. RFoV box (rev1a) и WFoV box (rev2.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 box (rev1a) и WFoV box (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 могут быть пройдены, но они занесены в таблицу как PASS для отчетов верификатора CTS. Требование прохождения тестов MANDATED также применяется к обновленным устройствам. Это требование к обновленным устройствам проходить все тесты MANDATED привело к тому, что тесты были отложены до получения MANDATED , поскольку старые устройства также должны пройти тесты.

В Android 11 тесты MANDATED ограничиваются первым флагом уровня API из свойств телефона. Для устройств, обновляющихся до Android 11, тесты запускаются как тесты NOT_YET_MANDATED , что означает, что тест может не пройти, но быть занесен в таблицу как 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_с 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_а/б/в 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_д/2_д 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]. Когда маркер найден, следующие два элемента списка — это размер. Маркер размера JPEG DQT обычно равен [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, снимающей сцену scene2_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) уменьшается.

Средние значения матрицы Pixel 4

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

Утверждает

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

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

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

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

сцена2_d/e test_num_faces

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

сцена2_д

Рисунок 5. сцена2_d

сцена2_е

Рисунок 6. scene2_e

Утверждает

  • num_faces == 3

сцена2_e/тест_непрерывная_картинка

Метод

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

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

Утверждает

  • 3А находится в конвергентном состоянии в конце захвата.

изменение_сцены/тестовое_изменение_сцены

Метод

Включен новый тест для проверки того, утверждается ли флаг 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 с шести попыток, время изменено на основе предыдущих результатов.

сцена6/тест_зум

Метод

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

На рисунке 8 показана новая сцена с обычным массивом кругов. Массив кругов ослабляет требования к центрированию DUT/диаграммы и позволяет иметь круг всегда около центра захваченного изображения. В этой сцене массив из 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 .
  • Контуры должны иметь черные центры.
  • Контуры должны напоминать круг, то есть их площадь должна быть близка к площади контура pi*r2.

Диапазон испытаний

android.control.zoomRatioRange делится на 10 шагов.

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

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

Утверждает

  • При каждом значении масштабирования отображается как минимум один круг.
  • Проверяется 10-кратное или максимальное значение 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_д/2_д test_num_faces
4 test_aspect_ratio_and_crop
6 test_zoom

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

  • 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