Tests ITS des caméras

Cette page fournit une liste complète des tests de la suite de tests d'image de l'appareil photo (ITS, Camera Image Test Suite), qui fait partie du vérificateur de la suite de tests de compatibilité Android (CTS, Compatibility Test Suite). Les tests ITS sont des tests fonctionnels, ce qui signifie qu'ils ne mesurent pas la qualité de l'image, mais que toutes les fonctions de l'appareil photo annoncées fonctionnent comme prévu. Ce document permet aux développeurs et aux testeurs de comprendre ce que font les tests individuels et comment déboguer les échecs des tests.

L'ITS de l'appareil photo filtre les tests en fonction des propriétés de l'appareil photo requises, du niveau d'API et du niveau de la classe de performances multimédias (MPC). Pour le niveau d'API, ITS utilise ro.product.first_api_level pour contrôler les tests ajoutés à un niveau d'API spécifique qui testent les expériences utilisateur négatives pour les fonctionnalités des niveaux d'API inférieurs. ITS utilise ro.vendor.api_level pour contrôler les tests des fonctionnalités ajoutées à un niveau d'API spécifique qui nécessitent de nouvelles fonctionnalités matérielles. Si ro.odm.build.media_performance_class est défini pour un appareil, ITS nécessite l'exécution de tests spécifiques en fonction du niveau MPC.

Les tests sont regroupés par scène comme suit:

  • scene0:capture des métadonnées, du jitter, du gyroscope et des vibrations
  • scene1:exposition, sensibilité, compensation d'exposition, YUV par rapport à JPEG/RAW
  • scene2:détection de visage, tests nécessitant des scènes en couleur
  • scene3:amélioration des contours, mouvement de l'objectif
  • scene4:format, recadrage, champ de vision
  • scene5:ombre de l'objectif
  • scene6:zoom
  • scene7:contacteur multicaméra
  • scene8:mesure de la région AE et AWB
  • scene9:compression JPEG
  • scene_extensions:extensions de l'appareil photo
  • scene_flash:flash automatique, fréquence d'images minimale
  • scene_video:perte de frames
  • sensor_fusion:décalage de synchronisation de la caméra/du gyroscope
  • feature_combination:combinaisons de fonctionnalités

Consultez les sections individuelles pour obtenir une description de chaque scène.

scene0

Les tests Scene0 ne nécessitent aucune information de scène spécifique. Toutefois, le téléphone doit être immobile pour les tests du gyroscope et des vibrations.

test_jitter

Mesure le jitter dans les codes temporels de la caméra.

API testées:

Pass:il existe au moins un delta de 30 ms entre les images.

test_jitter_plot.png

test_jitter_plot.png (notez la petite plage de l'axe Y). Le jitter est en fait faible dans ce graphique.)

test_metadata

Vérifie la validité des entrées de métadonnées. Examine les résultats de capture et les objets de caractéristiques de l'appareil photo. Ce test utilise des valeurs d'exposition et de gain auto_capture_request, car le contenu de l'image n'est pas important.

API testées:

Pass:au niveau matériel, les balises rollingShutterSkew, frameDuration, timestampSource, croppingType, blackLevelPattern, pixel_pitch, FoV et la distance hyperfocale sont présentes et ont des valeurs valides.

test_request_capture_match

Vérifie que l'appareil écrit les valeurs d'exposition et de gain correctes en lisant les métadonnées de capture.

API testées:

Pass:les valeurs des métadonnées de la requête et de la capture correspondent pour tous les clichés.

test_sensor_events

Teste les requêtes de l'appareil et imprime les événements des capteurs pour les appareils qui annoncent la prise en charge de la fusion de capteurs. Les capteurs attendus sont l'accéléromètre, le gyroscope et le magnétomètre. Ce test ne fonctionne que si l'écran est allumé, ce qui signifie que l'appareil n'est pas en mode veille.

API testées:

Pass:les événements de chaque capteur sont reçus.

test_solid_color_test_pattern

Vérifie que les modèles de test de couleur unie sont générés correctement pour le masquage de la caméra. Si la désactivation du son de la caméra est prise en charge, les modèles de test de couleur unie doivent également l'être. Si la mise en sourdine de la caméra n'est pas prise en charge, les modèles de test de couleur unie ne sont testés que si la fonctionnalité est annoncée.

Si les images RAW sont prises en charge, l'attribution des couleurs est également testée. Les couleurs testées sont le noir, le blanc, le rouge, le bleu et le vert. Pour les appareils photo qui ne sont pas compatibles avec les images RAW, seul le noir est testé.

API testées:

Pass (Passer) : les modèles de test solides pris en charge sont de la bonne couleur et la variance de l'image est faible.

test_test_pattern

Teste le paramètre android.sensor.testPatternMode pour capturer des images pour chaque modèle de test valide et vérifie que les images sont générées correctement pour les couleurs unies et les barres de couleur. Ce test comprend les étapes suivantes:

  1. Capture des images pour tous les modèles de test compatibles.
  2. Effectue une vérification simple de l'exactitude pour le motif de test de couleur unie et les barres de couleur.

API testées:

Pass:les modèles de test compatibles sont générés correctement.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

Teste la conversion du modèle de test du format RAW au format YUV avec une carte de tons linéaire. Ce test nécessite android.sensor.testPatternMode = 2 (COLOR_BARS) pour générer un modèle d'image parfait pour la conversion de la carte de tons. S'assure que le pipeline dispose de sorties de couleur appropriées avec une carte de tons linéaire et une entrée d'image idéale (s'appuie sur test_test_patterns).

API testées:

Pass:le format YUV et le format RAW se ressemblent.

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

Vérifie si les événements d'image et de capteur de mouvement se trouvent dans le même domaine temporel.

API testées:

Pass (Passer) : les codes temporels de mouvement se trouvent entre les deux codes temporels d'image.

test_vibration_restriction

Vérifie si la vibration de l'appareil fonctionne comme prévu.

API testées:

Pass:l'appareil ne vibre pas lorsque le son est coupé par l'API de restriction audio de la caméra.

scene1

scene1 est un graphique gris. Le graphique gris doit couvrir 30% du champ de vision de la caméra au centre. Le graphique gris devrait mettre à l'épreuve les 3A (exposition automatique, balance des blancs automatique, mise au point automatique) de manière modérée, car la région centrale ne comporte aucune caractéristique. Toutefois, la requête de capture spécifie l'ensemble de la scène, qui comprend suffisamment de caractéristiques pour que la convergence 3A soit possible.

Les caméras à champ de vision étroit peuvent être testées dans le banc d'essai à champ de vision large ou à champ de vision étroit. Si une caméra RFoV est testée dans le banc d'essai WFoV, le graphique est mis à l'échelle de ⅔ pour garantir certaines limites pour le graphique gris dans le champ de vision afin d'aider la convergence 3A. Pour en savoir plus sur les bancs d'essai de caméra, consultez ITS-in-a-box pour caméra.

scene1

scene1: graphique en taille réelle (à gauche). Graphique à échelle ⅔ (à droite).

test_ae_precapture_trigger

Teste la machine d'état AE lorsque vous utilisez le déclencheur de précapture. Capture cinq requêtes manuelles avec AE désactivé. La dernière requête comporte un déclencheur de précapture AE, qui doit être ignoré, car AE est désactivé.

API testées:

Pass:l'AE converge.

test_auto_vs_manual

Les tests qui ont capturé des clichés automatiques et manuels se ressemblent.

API testées:

Pass:les gains et la transformation de la balance des blancs manuelle indiqués dans chaque résultat de capture correspondent à la balance des blancs automatique estimate de l'algorithme 3A de l'appareil photo.

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

test_black_white

Vérifie que l'appareil produit des images en noir et blanc. Prend deux captures, la première avec un gain extrêmement faible et une exposition courte, ce qui donne une photo noire, et la seconde avec un gain extrêmement élevé et une exposition longue, ce qui donne une photo blanche.

API testées:

Pass:produit des images en noir et blanc. Les canaux saturés des images blanches ont des valeurs RVB de [255, 255, 255] avec une marge d'erreur inférieure à 1 %.

test_black_white_black test_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_capture

Vérifie que l'ensemble du pipeline de capture peut suivre la vitesse de capture en taille réelle et le temps de processeur.

API testées:

Pass:capture une série d'images en taille réelle, vérifie les pertes de trames et la luminosité de l'image.

test_burst_sameness_manual

Prend cinq rafales de 50 images avec le paramètre de capture manuelle et vérifie qu'elles sont toutes identiques. Ce test permet d'identifier si des images sporadiques sont traitées différemment ou présentent des artefacts.

API testées:

Pass:les images sont identiques visuellement et en termes de valeurs RVB.

Échec:indique une pointe ou une baisse du graphique de la moyenne RVB au début de chaque rafale.

  • La tolérance est de 3% pour first_API_level < 30
  • La tolérance est de 2% pour 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_capture_result

Vérifie que des données valides sont renvoyées dans des objets CaptureResult. Effectue une capture automatique, manuelle et automatique.

API testées:

Pass:les métadonnées sont valides pour toutes les captures et les paramètres manuels ne se propagent pas dans la deuxième capture automatique. Représente la correction de l'ombre de l'objectif pour les prises de vue.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Vérifie que les flux RAW ne peuvent pas être recadrés.

API testées:

Pass:les images YUV sont recadrées au centre, mais pas les images 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

test_crop_regions

Vérifie que les régions de recadrage fonctionnent. Prend une image complète et crée des corrections de cinq régions différentes (coins et centre). Prend des images avec un recadrage défini pour les cinq régions. Compare les valeurs du correctif et de l'image recadrée.

API testées:

Pass:l'image de la zone recadrée correspond à la zone correspondant à l'image recadrée.

test_dng_noise_model

Vérifie que les paramètres du modèle RAW DNG sont corrects. Le graphique représente la variance mesurée d'une zone centrale de la carte grise dans des prises de vue brutes capturées sur une plage de sensibilités, et compare ces valeurs à la variance attendue à chaque sensibilité par le modèle de bruit DNG dans le HAL de l'appareil photo (en fonction des paramètres O,S renvoyés dans les objets de résultat de capture). Pour en savoir plus sur le modèle de bruit DNG, téléchargez le document suivant sur le modèle de bruit DNG.

API testées:

Pass:les paramètres du modèle brut DNG sont corrects. Les valeurs RVB attendues correspondent à celles des valeurs RVB réelles mesurées.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Vérifie que la correction de la valeur d'exposition (EV) est appliquée. Le test augmente l'exposition en huit étapes et vérifie la luminosité mesurée par rapport à la luminosité attendue. Les valeurs attendues sont calculées à partir de la luminosité de l'image sans compensation EV appliquée. La valeur attendue saturera si les valeurs calculées dépassent la plage de valeurs d'image réelle. Le test échoue si les valeurs attendues et les valeurs mesurées ne correspondent pas ou si les images sont surexposées au bout de cinq étapes.

API testées:

Pass:les images montrent une exposition croissante sans surexposition en cinq étapes.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

Vérifie que la compensation d'exposition est appliquée à l'aide d'une plage créée avec CONTROL_AE_COMPENSATION_STEP. Huit images sont capturées à chaque valeur de compensation.

API testées:

Pass:les captures enregistrent une augmentation de la luminance avec un paramètre de compensation EV plus élevé, et les huit images capturées pour chaque paramètre de compensation EV ont des valeurs de luminance stables.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure_x_iso

Vérifie qu'une exposition constante est obtenue lorsque l'ISO et la durée d'exposition varient. Prend une série de clichés dont l'ISO et le temps d'exposition sont choisis pour s'équilibrer. Les résultats doivent avoir la même luminosité, mais au fil de la séquence, l'image doit devenir plus bruiteuse. Vérifie que les valeurs moyennes des pixels de l'échantillon sont proches les unes des autres. S'assure que les images ne sont pas limitées à 0 ou 1 (ce qui les ferait ressembler à des lignes plates). Le test peut également être exécuté avec des images RAW en définissant l'indicateur debug dans votre fichier de configuration.

API testées:

Échec:les images ont la même luminosité, mais elles sont plus bruiteuses avec une sensibilité ISO plus élevée. Les plans RVB sont plats lorsque la valeur de l'exposition ISO* est constante sur l'espace de gain testé.

Mécanisme d'échec:

  • Dans test_exposure_plot_means.png, à mesure que les valeurs du multiplicateur de gain (axe X) augmentent, les valeurs moyennes du plan RGB normalisé (axe Y) commencent à s'écarter des valeurs du multiplicateur de gain faible.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00 test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

Les tests ont montré que les images YUV converties et les images JPEG de l'appareil avaient la même apparence. Le test prend le centre de 10% de l'image, calcule la valeur RVB et vérifie qu'elle correspond.

API testées:

Passé:la différence moyenne entre les valeurs RVB de chaque image est inférieure à 3%.

test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

Vérifie que les paramètres (exposition et gain) se verrouillent sur le cadre de droite pour les caméras FULL et LEVEL_3. Prend une série de clichés à l'aide de requêtes consécutives, en modifiant les paramètres de la requête de capture entre les clichés. Vérifie que les images ont les propriétés attendues.

API testées:

Pass:les images [2, 3, 6, 8, 10, 12, 13] ont une sensibilité ISO ou une exposition plus élevée et affichent des moyennes RVB plus élevées sur test_latching_plot_means.png.

test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_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

test_linearity

Vérifie que le traitement de l'appareil peut être inversé en pixels linéaires. Capture une séquence de prises de vue avec l'appareil pointé vers une cible uniforme.

API testées:

Pass:les valeurs R, G et B doivent augmenter de manière linéaire avec l'augmentation de la sensibilité.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Teste le verrouillage 3A et la rafale YUV (à l'aide du paramètre automatique). Ce test est conçu pour réussir même sur les appareils limités qui ne disposent pas de MANUAL_SENSOR ou de PER_FRAME_CONTROLS. Le test vérifie la cohérence des images YUV, tandis que la vérification de la fréquence d'images se trouve dans CTS.

API testées:

Pass:les captures semblent cohérentes.

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

test_param_color_correction

Vérifie que les paramètres android.colorCorrection.* sont appliqués lorsqu'ils sont définis. Prend des clichés avec différentes valeurs de transformation et de gain, et vérifie qu'ils ont un aspect différent en conséquence. La transformation et les gains sont choisis pour rendre la sortie de plus en plus rouge ou bleue. Utilise une carte de tons linéaire. La cartographie des tons est une technique utilisée dans le traitement d'image pour mapper un ensemble de couleurs sur un autre afin d'approcher l'apparence des images HDR sur un support dont la plage dynamique est plus limitée.

API testées:

Pass (Transmettre) : les valeurs R et B sont amplifiées en fonction de la transformation.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*L'axe X correspond aux requêtes de capture: 0 = unité, 1=boost rouge, 2= boost bleu

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 boost)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (accentuation du B)

test_param_flash_mode

Vérifie que le paramètre android.flash.mode est appliqué. Définit manuellement l'exposition sur le côté sombre, de sorte qu'il soit évident si le flash s'est déclenché ou non, et utilise une carte de tons linéaire. Vérifie le centre avec l'image de la carte pour voir s'il existe un grand dégradé créé pour vérifier si le flash s'est déclenché.

API testées:

Pass (Passer) : le centre de l'image de la carte présente un grand dégradé, ce qui signifie que le flash s'est déclenché.

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_noise_reduction

Vérifie que le paramètre android.noiseReduction.mode est appliqué correctement lorsqu'il est défini. Prend des images avec un éclairage faible. Utilise un gain analogique élevé pour s'assurer que l'image capturée est bruitée. Capture trois images pour les modes NR désactivé, "rapide" et "haute qualité". Capture également une image avec un gain faible et la réduction du bruit désactivée, et utilise la variance de celle-ci comme référence. Plus le rapport signal/bruit est élevé, meilleure est la qualité de l'image.

API testées:

Pass:le rapport signal/bruit varie selon les différents modes de réduction du bruit et se comporte de manière similaire au graphique ci-dessous.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: OFF, 1: FAST, 2: HQ, 3: MIN , 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_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_shading_mode

Vérifie que le paramètre android.shading.mode est appliqué.

API testées:

Pass:les modes d'ombrage sont activés et les cartes d'ombrage de l'objectif sont modifiées comme prévu.

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

Vérifie que le paramètre android.tonemap.mode est appliqué. Applique différentes courbes de mappage des tons à chaque canal R, G et B, et vérifie que les images de sortie sont modifiées comme prévu. Ce test se compose de deux tests, test1 et test2.

API testées:

Pass :

  • test1: les deux images ont un mappage des tons linéaire, mais n=1 présente un gradient plus prononcé. Le canal G (vert) est plus clair pour l'image n=1.
  • test2: même mappage des tons, mais longueur différente. Les images sont identiques.
test_param_tonemap_mode_n=0.jpg test_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

Vérifie l'amélioration de la sensibilité RAW. Capture un ensemble d'images RAW et YUV avec une sensibilité différente, publie la combinaison d'amélioration de la sensibilité RAW et vérifie si la moyenne des pixels de sortie correspond aux paramètres de la requête.

API testées:

Pass:les images RAW deviennent plus sombres à mesure que le boost augmente, tandis que la luminosité des images YUV reste constante.

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_burst_sensitivity

Capture un ensemble d'images brutes avec des gains croissants et mesure le bruit. Captures en mode RAW uniquement, en rafale.

API testées:

Pass:chaque prise de vue est plus bruyante que la précédente, car le gain augmente.

Utilise la variance de la cellule de la grille des statistiques du centre.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Capture un ensemble d'images brutes avec une durée d'exposition croissante et mesure les valeurs de pixel.

API testées:

Pass:augmenter la valeur ISO (gain) rend les pixels plus sensibles à la lumière, ce qui fait que le graphique se déplace vers la gauche.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ correspond à 1 ms, 10¹ à 10 ms et 10⁻¹ à 0, 1 ms)

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_raw_sensitivity

Capture un ensemble d'images brutes avec des sensibilités croissantes et mesure le bruit (variance) dans les 10% centraux de l'image. Vérifie que chaque prise de vue est plus bruyante que la précédente.

API testées:

Pass (Passe) : la variance augmente à chaque prise de vue.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

Tests que android.noiseReduction.mode applique pour les requêtes de retraitement. Capture des images retravaillées lorsque l'appareil photo est faiblement éclairé. Utilise un gain analogique élevé pour s'assurer que l'image capturée est bruiteuse. Capture trois images retravaillées, pour la NR désactivée, "rapide" et "haute qualité". Capture une image retravaillée avec un gain faible et le bruit de réduction désactivé, et utilise la variance de cette image comme référence.

API testées:

Pass:FAST >= OFF, HQ >= FAST, HQ >> OFF

Graphique typique de SNR par rapport à NR_MODE

Graphique typique de SNR par rapport à NR_MODE

test_tonemap_sequence

Teste une séquence de prises de vue avec différentes courbes de mappage des tons. Capture trois clichés manuels avec une carte de tons linéaire. Prend trois clichés manuels avec la carte de tons par défaut. Calcule le delta entre chaque paire d'images consécutives.

API testées:

Pass:trois trames identiques sont suivies d'un autre ensemble de trois trames identiques.

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

Vérifie que toutes les tailles et tous les formats signalés pour la capture d'image fonctionnent. Utilise une requête manuelle avec une carte de tons linéaire afin que les formats YUV et JPEG se ressemblent lorsqu'ils sont convertis par le module image_processing_utils. Les images ne sont pas enregistrées par défaut, mais peuvent l'être en activant debug_mode.

API testées:

Pass:tous les centres d'image présentent une différence RMS (valeur quadratique moyenne d'un signal) maximale dans les images converties en RVB avec 3% de l'image YUV de la plus haute résolution.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Vérifie que les tailles et formats signalés pour la capture d'image fonctionnent.

API testées:

Pass (Passer) : le test se termine et renvoie les images demandées.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Teste la capture d'un seul frame en tant que sortie YUV et JPEG. Utilise une requête manuelle avec une carte de tons linéaire afin que les formats YUV et JPEG se ressemblent lorsqu'ils sont convertis par le module image_processing_utils.

API testées:

Pass:les images YUV et JPEG sont similaires et présentent une différence RMS (valeur racine carrée de la moyenne quadratique d'un signal) inférieure à 1 %.

test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Teste la capture d'une seule image en tant que sortie RAW/RAW10/RAW12 et YUV, le cas échéant. Utilise une requête manuelle avec une carte de tons linéaire. Par conséquent, les formats brut et YUV devraient être identiques. Compare les valeurs RVB de 10% au centre des images converties en RVB. Journauxandroid.shading.mode.

API testées:

Pass:les images YUV et brutes sont similaires et présentent une différence RMS (valeur racine carrée moyenne d'un signal) inférieure à 3,5 %.

test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

scene2_a

scene2_a comporte trois visages sur un fond gris et des vêtements neutres. Les visages sont choisis pour présenter un large éventail de couleurs de peau. Le graphique doit être orienté correctement pour que la détection de visages fonctionne de manière optimale.

scene2_a

scene2_a

test_autoframing

Teste le comportement de cadrage automatique de l'appareil photo. Effectue un zoom important pour qu'aucun des visages de la scène ne soit visible, active le mode de cadrage automatique en définissant AUTOFRAMING dans CaptureRequest sur True, puis vérifie si tous les visages de la scène d'origine peuvent être détectés lorsque l'état converge (c'est-à-dire lorsque AUTOFRAMING_STATE dans CaptureResult est défini sur AUTOFRAMING_STATE_CONVERGED).

API testées:

OK:les trois visages sont détectés.

test_display_p3

Test de la capture Display P3 au format JPEG à l'aide de l'API ColorSpaceProfiles. Vérifie que le fichier JPEG capturé comporte un profil ICC approprié dans son en-tête et que l'image contient des couleurs en dehors de la gamme sRGB.

API testées:

Pass:le fichier JPEG contient un profil ICC Display P3 et des couleurs en dehors de la gamme sRGB.

test_effects

Capture le frame pour les effets d'appareil photo compatibles et vérifie s'ils sont générés correctement. Le test ne vérifie que les effets OFF et MONO, mais enregistre des images pour tous les effets compatibles.

API testées:

Pass:capture l'image de la scène avec les effets OFF et une image monochrome avec les effets définis sur MONO.

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

Teste différentes combinaisons de formats de sortie.

API testées:

Pass (Réussite) : toutes les combinaisons sont correctement capturées.

test_num_faces

Teste la détection des visages.

API testées:

Pass (Passer) : détecte trois visages.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_reprocess_uv_swap

Vérifie que le retraitement YUV n'échange pas les plans U et V. Pour ce faire, la somme des différences absolues (SAD) entre l'image retravaillée et une capture non retravaillée est calculée. Si l'échange des plans U et V de sortie de la capture retravaillée entraîne une augmentation de la SAD, on suppose que la sortie comporte les plans U et V corrects.

API testées:

Pass:les plans U et V ne sont pas permutés.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scene2_b

test_num_faces

Teste la détection des visages avec une plus grande diversité de carnations dans les scènes de visages.

API testées:

Pass:trois visages sont détectés.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Capture deux images à l'aide des plus grands formats YUV et JPEG courants avec le même format d'image que le plus grand format JPEG, sans dépasser une résolution de 1 920 x 1 440 pixels. Définit jpeg.quality sur 100 et capture une requête à deux surfaces. Convertit les deux images en tableaux RVB et calcule la différence RMS (Root Mean Square) 3D entre les deux images.

De plus, ce test vérifie que les sorties YUV pour tous les cas d'utilisation de flux compatibles sont raisonnablement similaires à celles du YUV avec le cas d'utilisation STILL_CAPTURE.

API testées:

Pass:les images YUV et JPEG du cas d'utilisation STILL_CAPTURE présentent une différence RMS (valeur quadratique moyenne d'un signal) inférieure à 3 %. Les images YUV de tous les cas d'utilisation compatibles présentent une différence RMS inférieure à 10% par rapport aux images YUV du cas d'utilisation STILL_CAPTURE.

scene2_c

test_num_faces

Teste la détection des visages avec une plus grande diversité de carnations dans les scènes de visages.

API testées:

Pass:trois visages sont détectés.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Teste la latence de capture JPEG pour la classe de performances S, comme spécifié dans la section 2.2.7.2 Caméra du CDD.

Pass:la latence de capture JPEG camera2 doit être inférieure à 1 000 ms pour la résolution 1080p, comme mesuré par le test de performances de la caméra CTS dans les conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.

test_camera_launch_perf_class

Teste la latence de lancement de l'appareil photo pour la classe de performances S, comme indiqué dans la section 2.2.7.2 Appareil photo du CDD.

Pass:la latence de démarrage de Camera2 (ouverture de la caméra au premier frame d'aperçu) doit être inférieure à 600 ms, comme mesuré par le test de performances de la caméra CTS dans les conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.

test_default_camera_hdr

Vérifie que la capture par défaut de l'appareil photo est Ultra HDR pour la classe de performances 15, comme indiqué dans la section 2.2.7.2 Appareil photo du CDD.

Pass:la capture de package par défaut de la caméra DOIT être Ultra HDR pour un appareil de classe de performances 15.

scene2_d

test_num_faces

Teste la détection des visages avec une plus grande diversité de carnations dans les scènes de visages.

API testées:

Pass:trois visages sont détectés.

scene2_e

test_continuous_picture

50 cadres en résolution VGA sont capturés avec le premier paramètre de la requête de capture :android.control.afMode = 4 (CONTINUOUS_PICTURE).

API testées:

Pass (Passer) : le système 3A se stabilise à la fin d'une capture de 50 cadres.

test_num_faces

Teste la détection des visages avec une plus grande diversité de carnations dans les scènes de visages.

API testées:

Pass:trois visages sont détectés.

scene2_f

scene2_f comporte trois visages sur un arrière-plan blanc et des vêtements blancs. Les visages présentent une large gamme de tons de peau et un contraste élevé avec l'arrière-plan.

scene2_f.png

scene2_f

test_num_faces

Teste la détection des visages avec une plus grande diversité de carnations dans les scènes de visages.

API testées:

Pass:trois visages sont détectés.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

scene3

Scene3 utilise le graphique ISO12233, et la plupart des tests utilisent une méthode d'extraction de graphique pour trouver le graphique dans la scène. C'est pourquoi la plupart des images enregistrées n'ont pas de bordures comme les images des scènes 1, 2 ou 4, mais uniquement le graphique. Le graphique doit être dans la bonne orientation pour que le sélecteur de graphiques fonctionne de manière optimale.

test_edge_enhancement

Vérifie que le paramètre android.edge.mode est appliqué correctement. Capture des images non retravaillées pour chaque mode de bordure et renvoie la netteté de l'image de sortie et les métadonnées de résultat de capture. Traite une requête de capture avec un mode de bord, une sensibilité, un temps d'exposition, une distance de mise au point et un paramètre de surface de sortie donnés.

Pass:le mode HQ (2) est plus net que le mode OFF (0). Le mode FAST (1) est plus net que le mode OFF. Le mode HQ est plus net ou égal au mode FAST.

API testées:

Paramètres de la caméra concernés:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (mode rapide)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (mode Haute qualité)

test_flip_mirror

Vérifie si l'image est correctement orientée conformément à la section 7.5.2 de la CDD (Caméra avant [C-1-5]).

Les images en miroir, inversées ou pivotées peuvent être identifiées par le losange situé près du centre.

Pass:l'image n'est pas inversée, mise en miroir ni pivotée.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_imu_drift

Vérifie si l'unité de mesure inertielle (IMU) produit une sortie stable pendant 30 secondes lorsque l'appareil est à l'arrêt et qu'il capture un aperçu haute définition.

API testées:

Pass :

  • La dérive du gyroscope est inférieure à 0,01 rad pendant la durée du test.
  • La variance de la lecture du gyroscope est inférieure à 1E-7 rad2/s2/Hz au cours de la durée du test.
  • La dérive du vecteur de rotation est inférieure à 0,01 rad pendant la durée du test.
  • (Pas encore obligatoire) la dérive du gyroscope est inférieure à 1 degré par seconde.

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

Vérifie si le forçage du mode paysage en mode portrait fonctionne correctement pour les capteurs orientés en mode paysage.

API testées:

Pass (Échec) : le test parvient à localiser un graphique avec la rotation attendue (0 degrés lorsque le forçage du mode paysage en mode portrait est désactivé, 90 degrés lorsqu'il est activé).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Vérifie si l'indicateur de mouvement de l'objectif est correctement signalé. Capture une rafale de 24 images, dont les 12 premières sont prises à la distance de mise au point optimale (déterminée par 3A) et les 12 dernières à la distance de mise au point minimale. Vers le frame 12, l'objectif bouge, ce qui entraîne une baisse de la netteté. La netteté se stabilise finalement lorsque l'objectif atteint sa position finale. L'indicateur de mouvement de l'objectif doit être défini dans tous les frames où la netteté est intermédiaire par rapport à la netteté des premiers frames où l'objectif est fixe à la distance focale optimale et des derniers frames où l'objectif est fixe à la distance focale minimale. Le frame exact sur lequel l'objectif se déplace n'est pas important: ce qui est vérifié est que l'indicateur de mouvement est affirmé lorsque l'objectif se déplace.

API testées:

Pass (Passer) : l'indicateur de mouvement de l'objectif est True dans le frame avec un changement de netteté.

Mécanismes de défaillance:

  • lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) dans test_log.DEBUG n'est affirmé que dans les images où la netteté ne change pas.
  • Les images avec lens_moving: False (android.hardware.camera2.CaptureResult#LENS_STATE = 0) dans test_log.DEBUG présentent une différence de netteté par rapport aux premières images à la distance focale optimale ou aux dernières images à la distance de mise au point minimale.

test_reprocess_edge_enhancement

Vérifie si les méthodes de retraitement compatibles pour l'amélioration des contours fonctionnent correctement. Traite une requête de capture avec un mode de bord de retraitement donné et compare différents modes de capture avec les modes de bord de retraitement désactivés.

API testées:

Pass:La netteté des différents modes de bordure est correcte. HQ (mode 2) est plus net que OFF (mode 0), et l'amélioration entre les différents modes est similaire.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

scene4

La scène 4 se compose d'un cercle noir sur un arrière-plan blanc, dans un carré. Les tests dans scene4 peuvent être sensibles à l'alignement. À partir de la version 15, vous pouvez donc utiliser check_alignment.py dans le répertoire d'outils pour activer une vérification de l'unité de test et de l'alignement du graphique.

scene4

scene4

test_30_60fps_preview_fov_match

Vérifie que les vidéos d'aperçu en 30 FPS et 60 FPS ont le même champ de vision. Le test capture deux vidéos, l'une à 30 FPS et l'autre à 60 FPS. Un frame représentatif est sélectionné dans chaque vidéo et analysé pour s'assurer que les changements de champ de vision des deux vidéos sont conformes aux spécifications. Vérifie que les proportions du cercle restent constantes, que le centre du cercle reste stable et que le rayon du cercle reste constant.

API testées:

Passé:les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le changement maximal de format entre les vidéos en 30 FPS et 60 FPS ne dépasse pas 7,5%

Mécanismes d'échec:

  • La taille du cercle de la vidéo à 30 FPS est très différente de celle de la vidéo à 60 FPS.
  • Le cercle de l'image capturée est déformé par le pipeline de traitement.
  • Le cercle de l'image capturée est recadré en raison d'une demande de capture avec des proportions extrêmes, ce qui réduit la hauteur ou la largeur de l'image.
  • Le cercle de l'image capturée présente un reflet au centre et ne semble pas complètement rempli.

test_aspect_ratio_and_crop

Vérifie si les images sont déformées ou recadrées de manière inattendue dans le pipeline d'images. Prend en photo un cercle dans tous les formats. Vérifie que le cercle n'est pas déformé, qu'il ne se déplace pas du centre de l'image et qu'il ne change pas de taille de manière incorrecte avec différents formats ou résolutions.

API testées:

Pass:les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le champ de vision maximal est préservé.

Mécanismes d'échec:

  • La caméra n'est pas alignée sur le cercle affiché sur la tablette au centre de la scène capturée.
  • Le cercle de l'image capturée est déformé par le pipeline de traitement.
  • L'image basse résolution est recadrée deux fois dans le pipeline d'image, ce qui crée un champ de vision différent entre les images haute et basse résolution.
  • Le cercle de l'image capturée est recadré en raison d'une demande de capture avec des proportions extrêmes, ce qui réduit la hauteur ou la largeur de l'image.
  • Le cercle de l'image capturée présente un reflet au centre et ne semble pas entièrement rempli.

test_multi_camera_alignment

Teste les paramètres de calibrage de la caméra liés au positionnement de la caméra pour les systèmes multicaméras. À l'aide des sous-caméras physiques multicaméras, prend une photo avec l'une des caméras physiques. Détermine le centre du cercle. Projette le centre du cercle sur les coordonnées mondiales pour chaque caméra. Compare la différence entre les centres des cercles des caméras en coordonnées mondiales. Reprojette les coordonnées mondiales en coordonnées de pixel et les compare aux originales pour vérifier leur validité. Compare les tailles des cercles pour vérifier si les longueurs focales des caméras sont différentes.

API testées:

Pass:les centres et les tailles des cercles sont conformes aux attentes dans les images projetées par rapport aux images capturées à l'aide des données de calibrage de l'appareil photo et des longueurs focales.

Mécanismes de défaillance:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION ou LENS_POSE_ROTATION sont des valeurs de conception et non des données de calibrage réelles.
  • Le système de caméra n'est pas adapté à la configuration du test. Par exemple, test d'un système d'appareil photo grand angle et d'un système d'appareil photo ultra grand angle avec le banc d'essai RFoV. Pour en savoir plus, consultez les questions fréquentes 1 sur l'ITS tout-en-un pour caméras.

test_preview_aspect_ratio_and_crop

Comme le test test_aspect_ratio_and_crop pour les captures d'images fixes, ce test vérifie les formats de prévisualisation compatibles pour s'assurer que les cadres de prévisualisation ne sont pas étirés ni recadrés de manière inappropriée. Vérifie que le format du cercle ne change pas, que les images recadrées conservent le cercle au centre du cadre et que la taille du cercle ne change pas pour un format constant ou avec différentes résolutions (vérification du champ de vision).

API testées:

Pass:les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le champ de vision maximal est préservé.

test_preview_stabilization_fov

Vérifie les tailles d'aperçu compatibles pour s'assurer que le champ de vision est recadré de manière appropriée. Le test capture deux vidéos, l'une avec la stabilisation de l'aperçu ON et l'autre avec la stabilisation de l'aperçu OFF. Un frame représentatif est sélectionné dans chaque vidéo et analysé pour s'assurer que les changements de champ de vision des deux vidéos sont conformes aux spécifications.

API testées:

Pass:le format du cercle reste à peu près constant, l'emplacement du centre du cercle reste stable et la taille du cercle ne change pas de plus de 20%.

test_video_aspect_ratio_and_crop

Prend des vidéos d'un cercle dans un carré dans tous les formats vidéo. Extraction des images clés et vérification que le format du cercle ne change pas, que les images recadrées conservent le cercle au centre et que la taille du cercle ne change pas pour un format constant ou avec une résolution différente (vérification du champ de vision).

API testées:

Pass:les images vidéo ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le champ de vision maximal est préservé.

scene5

Scene5 nécessite une scène grise éclairée uniformément. Pour cela, un diffuseur est placé sur l'objectif de la caméra. Nous vous recommandons le diffuseur suivant : www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168.

Pour préparer la scène, fixez un diffuseur devant la caméra et orientez-la vers une source d'éclairage d'environ 2 000 lux. Les images capturées pour la scène 5 nécessitent un éclairage diffus sans éléments visibles. Voici un exemple d'image:

scene5

capture scene5

test_lens_shading_and_color_uniformity

Vérifie que la correction de l'ombre de l'objectif est appliquée de manière appropriée et que la couleur d'une scène monochrome uniforme est répartie uniformément. Effectue ce test sur un frame YUV avec 3A automatique. L'ombre de l'objectif est évaluée en fonction du canal Y. Mesure la valeur y moyenne pour chaque bloc d'échantillon spécifié, puis détermine si l'échantillon est accepté ou non en le comparant à la valeur y du centre. Le test d'uniformité des couleurs est évalué dans l'espace r/g et b/g.

API testées:

Pass (Passer) : pour réussir le test, la variance des valeurs r/g et b/g doit être inférieure à 20% à la circonférence spécifiée de l'image.

scene6

Scene6 est une grille de petits cercles avec un carré dans un coin pour indiquer l'orientation. Les petits cercles sont nécessaires pour tester la fonction de zoom sur une large plage. Les tests de la scène 6 peuvent être sensibles à l'alignement. À partir de la version 15, vous pouvez donc utiliser check_alignment.py dans le répertoire des outils pour activer une vérification de l'unité de test et de l'alignement du graphique.

scene6

scene6

test_in_sensor_zoom

Teste le comportement de la fonctionnalité de zoom dans le capteur de l'appareil photo, qui produit des images RAW recadrées.

Lorsque le cas d'utilisation du flux est défini sur CROPPED_RAW, le test effectue deux captures sur la plage de zoom, une image RAW à champ de vision (FoV) complet et une image RAW recadrée. Le test convertit les images en tableaux RVB, réduit la taille de l'image RAW recadrée en taille complète à celle indiquée par SCALER_RAW_CROP_REGION et calcule la différence RMS (racine carrée de la moyenne) 3D entre les deux images.

API testées:

Pass:la différence de racine carrée de l'erreur quadratique moyenne (RMSE, Root Mean Square Error) 3D entre l'image RAW recadrée et réduite et l'image RAW complète du champ de vision est inférieure au seuil défini dans le test.

test_zoom

Teste le comportement du zoom de l'appareil photo. Prend des captures sur la plage de zoom et vérifie si les cercles grossissent à mesure que la caméra fait un zoom avant. Pour chaque format (YUV, JPEG), la même session de capture d'appareil photo est utilisée pour converger 3A et effectuer des captures.

API testées:

Pass (Passer) : la taille relative du cercle capturé est exacte par rapport au format de zoom demandé pour s'assurer que l'appareil photo fait un zoom correct.

test_zoom

test_zoom pour trouver le contour du cercle le plus proche du centre.

test_low_latency_zoom

Teste le comportement du zoom à faible latence de la caméra. Effectue des captures sur la plage de zoom avec android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) et vérifie si les cercles des images de sortie correspondent aux ratios de zoom dans les métadonnées de capture. La même session de capture d'appareil photo est utilisée pour converger 3A et effectuer des captures.

API testées:

Pass (Passer) : la taille relative du cercle capturé est exacte par rapport aux métadonnées du résultat du rapport de zoom.

test_preview_video_zoom_match

Vérifie que lors de l'enregistrement et du zoom, l'aperçu vidéo et la sortie vidéo affichent et enregistrent la même sortie. Calcule la taille du cercle le plus proche du centre à différents ratios de zoom et vérifie si la taille du cercle augmente à mesure que le ratio de zoom augmente.

API testées:

Pass (Passer) : la taille relative du cercle capturé est exacte par rapport au rapport de zoom demandé dans la vidéo et l'aperçu.

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png (avant le zoom)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (avant le zoom)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (après zoom)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (après zoom)

test_preview_zoom

Vérifie que le rapport de zoom de chaque frame d'aperçu correspond aux métadonnées de capture correspondantes. Le test prend des images d'aperçu sur la plage de zoom et trouve le contour du cercle le plus proche du centre. Le test vérifie ensuite que le cercle sélectionné s'agrandit et que son centre s'éloigne du centre de l'image lorsque l'appareil photo fait un zoom avant.

API testées:

Pass (Passer) : la taille relative du cercle sélectionné est exacte pour le rapport de zoom indiqué du résultat de capture correspondant pour tous les cadres d'aperçu. La distance relative du cercle sélectionné par rapport au centre de l'image est exacte pour le rapport de zoom indiqué du résultat de capture correspondant de tous les cadres d'aperçu.

test_zoom

Images test_preview_zoom montrant le cercle sélectionné le plus proche du centre

test_session_characteristics_zoom

Teste la plage de rapport de zoom pour toutes les configurations de session compatibles listées dans CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION. Pour chacune de ces configurations, si CameraDeviceSetup#isSessionConfigurationSupported renvoie la valeur "true", le test vérifie que la plage de rapport de zoom renvoyée dans CameraDeviceSetup#getSessionCharacteristics peut être atteinte.

API testées:

Pass:les rapports de zoom minimal et maximal peuvent être atteints pour chaque SessionConfiguration compatible listé dans CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.

scene7

Scene7 est un cadre rectangulaire divisé en quatre quadrants égaux, chacun rempli d'une couleur différente. Au centre du rectangle se trouve un graphique de bord incliné pour vérifier la netteté. Quatre repères ArUco sont alignés sur les quatre coins extérieurs du rectangle pour vous aider à obtenir des coordonnées précises du cadre rectangulaire principal à différents ratios de zoom.

scene7

scene7

test_multi_camera_switch

Ce test vérifie que, lors de l'enregistrement en mode Aperçu avec différents rapports de zoom, le passage entre les objectifs ultra grand-angle (UW) et grand-angle (W) donne des valeurs RVB similaires.

Le test utilise différents rapports de zoom dans la plage prédéfinie pour effectuer un enregistrement d'aperçu dynamique et identifier le point auquel la caméra physique change. Ce point marque le passage de l'objectif ultra grand-angle à l'objectif grand-angle.

Les images capturées au point d'intersection et avant celui-ci sont analysées pour l'exposition automatique (AE), la balance des blancs automatique (AWB) et la mise au point automatique (AF).

La vérification de l'AE garantit que la variation de la luminance se situe dans la plage attendue pour les images avec les objectifs grand-angle et standard. La vérification de l'AWB vérifie que les ratios R/G et B/G sont compris dans les valeurs seuil pour les images avec l'objectif UW et l'objectif W. La vérification de la mise au point automatique évalue la valeur d'estimation de la netteté en fonction de l'intensité moyenne du gradient entre les images de l'objectif UW et de l'objectif W.

API testées:

Pass (Passer) : pour que le test réussisse, les vérifications AE, AWB et AF doivent toutes réussir. Voici les critères de chaque vérification:

  • Vérification de l'AE: la variation de la luminance entre les images de l'objectif grand-angle et de l'objectif ultra grand-angle doit être inférieure à 0,5%.
  • Vérification de l'AWB: la différence entre les valeurs R/G et B/G pour les images de l'objectif UW et de l'objectif W doit être inférieure à 0,5%.
  • Vérification de l'AF: la variation de la netteté de l'image entre les images de l'objectif grand-angle et de l'objectif ultra grand-angle doit être inférieure à 2%.

scene8

Scene8 est un cadre rectangulaire divisé en quatre régions égales, chacune contenant un portrait pris avec une exposition différente ou superposé à une nuance de couleur différente (teinte bleue, exposition accrue, exposition réduite, teinte jaune). Quatre repères ArUco sont alignés sur les quatre coins extérieurs du rectangle pour obtenir des coordonnées précises du cadre rectangulaire principal.

scene8

scene8

test_ae_awb_regions

Vérifie que les valeurs RVB et luma diffèrent lors de l'enregistrement d'aperçu dans différentes régions d'exposition automatique (AE) et de balance des blancs automatique (AWB).

Le test enregistre un enregistrement d'aperçu de huit secondes, effectuant une mesure AE et AWB sur chaque quadrant pendant deux secondes chacun. Le test extrait ensuite un frame de l'enregistrement de prévisualisation de chaque région et utilise les frames extraits pour effectuer les vérifications AE et AWB suivantes:

  • Vérification AE: vérifie que la mesure du cadre de la région avec une exposition réduite a une valeur de luma supérieure à 1% par rapport à la mesure du cadre de la région avec une exposition accrue. Cela permet de vérifier que les images sont éclaircies lors de la mesure d'une zone sombre.
  • Vérification de l'AWB: vérifie que le rapport entre le rouge et le bleu (des valeurs RVB moyennes de l'image) dans le cadre avec la zone de mesure bleue est supérieur à 2 % par rapport au cadre avec la zone de mesure jaune. Cela permet de vérifier que les images ont une valeur RVB équilibrée lors de la mesure d'une région jaune (chaude) ou bleue (froide).

API testées:

Pass (Passer) : les vérifications AE et AWB sont toutes deux réussies.

Mécanismes d'échec:

  • La détection précise des quatre repères ArUco est essentielle pour ce test. Si la détection initiale échoue, le système tente une deuxième détection à l'aide d'une version en noir et blanc de l'image. L'image en niveaux de gris suivante représente l'étape de traitement secondaire.

    Désalignement des repères ArUco

scene9

Scene9 se compose de milliers de cercles de taille et de couleur aléatoires pour créer une scène à répétabilité très faible afin de mettre à l'épreuve les algorithmes de compression JPEG.

scene9

scene9

test_jpeg_high_entropy

Vérifie que la compression JPEG de l'appareil photo fonctionne sur scene9 avec une entropie élevée et que le facteur de qualité JPEG est défini sur 100%. Le facteur de zoom est augmenté pour que la scène affichée sur la tablette remplisse le champ de vision de la caméra.

API testées:

Passé:le fichier JPEG est compressé, écrit et lu correctement à partir du disque.

test_jpeg_quality

Teste la qualité de compression JPEG de l'appareil photo. Étapes de qualité JPEG via android.jpeg.quality et assurez-vous que les tables de quantification changent correctement.

API testées:

Pass:la matrice de quantification diminue à mesure que la qualité augmente. (La matrice représente le facteur de division.)

test_jpeg_quality

Moyennes de la matrice DQT luma/chroma de la caméra arrière du Pixel 4 par rapport à la qualité JPEG

Échec de test_jpeg_quality

Exemple de test ayant échoué

Notez que pour les images de très faible qualité (jpeg.quality < 50), il n'y a pas d'augmentation de la compression dans la matrice de quantification.

scene_video

La scène scene_video est une scène vidéo. Il se compose de quatre cercles de couleurs différentes qui se déplacent de haut en bas à différentes fréquences d'images sur un fond blanc.

scene_video

test_preview_frame_drop

Vérifie que le débit d'images de l'aperçu demandé est maintenu avec une scène dynamique. Ce test s'exécute sur toutes les caméras exposées à des applications tierces.

API testées:

Pass (Échec) : la fréquence d'images de l'aperçu est au maximum de la plage de fréquence d'images demandée, et la variation moyenne entre les images consécutives est inférieure à la tolérance relative définie dans le test.

scene_extensions

Les tests scene_extensions sont destinés aux extensions d'appareil photo et doivent utiliser Camera ITS-in-a-Box, car ils nécessitent un contrôle précis de l'environnement de test. De plus, toutes les fuites de lumière doivent être contrôlées. Vous devrez peut-être recouvrir le banc d'essai, l'appareil sous test et la tablette d'un drap de protection, et éliminer les fuites de lumière de l'écran avant de l'appareil sous test.

scene_hdr

La scène scene_hdr se compose d'un portrait à gauche et d'un code QR à faible contraste à droite.

scene_hdr

scene_hdr

test_hdr_extension

Teste l'extension HDR. Prend des captures avec et sans l'extension activée, et vérifie si l'extension rend le code QR plus détectable.

API testées:

Pass:l'extension HDR réduit le nombre de modifications de contraste nécessaires pour détecter le code QR ou réduit le dégradé sur le code QR.

scene_low_light

La scène scene_low_light se compose d'une grille de carrés de différentes nuances de gris sur un arrière-plan noir, et la grille de carrés est délimitée par un contour rouge. Les carrés sont disposés selon une orientation de courbe de Hilbert.

scene_low_light

scene_low_light

test_night_extension

Teste l'extension de nuit. Effectue des captures avec l'extension activée et effectue les opérations suivantes:

  • Détecte la présence de 20 carrés
  • Calcule la luminance limitée par chaque carré
  • Calcule la valeur luma moyenne des six premiers carrés en fonction de l'orientation de la grille de la courbe de Hilbert
  • Calcule la différence de valeur luma des carrés consécutifs (par exemple, square2 - square1) jusqu'aux carrés 5 et 6 (square6 - square5), puis calcule la moyenne des cinq différences calculées.

API testées:

Pass (Échec) : la valeur luma moyenne des six premiers carrés doit être d'au moins 85, et la différence moyenne de la valeur luma des carrés consécutifs jusqu'aux carrés 5 et 6 doit être d'au moins 17.

Le graphique de luminance suivant montre à quoi ressemble un résultat de test réussi.

scene_low_light_night_pass

test_low_light_boost_extension

Teste le mode AE avec amplification luminosité faible. Si Camera2 est compatible avec le mode AE d'amplification de la luminosité, ce test est effectué pour Camera2. Si l'extension de l'appareil photo en mode Nuit est compatible et qu'elle prend en charge le mode AE avec amplification de la luminosité, ce test est également effectué pour l'extension de l'appareil photo en mode Nuit. Ce test définit le mode AE sur le renforcement de la lumière faible, extrait un frame de l'aperçu et effectue les opérations suivantes:

  • Détecte la présence de 20 boîtes
  • Calcule la luminance limitée par chaque cadre
  • Calcule la valeur luma moyenne des six premiers carrés en fonction de l'orientation de la grille de la courbe de Hilbert
  • Calcule la différence de valeur luma des carrés consécutifs (par exemple, square2 - square1) jusqu'aux carrés 5 et 6 (square6 - square5), puis calcule la moyenne des cinq différences calculées.

API testées:

Pass (Échec) : la valeur luma moyenne des six premiers carrés doit être d'au moins 70, et la différence moyenne de la valeur luma des carrés consécutifs jusqu'aux carrés 5 et 6 doit être d'au moins 17.

scene_flash

Les tests scene_flash nécessitent une scène sombre dans le champ de fusion des capteurs.

test_auto_flash

Vérifie que le flash automatique est déclenché dans une scène sombre pour les caméras arrière et avant. Pour les caméras avant, le flash automatique utilise l'écran pour éclairer la scène, et non un flash physique. Le test vérifie que le flash automatique est déclenché en vérifiant que le centre de l'image de la carte est plus lumineux lorsque le flash automatique est activé. Pour déclencher le flash automatique, les lumières du banc d'essai doivent être éteintes. Elles peuvent être éteintes automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement. L'application Jetpack Camera (JCA) doit être installée sur l'appareil avant les tests. Le flash automatique pour les appareils photo arrière repose sur l'état AE pour être déclenché, mais le flash automatique pour les appareils photo avant ne repose pas sur l'AE et est toujours déclenché.

API testées:

Pass (Passer) : le centre de l'image de la carte avec le flash automatique activé est plus clair que l'image de la scène d'origine pour toutes les caméras.

test_flash_strength

Vérifie que le contrôle de l'intensité du flash en mode SINGLE est implémenté correctement.

Vérifie que si l'appareil est compatible avec le contrôle de l'intensité du flash lors de l'utilisation de l'appareil photo en mode SINGLE, l'intensité du flash change en fonction des différents niveaux d'intensité demandés. Vérifie que le contrôle de l'intensité du flash fonctionne avec différents AE_MODES. Par exemple, si le mode d'exposition automatique est ON ou OFF, l'intensité du flash a un effet sur la luminosité. Si le mode est ON_AUTO_FLASH, l'intensité du flash n'a aucun effet sur la luminosité. Pour effectuer le test, les voyants du banc d'essai doivent être éteints. Ils peuvent être éteints automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement.

API testées:

Pass :

Lorsque le mode d'exposition automatique est ON ou OFF, la luminosité des zones de l'image augmente à mesure que le niveau d'intensité du flash passe de l'absence de flash à FLASH_SINGLE_STRENGTH_MAX_LEVEL. Lorsque le mode d'exposition automatique est ON_AUTO_FLASH, la différence de luminosité des zones de l'image est dans la tolérance lorsque le niveau d'intensité du flash passe de l'absence de flash à FLASH_SINGLE_STRENGTH_MAX_LEVEL.

test_led_snapshot

Vérifie que les instantanés LED ne saturent pas ni ne teintent pas l'image.

Ce test ajoute un contrôleur d'éclairage à la boîte de fusion de capteurs pour contrôler les lumières. Lorsque les lumières sont définies sur OFF, le test effectue une capture avec le mode AUTO_FLASH défini sur ON. Lors de cette capture, le test exécute une séquence de précapture avec le déclencheur aePrecapture défini sur START et définit l'intent de capture sur Preview pour effectuer la capture avec flash.

Étant donné que la capture présente un point chaud distinctif en raison du flash, le test calcule la moyenne de l'image flash de l'ensemble de la capture et vérifie si la valeur se situe dans la plage (68, 102). Pour vérifier si l'image est raisonnablement équilibrée en blanc, le test calcule les ratios R/G et B/G, puis vérifie si ces ratios se situent entre 0,95 et 1,05.

API testées:

Pass:les ratios R/G et B/G sont compris entre 0,95 et 1,05. La moyenne de l'image avec flash se situe dans la plage (68, 102).

test_preview_min_frame_rate

Vérifie que la fréquence d'images de l'aperçu diminue correctement dans une scène sombre. Pour que ce test fonctionne correctement, les voyants du banc d'essai doivent être éteints par le contrôleur ou manuellement par l'opérateur de test.

API testées:

Pass (Échec) : la fréquence d'images de prévisualisation est au minimum de la plage de fréquence d'images demandée, et la variation entre les images est inférieure à la tolérance absolue définie dans le test.

test_torch_strength

Vérifie que le contrôle de l'intensité du flash en mode TORCH est implémenté correctement.

Vérifie que si l'appareil est compatible avec le contrôle de l'intensité du flash lors de l'utilisation de l'appareil photo en mode TORCH, l'intensité de la lampe de poche change avec les différents niveaux d'intensité demandés. Vérifie que le contrôle de l'intensité du flash fonctionne avec différents AE_MODES. Par exemple, si le mode d'exposition automatique est ON ou OFF, l'intensité du flash a un effet sur la luminosité. Si le mode est ON_AUTO_FLASH, l'intensité du flash n'a aucun effet sur la luminosité. Vérifie que l'intensité de la lampe de poche reste la même pendant toute la durée d'un rafales, en simulant une session de capture vidéo. Pour effectuer le test, les lumières du banc d'essai doivent être éteintes. Elles peuvent être éteintes automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement.

API testées:

Pass :

Lorsque le mode d'exposition automatique est ON ou OFF, la luminosité des zones de rafales d'images augmente à mesure que le niveau d'intensité du flash augmente, de l'absence de flash à FLASH_TORCH_STRENGTH_MAX_LEVEL. Lorsque le mode d'exposition automatique est ON_AUTO_FLASH, la différence de luminosité des extraits de la rafale d'images est dans la tolérance lorsque le niveau d'intensité du flash passe de l'absence de flash à FLASH_TORCH_STRENGTH_MAX_LEVEL.

sensor_fusion

Les tests de fusion de capteurs nécessitent un mouvement spécifique du téléphone devant un motif en damier et des repères ArUco. Pour des résultats optimaux, assurez-vous que le graphique de test est monté à plat. Les graphiques qui ne sont pas plats affectent les calculs de rotation pour de nombreux tests. Le graphique doit remplir le dos de la boîte de fusion de capteurs en s'imprimant à 43 x 43 cm. Les tests sensor_fusion peuvent être automatisés avec la Sensor Fusion Box.

Graphique de fusion des capteurs

Graphique de fusion des capteurs

Graphique de fusion des capteurs dans Rig

Graphique de fusion de capteurs qui remplit l'arrière de la boîte de fusion de capteurs

test_lens_intrinsic_calibration

Vérifie que le centre optique intrinsèque de l'objectif change lorsque l'objectif se déplace en raison de la stabilisation optique de l'image (OIS). Si les échantillons intrinsèques de l'objectif sont compatibles, vérifiez que le centre optique des échantillons intrinsèques de l'objectif change lorsque l'objectif se déplace en raison de la stabilisation optique de l'image (OIS).

API testées:

Pass:le centre optique intrinsèque de l'objectif change d'un pixel ou plus. Si les échantillons intrinsèques de l'objectif sont compatibles, les centres optiques des échantillons intrinsèques de l'objectif changent d'un pixel ou plus.

test_lens_intrinsic_calibration_example.png

Exemple de tracé test_lens_intrinsic_calibration montrant les changements de points principaux en pixels pour chaque frame

test_multi_camera_frame_sync

Vérifie que les codes temporels des images capturés par la caméra logique sont compris dans une plage de 10 ms en calculant les angles des carrés dans le damier pour déterminer le code temporel.

API testées:

Pass:l'angle entre les images de chaque caméra ne change pas sensiblement lorsque le téléphone est pivoté.

test_preview_distortion

Vérifie que la distorsion est corrigée dans chaque frame d'aperçu pris à différents niveaux de zoom. Pour chaque frame d'aperçu, le test calcule les points idéaux en fonction des paramètres intrinsèques et extrinsèques de la caméra. Dans l'exemple d'image, les points idéaux sont affichés en vert, et les points réels en rouge. L'erreur de distorsion est calculée en fonction de la distance au carré de la racine moyenne (RMS) entre les points réels et les points idéaux. Les surbrillances vertes et rouges sur l'image permettent de détecter visuellement la zone d'erreur de distorsion.

test_preview_distortion_example.jpg

Image d'un damier avec les points idéaux en vert et les points réels en rouge

API testées:

Pass:l'erreur de distorsion normalisée de chaque frame d'aperçu est inférieure au seuil défini dans le test.

test_preview_stabilization

Tests de la vidéo d'aperçu stabilisée qui tourne moins que le gyroscope.

API testées:

Pass:l'angle de rotation maximal sur les images est inférieur à 70% de la rotation du gyroscope.

Vous trouverez ci-dessous des exemples de vidéos avec et sans stabilisation.

  • Exemple de vidéo avec stabilisation

  • Exemple de vidéo sans stabilisation

test_sensor_fusion

Teste la différence de code temporel entre la caméra et le gyroscope pour les applications de RA et de RV. Le téléphone est pivoté de 90 degrés 10 fois devant le motif en damier. Le temps de latence aller-retour est d'environ deux secondes. Ce test est ignoré si aucun gyroscope n'est inclus ou si le paramètre REALTIME de la source de code temporel n'est pas activé.

Le test test_sensor_fusion génère un certain nombre de graphiques. Les deux graphiques les plus importants pour le débogage sont les suivants:

  • test_sensor_fusion_gyro_events: affiche les événements du gyroscope pour le téléphone pendant le test. Un mouvement dans les directions X et Y implique que le téléphone n'est pas solidement fixé sur la plaque de montage, ce qui réduit la probabilité de réussite du test. Le nombre de cycles dans le graphique dépend de la vitesse d'écriture pour l'enregistrement des frames.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations: affiche l'alignement du gyroscope et des événements de la caméra. Ce graphique doit montrer un mouvement correspondant entre l'appareil photo et le gyroscope à +/- 1 ms.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

API testées:

Pass:le décalage des codes temporels de la caméra et du gyroscope est inférieur à 1 ms, conformément à la section 7.3.9 de la CDD sur les capteurs haute fidélité [C-2-14].

Mécanismes d'échec:

  • Erreur de décalage: le décalage entre la caméra et le gyroscope n'est pas correctement calibré à +/- 1 ms.
  • Perte de trames: le pipeline n'est pas assez rapide pour capturer 200 images consécutives.
  • Erreurs de socket: adb ne parvient pas à se connecter de manière fiable au DUT suffisamment longtemps pour exécuter le test.
  • Le graphique n'est pas monté à plat. Le tracé test_sensor_fusion_plot_rotations comporte des images où la rotation du gyroscope et de la caméra varie considérablement à mesure que la caméra pivote dans les parties du graphique qui ne sont pas plates.
  • La caméra n'est pas installée à plat. Le graphique test_sensor_fusion_gyro_events montre le mouvement dans les plans X et Y. Cette défaillance est plus courante pour les caméras avant, car la caméra arrière présente souvent une bosse par rapport au reste du corps du téléphone, ce qui crée une inclinaison lors du montage de l'arrière du téléphone sur la plaque de montage.

test_video_stabilization

Tests de la rotation de la vidéo stabilisée par rapport au gyroscope

API testées:

Pass:l'angle de rotation maximal sur les images est inférieur à 60% de la rotation du gyroscope.

Vous trouverez ci-dessous des exemples de vidéos avec et sans stabilisation.

  • Exemple de vidéo avec stabilisation

  • Exemple de vidéo sans stabilisation

feature_combination

Les tests feature_combination vérifient que les fonctionnalités fonctionnent correctement lorsque plusieurs fonctionnalités de la caméra sont activées en même temps. Ces tests utilisent la même image en damier que celle utilisée dans la scène de fusion de capteurs.

test_feature_combination

Teste toutes les combinaisons de différentes combinaisons de flux, de stabilisation d'aperçu, de plage de FPS cible, de vidéo HDR 10 bits et d'Ultra HDR compatibles avec l'appareil photo. Ce test consomme beaucoup de mémoire. Nous vous recommandons donc d'utiliser un hôte avec au moins 128 Go de RAM.

Pour Android 15 et versions ultérieures, le fichier de configuration inclut un champ log_feature_combo_support, qui est défini par défaut sur False. Lorsque le champ log_feature_combo_support est défini sur True, le test exécute toutes les combinaisons de fonctionnalités compatibles et consigne les résultats dans un fichier proto sans que le test échoue. Pour les tests de conformité, le champ log_feature_combo_support doit être défini sur False.

API testées:

Pass:pour chaque combinaison de fonctionnalités compatible:

  • Le flux d'aperçu est stabilisé si la stabilisation de l'aperçu est activée.
  • La fréquence d'images de l'aperçu se situe dans la plage AE_TARGET_FPS_RANGE configurée.
  • L'espace colorimétrique du flux d'aperçu enregistré correspond à celui défini.
  • La capture Ultra HDR dispose d'une carte de gain valide.