Notas de la versión de Android 11 Camera Image Test Suite

Esta página resume los cambios en Camera Image Test Suite (ITS) en Android 11. Los cambios se dividen en las siguientes categorías:

Cambios de hardware

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

fabricante adicional

Rahi Systems está calificado para producir gabinetes de prueba ITS además de nuestro proveedor actual, el diseño MYWAY. La información de la empresa para proveedores calificados es la siguiente:

Métodos de fabricación unificados

El gabinete de prueba ITS-in-a-box de campo de visión regular (RFoV) rev1 se rediseñó para usar los métodos de fabricación que utilizan los gabinetes de prueba de caja de fusión de sensores y caja de campo de visión amplio (WFoV) . La funcionalidad es idéntica y, por simplicidad, el diseño se denomina rev1a . El rediseño permite a los fabricantes almacenar un solo tipo de plástico para fabricar todos los gabinetes de prueba. Además, el soporte de la tableta y los soportes de luz se rediseñaron para manejar una mayor variación en tabletas y barras de luz LED.

Para descargar las últimas descripciones y dibujos mecánicos, consulte el cuadro RFoV (rev1a) y el cuadro WFoV (rev2.9) .

Más opciones de tableta

Las tabletas que incluyen Samsung Galaxy Tab A 10.1 y Chuwi Hi9 Air 10.1 se agregan a la lista de tabletas recomendadas. Es importante que la tableta 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 tabletas recomendadas, consulte Requisitos de la tableta .

Apertura reducida de la tableta

Para permitir el uso de la Galaxy Tab A 10.1, la apertura de la tableta se reduce ligeramente en altura para las carcasas de prueba RFoV (rev1a) y WFoV (rev2). Las revisiones que reflejan estos cambios son rev1a.1 y rev2.9. Para ver estos dibujos, consulte el cuadro RFoV (rev1a) y el cuadro WFoV (rev2.9) .

Nuevo controlador de fusión de sensores

El hardware del controlador de fusión de sensores se ha rediseñado para mejorar la capacidad de fabricación. El nuevo controlador está basado en Arduino , con un escudo de placa de enrutamiento personalizado que se monta en la parte superior del Arduino. La figura 1 muestra el escudo y la figura 2 muestra el dibujo mecánico de la caja. El nuevo controlador está alimentado por un solo suministro de 5 V que alimenta el motor directamente. La electrónica se controla completamente a través del conector USB. La fuente de alimentación independiente permite un aislamiento completo entre la electrónica de control y el servomotor. Además, un solo controlador puede controlar hasta seis servomotores.

Vista superior de Arduino

Figura 1. Vista superior del escudo de Arduino

Diseño del recinto

Figura 2. Diseño del recinto

Android 11 es compatible con versiones anteriores de los controladores existentes. Para invocar la prueba con el uso del controlador basado en Arduino:

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

Primer nivel de API

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

En Android 11, las pruebas MANDATED están controladas por el primer indicador de nivel de API de las propiedades del teléfono. Para 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 tabula 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 iluminación, y las escenas basadas en tabletas se validan para cámaras RFoV en el banco de pruebas RFoV y cámaras WFoV en el banco de pruebas WFoV. Si los niveles de iluminación son inadecuados, se informa un error y la prueba falla.

Cambios de nombre de escena

En Android 10, la escena 1 representa la mayoría de las pruebas y un gran porcentaje del tiempo total de prueba. Si alguna prueba dentro de la escena 1 falla, 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 repetición se reducen al dividir la escena 1 en dos escenas, scene1_1 y scene1_2.

La siguiente tabla muestra los tiempos de prueba tabulados para la cámara trasera del Pixel 4 para diferentes escenas. El número de pruebas se divide para igualar el tiempo de prueba, no para igualar el número de pruebas.

Además, hay una limpieza de nombres. La escena 2 está dividida con letras y la escena 1 está dividida con números. La nomenclatura para las diferentes extensiones es:

  • Escenas con el mismo gráfico, pero diferentes pruebas: *_1,2,3
  • Escenas con gráficos diferentes, pero mismas pruebas: *_a,b,c
Escena Número de pruebas Tiempo de ejecución de Pixel 4 (min:seg)
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

Cambios de prueba

Pruebas actualizadas para usar el primer nivel de API

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

Escena Nombre de la prueba Primer nivel de API Descripción
0 test_tonemap_curve 30 Asegúrese de que la canalización tenga salidas de color adecuadas con un mapa de tonos lineal y una entrada de imagen ideal (se basa en test_test_patterns ).
1 test_ae_precapture_trigger 29 Pruebe la máquina de estado AE cuando utilice el activador de precaptura. Asegúrese de que el disparador de precaptura de AE ​​deshabilitado no tenga efecto.
test_channel_saturation 29 Asegúrese de que los canales RGB se saturen a valores similares para eliminar el tinte en las regiones saturadas.
2_a/b/c test_num_faces 29 Aumente la diversidad de edades en las escenas faciales.

Pruebas con cambios

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

Escena Nombre de la prueba Primer nivel de API Descripción de los cambios
1 test_burst_sameness_manual 30 Reducir la tolerancia al 2%.
4 test_aspect_ratio_and_crop 30 Cambiar para ejecutar en dispositivos LIMITADOS.
test_multi_camera_alignment 30 Recorra las cámaras individualmente si la captura multicámara no es compatible. Vuelva a trabajar la lógica de selección de cámaras para tener en cuenta los sistemas de tres y cuatro cámaras, y omita las cámaras monocromáticas, solo de profundidad e 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.

Escena Nombre de la prueba Primer nivel de API Descripción
0 test_vibration_restrictions 30 Asegúrese de que las alertas y las vibraciones no se activen durante las capturas de imágenes.
2_a test_jpeg_quality 30 Pruebe que las tablas de cuantificación reducen la compresión para aumentar la calidad de JPEG.
2_d/2_e test_num_faces 30 Aumentar la diversidad de edad de la cara.
2_e test_continuous_picture 30 Asegúrese de que 3A se establezca en android.control.afAvailableModes = CONTINUOUS_PICTURE.
cambio test_scene_change 31 android.control.afSceneChange afirmado en el cambio de 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 ITS-in-a-box.

afirma

  • Sin vibraciones durante el uso de la cámara

scene2_a/prueba_jpeg_calidad

Método

Las diferentes partes del archivo JPEG están definidas por marcadores de 2 bytes. Para obtener más información, consulte 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 siguientes dos elementos de la lista son el tamaño. El marcador de tamaño JPEG DQT suele ser [0, 132] = 256*0+132 = 132, lo que representa el tamaño de los datos DQT en la captura JPEG. Los datos incrustados tienen el 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 consistentes para varios dispositivos, incluidos teléfonos que separan las dos matrices en secciones DQT separadas en el archivo JPEG. Las matrices de luminancia tienden a 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 muestras de matrices de luminancia y croma extraídas para factores de calidad de 85 y 25 para la cámara trasera del Pixel 4 que captura la escena 2_a con el equipo de prueba ITS. Los valores de la matriz aumentan (lo que indica una mayor compresión) sustancialmente para la configuración de menor calidad. Estas matrices solo se imprimen con el script si se aplica el indicador debug=True . Tenga en cuenta la mayor variación en las entradas en las matrices luma en comparación con las matrices croma.

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

La Figura 3 muestra los valores de matriz promedio para la cámara trasera del Pixel 4 en comparación con la calidad JPEG. A medida que aumenta la calidad JPEG, el nivel de compresión (promedio de matriz DQT de luminancia/croma) disminuye.

Valores matriciales medios de Pixel 4

Figura 3. Promedios de la matriz DQT de luminancia/croma de la cámara trasera del Pixel 4 en comparación con la calidad JPEG

afirma

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

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

Ejemplo de prueba fallida

Figura 4. Ejemplo de prueba fallida

escena2_d/e test_num_faces

Se agregan dos nuevas escenas de detección de rostros para aumentar la diversidad facial de las comprobaciones del algoritmo de detección de rostros. Con pruebas repetidas de varias cámaras, se espera que la cara más desafiante sea la cara más a la izquierda en scene2_d. En particular, hay un sombrero y una barba en el modelo, algo nuevo en las escenas de la cara. Las nuevas escenas se muestran en las figuras 5 y 6.

escena2_d

Figura 5. escena2_d

escena2_e

Figura 6. escena2_e

afirma

  • num_faces == 3

escena2_e/prueba_imagen_continua

Método

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

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

afirma

  • 3A está en estado convergente al final de la captura.

cambio_escena/cambio_escena_prueba

Método

Se habilita una nueva prueba para probar si el indicador android.control.afSceneChange se afirma con un cambio de escena. El cambio de escena hace uso de la tableta que muestra una escena facial y luego enciende y apaga la tableta para crear un cambio de escena. La escena reutiliza scene2_e pero está en una escena separada debido al control de tableta requerido.

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

La Figura 7 muestra un diagrama de tiempo de la prueba. El tiempo entre el apagado de la pantalla y la captura se ajusta en función de los resultados de eventos de capturas anteriores.

Diagrama de tiempo para test_scene_change

Figura 7. Diagrama de tiempo para test_scene_change

Condiciones de turno:

  • 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 desplaza 5 fotogramas antes para dar más tiempo para que afSceneChange se confirme.
  • 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 desplaza 30 fotogramas antes para obtener el cambio de escena en la captura.

afirma

  • La pantalla (escena) cambia.
  • El indicador afSceneChange está en [0, 1].
  • Si no cambia la escena, 3A converge (funcionalmente idéntico a test_continuous_picture ).
  • Si afSceneChange == 1 , el brillo debe cambiar en la escena.
  • PASS en seis intentos cambiando el tiempo según los resultados anteriores.

escena6/prueba_zoom

Método

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

La Figura 8 muestra la nueva escena con una matriz regular de círculos. La matriz de círculos afloja los requisitos de centrado del DUT/gráfico y permite un círculo siempre cerca del centro de la imagen capturada. En esta escena, una matriz de círculos de 9x5 con un borde negro cubre toda la tableta. Un círculo se reemplaza con un cuadrado en la esquina superior derecha para mostrar la orientación. Los tamaños de los círculos tienen una característica con un área de aproximadamente 7500 píxeles ( radius=50pixels ) para un sensor de 4000x3000 capturado con un campo de visión (FoV) de aproximadamente 80 grados.

escena de prueba_zoom

Figura 8. escena test_zoom

Círculo encontrado de Pixel 4

Figura 9. Pixel 4 cam[0] zoom = [1, 3.33, 5.67, 8] imágenes con círculo encontrado

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

Encontrar círculos

La prueba incluye un método find_circle() usando findContours que encuentra todos los contornos y reduce 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 está cerca del área pi*r2 del contorno.

Rango de prueba

android.control.zoomRatioRange se divide en 10 pasos.

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

El zoom 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).

afirma

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

Aumento de las pruebas de cámara LIMITADAS

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

Escena 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

La figura 10 muestra el anillo decodificador secreto ITS de Android 11. El anillo decodificador secreto muestra qué ajustes de prueba están controlados por pruebas individuales. La puerta está codificada por colores para simplificar la visualización. Los principales elementos de compuerta son:

  • 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 la mayoría de las pruebas. Además, las pruebas que están habilitadas para dispositivos LIMITED se resaltan en verde claro.

anillo decodificador secreto

Figura 10. Anillo decodificador secreto de Android 11