Notas de la versión del paquete de pruebas de imagen de la cámara de Android 11

En esta página, se resumen los cambios en el conjunto de pruebas de imágenes de la cámara (ITS) en Android 11. Los cambios se dividen en las siguientes categorías:

Cambios de hardware

Android 11 introduce varios cambios de hardware para reducir los costos y aumentar la disponibilidad. Estos cambios se clasifican en las siguientes categorías:

Fabricante adicional

Además de nuestro proveedor existente, MYWAY design, Rahi Systems está calificado para producir gabinetes de prueba de ITS. La información de la empresa para los proveedores calificados es la siguiente:

Métodos de fabricación unificados

El gabinete de prueba del ITS integrado de campo visual regular (RFoV) rev1 se rediseñó para usar los métodos de fabricación que se usan en los gabinetes de prueba de la caja de campo visual amplio (WFoV) y la caja de fusión de sensores. La funcionalidad es idéntica y, para simplificar, el diseño se conoce como rev1a. El rediseño permite a los fabricantes almacenar un solo tipo de plástico para fabricar todos los gabinetes de prueba. Además, se rediseñaron los soportes para la tablet y las luces para admitir una mayor variación en las tablets y las barras de luces LED.

Para descargar las descripciones y los planos mecánicos más recientes, consulta Caja de RFoV (rev1a) y Caja de WFoV (rev2.9).

Más opciones para tablets

Se agregaron a la lista de tablets recomendadas las tablets Samsung Galaxy Tab A 10.1 y Chuwi Hi9 Air 10.1. Es importante que la tablet no tenga modulación de ancho de pulso (PWM) para ajustar el brillo de la pantalla y eliminar las bandas en las imágenes capturadas.

Para obtener la información más reciente sobre las tablets recomendadas, consulta Requisitos de la tablet.

Apertura de la tablet reducida

Para permitir el uso de la Galaxy Tab A 10.1, la apertura de la tablet se reduce ligeramente en altura para los gabinetes de prueba de RFoV (rev1a) y WFoV (rev2). Las revisiones que reflejan estos cambios son rev1a.1 y rev2.9. Para ver estos dibujos, consulta Caja de RFoV (rev1a) y Caja de WFoV (rev2.9).

Nuevo controlador de fusión de sensores

Se rediseñó el hardware del controlador de fusión de sensores para mejorar la capacidad de fabricación. El nuevo controlador se basa en Arduino y cuenta con una placa de enrutamiento personalizada shield que se monta en la parte superior del Arduino. En la figura 1, se muestra el protector, y en la figura 2, el dibujo mecánico de la carcasa. El nuevo controlador se alimenta con una sola fuente de 5 V que alimenta el motor directamente. Los componentes electrónicos se controlan por completo a través del conector USB. La fuente de alimentación independiente permite un aislamiento completo entre los componentes electrónicos de control y el servomotor. Además, un solo controlador puede controlar hasta seis servomotores.

Vista superior de Arduino

Figura 1: Vista superior de la placa Arduino

Diseño de la estructura

Figura 2: Diseño de la estructura

Android 11 es retrocompatible con los controladores existentes. Para invocar pruebas con el controlador basado en Arduino, usa lo siguiente:

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

Primer nivel de API

En Android 10, las pruebas del ITS se designan como MANDATED y NOT_YET_MANDATED. Para lanzarse como un dispositivo Android 10, se deben aprobar todas las pruebas de MANDATED. Las pruebas de NOT_YET_MANDATED pueden fallar, pero se tabulan como PASS para los informes del verificador de CTS. El requisito de pruebas de MANDATED también se aplica a los dispositivos actualizados. Este requisito para que los dispositivos actualizados pasen todas las pruebas de MANDATED provocó que las pruebas se retrasaran en convertirse en pruebas de MANDATED, ya que los dispositivos más antiguos también deben pasar las pruebas.

En Android 11, las pruebas de MANDATED se controlan con la primera marca de nivel de API de las propiedades del teléfono. En el caso de los dispositivos que se actualizan a Android 11, las pruebas se ejecutan como pruebas NOT_YET_MANDATED, lo que significa que una prueba puede fallar, pero se puede tabular como PASS en CtsVerifier.apk.

Por ejemplo:

  • En Android 11, la prueba test_channel_saturation es MANDATED para dispositivos con un primer nivel de API superior a 29.
  • En Android 10, la prueba test_channel_saturation es MANDATED para todos los dispositivos.

Validación de la iluminación de la escena

En Android 11, la iluminación de la escena se valida analizando el brillo en las esquinas de la escena. Todas las escenas manuales se validan para la iluminación, y las escenas basadas en tablets se validan para las cámaras RFoV en el soporte de prueba RFoV y las cámaras WFoV en el soporte de prueba WFoV. Si los niveles de iluminación son inadecuados, se informa un error y la prueba falla.

Cambios en los nombres de las escenas

En Android 10, la escena 1 representa la mayoría de las pruebas y un gran porcentaje del tiempo total de prueba. Si falla alguna prueba dentro de la escena 1, se debe volver a ejecutar toda la escena. Por diseño, volver a ejecutar toda la escena reduce el paso de pruebas marginales. En Android 11, los tiempos de reejecución se reducen dividiendo la escena 1 en dos escenas, scene1_1 y scene1_2.

En la siguiente tabla, se muestran los tiempos de prueba tabulados para la cámara trasera del Pixel 4 en diferentes escenas. La cantidad de pruebas se divide para igualar el tiempo de prueba, no la cantidad de pruebas.

Además, se realizó una limpieza de nombres. La escena 2 se divide con letras y la escena 1, con números. La nomenclatura para las diferentes extensiones es la siguiente:

  • Escenas con el mismo gráfico, pero con diferentes pruebas: *_1,2,3
  • Escenas con diferentes gráficos, pero las mismas pruebas: *_a,b,c
Scene Cantidad de pruebas Tiempo de ejecución del Pixel 4 (min:s)
0 11 1:12
1_1 22 5:12
1_2 13 5:20
2_a 5 3:22
2_b 1 0:24
2_c 1 0:24
3 6 2:04
4 2 2:46

Prueba los cambios

Se actualizaron las pruebas para usar el primer nivel de API

En Android 11, las pruebas de la siguiente tabla se actualizaron para usar la primera marca de nivel de API. Todas estas pruebas usan un primer nivel de API de 29, excepto la prueba test_tonemap_curve, que usa un primer nivel de API de 30.

Scene Nombre de la prueba Primer nivel de API Descripción
0 test_tonemap_curve 30 Asegúrate de que la canalización tenga salidas de color adecuadas con un mapa de tonos lineal y una entrada de imagen ideal (depende de test_test_patterns).
1 test_ae_precapture_trigger 29 Prueba la máquina de estados de AE cuando se usa el activador de captura previa. Asegúrate de que el activador de precaptura con AE inhabilitado no tenga efecto.
test_channel_saturation 29 Asegúrate de que los canales RGB se saturen con valores similares para eliminar el tinte en las regiones saturadas.
2_a/b/c test_num_faces 29 Aumenta la diversidad de edades en las escenas de rostros.

Pruebas con cambios

Las pruebas de la siguiente tabla se actualizaron en Android 11. Los cambios se describen en la columna Descripción de los cambios.

Scene Nombre de la prueba Primer nivel de API Descripción de los cambios
1 test_burst_sameness_manual 30 Reduce la tolerancia al 2%.
4 test_aspect_ratio_and_crop 30 Se cambió para que se ejecute en dispositivos LIMITADOS.
test_multi_camera_alignment 30 Recorre las cámaras de forma individual si no se admite la captura con varias cámaras. Se rediseñó la lógica de selección de la cámara para tener en cuenta los sistemas de tres y cuatro cámaras, y se omiten las cámaras mono, solo de profundidad y de IR.

Nuevas pruebas

Las pruebas de la siguiente tabla están habilitadas en Android 11. Las pruebas se resumen en la tabla y se proporcionan descripciones detalladas en las siguientes secciones.

Scene Nombre de la prueba Primer nivel de API Descripción
0 test_vibration_restrictions 30 Asegúrate de que las alertas y las vibraciones no se activen durante las capturas de imágenes.
2_a test_jpeg_quality 30 Prueba que las tablas de cuantificación disminuyan la compresión para aumentar la calidad de JPEG.
2_d/2_e test_num_faces 30 Aumenta la diversidad de edades faciales.
2_e test_continuous_picture 30 Asegúrate de que 3A se liquide en android.control.afAvailableModes = CONTINUOUS_PICTURE.
cambiar test_scene_change 31 android.control.afSceneChange se confirma cuando cambia la escena.
6 test_zoom 30 Prueba android.control.zoomRatioRange.

scene0/test_vibration_restriction

Esta prueba no requiere una escena específica, pero el dispositivo bajo prueba (DUT) debe colocarse o montarse sobre una superficie dura. Esto incluye el montaje en los gabinetes de prueba de ITS en una caja.

Aserciones

  • No hay vibraciones durante el uso de la cámara

scene2_a/test_jpeg_quality

Método

Las diferentes partes del archivo JPEG se definen con marcadores de 2 bytes. Para obtener más información, consulta JPEG.

La prueba extrae las matrices de cuantificación de la captura JPEG. El marcador para las matrices de cuantificación en la captura JPEG es la secuencia [255, 219]. Cuando se encuentra el marcador, los dos siguientes elementos de la lista son el tamaño. El marcador de tamaño de la DQT de JPEG suele ser [0, 132] = 256*0 + 132 = 132, lo que representa el tamaño de los datos de la DQT en la captura de JPEG. Los datos incorporados tienen el siguiente formato: [255, 219, 0, 132, 0 (marcador de luminancia), matriz de luminancia de 8x8, 1 (marcador de croma), matriz de croma de 8x8].

El 0 para el marcador de matriz de luminancia y el 1 para el marcador de croma parecen coherentes para varios dispositivos, incluidos los teléfonos que separan las dos matrices en secciones DQT independientes en el archivo JPEG. Las matrices de luminancia suelen tener una mayor variedad de valores en comparación con las matrices de croma, ya que el ojo humano es más sensible a la luminancia que al croma, y las imágenes JPEG tienen esto en cuenta.

A continuación, se muestran matrices de luma y croma extraídas de muestra para factores de calidad de 85 y 25 para la cámara posterior del Pixel 4 que captura scene2_a con el equipo de prueba de ITS. Los valores de la matriz aumentan (lo que denota una mayor compresión) de manera considerable para el ajuste de calidad inferior. Estas matrices solo se imprimen con la secuencia de comandos si se aplica la marca debug=True. Observa la mayor variación en las entradas de las matrices de luminancia en comparación con las matrices de crominancia.

    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]]

En la figura 3, se muestran los valores promedio de la matriz para la cámara posterior del Pixel 4 en comparación con la calidad JPEG. A medida que aumenta la calidad de JPEG, disminuye el nivel de compresión (promedio de la matriz DQT de luminancia y crominancia).

Valores promedio de la matriz del Pixel 4

Figura 3: Promedios de la matriz de DQT de luminancia y croma de la cámara posterior del Pixel 4 en comparación con la calidad JPEG

Aserciones

  • Para [25, 45, 65, 86], un aumento de 20 en la calidad tiene promedios de matriz de cuantificación con una reducción del 20%.
  • Las cargas útiles de la matriz de DQT son números cuadrados.

En la Figura 4, se muestra un ejemplo de un teléfono que no pasa la prueba. Ten en cuenta que, para las imágenes de muy baja calidad (jpeg.quality < 50), no hay un aumento en la compresión en la matriz de cuantificación.

Ejemplo de prueba fallida

Figura 4: Ejemplo de prueba fallida

scene2_d/e test_num_faces

Se agregaron dos nuevas escenas de detección de rostros para aumentar la diversidad facial de las verificaciones del algoritmo de detección de rostros. Con las pruebas repetidas de varias cámaras, se espera que el rostro más difícil sea el que se encuentra más a la izquierda en scene2_d. En particular, el modelo tiene un sombrero y barba, algo nuevo en las escenas de rostros. Las escenas nuevas se muestran en las figuras 5 y 6.

scene2_d

Figura 5: scene2_d

scene2_e

Figura 6. scene2_e

Aserciones

  • num_faces == 3

scene2_e/test_continuous_picture

Método

La prueba test_continuous_picture usa scene2_e, pero se puede habilitar con cualquiera de las escenas de rostros. En esta prueba, se capturan 50 fotogramas con resolución VGA. La solicitud de captura primero establece android.control.afMode = 4 (CONTINUOUS_PICTURE).

Se espera que el sistema 3A se haya estabilizado al final de una captura de 50 fotogramas.

Aserciones

  • El 3A se encuentra en estado convergente al final de la captura.

scene_change/test_scene_change

Método

Se habilitó una nueva prueba para verificar si la marca android.control.afSceneChange se confirma con un cambio de escena. El cambio de escena usa la tablet que muestra una escena de rostro y, luego, enciende y apaga la tablet para crear un cambio de escena. La escena reutiliza scene2_e, pero está en una escena separada debido al control de la tablet requerido.

Además, para las pruebas manuales, el cambio de escena se puede lograr agitando la mano frente a la cámara.

En la Figura 7, se muestra un diagrama de tiempos de la prueba. El tiempo entre el apagado de la pantalla y la captura se ajusta según los resultados de eventos de capturas anteriores.

Diagrama de tiempos para test_scene_change

Figura 7: Diagrama de tiempos para test_scene_change

Condiciones de cambio:

  • Si hay un cambio de escena y afSceneChange == 1, la prueba devuelve PASS.
  • Si hay un cambio de escena y afSceneChange == 0, el cambio de escena se adelanta 5 fotogramas para dar más tiempo a afSceneChange para que se afirme.
  • Si no hay cambio de escena y afSceneChange == 1, la prueba devuelve FAIL.
  • Si no hay cambio de escena y afSceneChange == 0, el cambio de escena se adelanta 30 fotogramas para capturarlo.

Aserciones

  • Alternar entre pantallas (escenas)
  • La marca afSceneChange está en el rango [0, 1].
  • Si no hay cambios de escena, la 3A converge (funcionalmente idéntica a test_continuous_picture).
  • Si es afSceneChange == 1, el brillo debe cambiar en la escena.
  • PASS en seis intentos con tiempos modificados según los resultados anteriores.

scene6/test_zoom

Método

Se requiere una escena nueva para probar android.control.zoomRatioRange, ya que las escenas establecidas no tienen una función lo suficientemente pequeña como para ampliarse (escenas [1, 2, 4]) o la escena tiene muchos objetos que no se identifican fácilmente, lo que complica la extracción de funciones (escena 3).

En la figura 8, se muestra la nueva escena con un array regular de círculos. El array de círculos relaja los requisitos de centrado del DUT o el gráfico y permite que siempre haya un círculo cerca del centro de la imagen capturada. En esta escena, una matriz de círculos de 9 x 5 con un borde negro cubre toda la tablet. Un círculo se reemplaza por un cuadrado en la esquina superior derecha para mostrar la orientación. Los tamaños de los círculos tienen una función con un área de aproximadamente 7,500 píxeles (radius=50pixels) para un sensor de 4,000 x 3,000 capturado con un campo visual (FoV) de aproximadamente 80 grados.

Escena de prueba de zoom

Figura 8. Escena de test_zoom

Círculo de búsqueda del Pixel 4

Figura 9: Imágenes de zoom de la cámara[0] del Pixel 4 = [1, 3.33, 5.67, 8] con el círculo encontrado

La figura 9 muestra las imágenes capturadas por la cámara posterior de un Pixel 4 a medida que el zoom aumenta de 1 a 8 aumentos en cuatro pasos. Este conjunto de imágenes se captura sin ningún cuidado específico en el centrado, excepto el uso de la apertura de prueba del teléfono con dos aberturas para permitir la prueba de las cámaras frontal y posterior. Se espera una compensación desde el centro, y se observa que la tableta de la carta está ligeramente a la izquierda del centro. Además, el gráfico parece suficiente para realizar pruebas con relaciones de zoom superiores a 8x.

Cómo encontrar círculos

La prueba incluye un método find_circle() que usa findContours para encontrar todos los contornos y reducir la búsqueda de contornos a los círculos deseados probando lo siguiente:

  • Los contornos deben tener un área superior a 10 píxeles.
  • Los contornos deben tener NUM_PTS >= 15.
  • Los contornos deben tener centros negros.
  • Los contornos deben parecerse a un círculo, es decir, su área debe ser cercana al área pi*r² del contorno.

Rango de prueba

android.control.zoomRatioRange se divide en 10 pasos.

  • [1, 7] prueba [1, 1.67, 2.33, 3, 3.67, 4.33, 5, 5.67, 6.33, 7]

El acercamiento se detiene si el círculo encontrado toca los límites de la imagen. Hay una verificación para asegurarse de que se alcance un nivel de zoom suficiente en la prueba (10x).

Aserciones

  • Se encuentra al menos un círculo en cada configuración de zoom.
  • Se prueba 10 veces o el máximo de android.control.zoomRatioRange.
  • El radio del círculo se ajusta con el zoom (RTOL del 10% del valor esperado).
  • El desplazamiento del centro del círculo desde el centro se ajusta con el zoom (RTOL del 10% del valor esperado).
  • Se alcanza el nivel de zoom suficiente (2x).

Se incrementaron las pruebas de cámara LIMITADA

En Android 11, las pruebas de la siguiente tabla prueban las cámaras LIMITED. Además de las pruebas nuevas, se actualizó la prueba scene4/test_aspect_ratio_and_crop para permitir la prueba de dispositivos LIMITED con un primer nivel de API de 30 o superior.

Scene Nombre de la prueba
0 test_vibration_restrictions
2_a test_jpeg_quality
2_d/2_e test_num_faces
4 test_aspect_ratio_and_crop
6 test_zoom

En la figura 10, se muestra el anillo decodificador secreto del ITS de Android 11. El anillo decodificador secreto muestra la configuración de prueba por la que se restringen las pruebas individuales. El bloqueo se codifica por color para facilitar la visualización. Los principales elementos de restricción son los siguientes:

  • MANUAL_SENSOR
  • READ_3A *requiere MANUAL SENSOR
  • COMPUTE_TARGET_EXPOSURES *requiere MANUAL SENSOR
  • PER_FRAME_CONTROL
  • RAW
  • SENSORS *REALTIME
  • MULTI_CAMERA

MANUAL SENSOR, READ_3A, COMPUTE_TARGET_EXPOSURES y PER_FRAME_CONTROL controlan la mayoría de las pruebas. Además, las pruebas habilitadas para dispositivos LIMITED se destacan en verde claro.

anillo decodificador secreto

Figura 10: Anillo decodificador secreto de Android 11