Cette page fournit la liste complète des tests effectués dans la suite de tests d'images de caméra (ITS, Camera Image Test Suite), qui fait partie de l'outil de vérification de la suite de tests de compatibilité Android (CTS). Les tests ITS sont des tests fonctionnels. Ils ne mesurent donc pas la qualité de l'image, mais indiquent que toutes les fonctions de la caméra annoncées fonctionnent comme prévu. Ce document permet aux développeurs et aux testeurs de comprendre le fonctionnement de chaque test et comment déboguer les échecs.
La caméra effectue les tests ITS en fonction des propriétés de caméra requises, du niveau d'API et du niveau de classe de performance multimédia (MPC). Au niveau de l'API, ITS utilise ro.product.first_api_level
pour accéder aux tests ajoutés à un niveau d'API spécifique qui testent des expériences utilisateur négatives pour les fonctionnalités des niveaux d'API inférieurs. ITS utilise ro.vendor.api_level
pour accéder aux tests de fonctionnalités ajoutées à un niveau d'API spécifique nécessitant une nouvelle capacité matérielle. Si ro.odm.build.media_performance_class
est défini pour un appareil, ITS nécessite d'exécuter des tests spécifiques en fonction du niveau de MPC.
Les tests sont regroupés par scène comme suit:
- scene0:capture de métadonnées, gigue, gyroscope, vibration
- scene1:exposition, sensibilité, correction VE, YUV par rapport à JPEG/RAW
- scene2:détection de visages, tests nécessitant des scènes de couleurs ou une obscurité complète
- scene3:amélioration des bords, mouvement de l'objectif
- scene4:format, recadrage, champ de vision
- scene5:ombrage de l'objectif
- scene6:Zoom
- scene_extensions:extensions Camera
- sensor_fusion:décalage temporel de l'appareil photo/du gyroscope
Consultez les sections individuelles pour obtenir une description de chaque scène.
scène 0
Les tests Scene0 ne nécessitent aucune information spécifique sur la scène. Toutefois, le téléphone doit être fixe pour le gyroscope et les tests des vibrations.
capture_rafale_test
Vérifie que l'ensemble du pipeline de capture peut suivre le rythme de la capture en taille réelle et le temps CPU.
API testées:
Réussite:permet de prendre des photos en rafale en taille réelle, et l'appareil photo est suffisamment rapide pour éviter le délai d'inactivité.
test_capture_result_dump
Vérifie qu'un résultat de capture est renvoyé par une capture manuelle, puis le vide.
API testées:
Réussi:termine la capture et vide les résultats de la capture.
test_gyro-biais
Vérifie si la sortie du gyroscope est stable lorsque l'appareil est à l'arrêt. Les données sont représentées en moyenne sur 20 points de données.
API testées:
Réussite:le delta du relevé du gyroscope est inférieur à 0,01 au fil du temps.
test_gyro_biais_plot.png
test de la gigue
Mesure la gigue dans les codes temporels des caméras.
API testées:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Réussite:il existe un écart d'au moins 30 ms entre les images.
test_jitter_plot.png (Notez la petite plage de l'axe des y. La gigue est en fait faible dans ce tracé.)
métadonnées_test
Teste la validité des entrées de métadonnées. Il examine les résultats de la capture et les objets caractéristiques de l'appareil photo. Ce test utilise les valeurs d'exposition et de gain de auto_capture_request
, car le contenu des images n'est pas important.
API testées:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Réussite:niveau matériel, balises rollingShutterSkew
, frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, champ de vision et distance hyperfocale sont présents et ont des valeurs valides.
rafale_paramètre_test_sensibilité
Vérifie que le paramètre android.sensor.sensitivity
est appliqué correctement en rafale. N'inspecte que les métadonnées de sortie.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite:la tolérance aux erreurs des données de sortie est inférieure à 0,2%.
lecture_écriture_test
Vérifie que l'appareil écrit les valeurs d'exposition et de gain correctes en relisant les métadonnées de capture.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Réussite:les valeurs en lecture et en écriture correspondent à tous les plans.
événements_capteurs_test
Teste l'appareil qui interroge et affiche les événements de capteurs pour les appareils qui annoncent la compatibilité 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:
Réussite:les événements de chaque capteur sont reçus.
test_couleur_solide_motif_test
Teste que des motifs de test de couleurs unies sont correctement générés pour couper le son de l'appareil photo. Si vous pouvez couper le son de la caméra, vous devez utiliser des modèles de test de couleurs unies. Si la désactivation du son de la caméra n'est pas disponible, les modèles de test des couleurs unies ne sont testés que si la fonctionnalité est annoncée.
Si les images RAW sont acceptées, 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 non compatibles avec les images RAW, seul le noir est testé.
API testées:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Réussite:les motifs de test unis acceptés sont de la bonne couleur et la variation dans l'image est faible.
modèle_test_test
Teste le paramètre android.sensor.testPatternMode
afin de capturer des images pour chaque modèle de test valide, et vérifie qu'elles sont générées correctement pour les couleurs unies et les barres de couleur. Ce test comprend les étapes suivantes:
- Capture des images pour tous les formats de test compatibles.
- Effectue une vérification simple de l'exactitude des barres de couleur et du motif de test des couleurs unies.
API testées:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Réussite:les formats de test compatibles sont générés correctement.
modèles_test_test_2.jpg
test_tonemap_curve
Teste la conversion d'un modèle de test RAW vers YUV à l'aide d'une carte de tonalités linéaire. Ce test nécessite que android.sensor.testPatternMode = 2
(COLOR_BARS) génère un format d'image parfait pour la conversion de la carte de tonalité. S'assure que le pipeline présente des sorties de couleurs appropriées avec une carte de tonalités linéaire et une entrée d'image idéale (elle repose sur test_test_patterns
).
API testées:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite:le YUV et le RAW se ressemblent.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
code temporel_test_unifié
Vérifie si l'image et le capteur de mouvement sont dans le même domaine temporel.
API testées:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Réussite:les codes temporels des mouvements sont compris entre les deux codes temporels de l'image.
test_vibration_restriction
Vérifie si les vibrations de l'appareil fonctionnent comme prévu.
API testées:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Réussite:l'appareil ne vibre pas lorsque le son est coupé par l'API de restriction audio de la caméra.
scène1
La scène1 est un graphique gris. Le graphique gris doit couvrir les 30% du centre du champ de vision de la caméra. Le graphique gris devrait défier modérément le 3A (exposition automatique, balance des blancs automatique, mise au point automatique), car la zone centrale ne comporte pas de fonctionnalités. Cependant, la requête de capture spécifie la scène entière, qui inclut suffisamment de caractéristiques pour converger l'algorithme 3A.
Les caméras RFoV peuvent être testées sur le support de test WFoV ou RFoV. Si une caméra RFoV est testée sur le support de test WFoV, le graphique est mis à l'échelle de 2⁄3 pour garantir certaines limites du graphique gris dans le champ de vision afin de favoriser la convergence de 3 A. Pour des descriptions plus détaillées des supports de test de caméra, consultez la section Caméra ITS prête à l'emploi.
scène1: graphique en taille réelle (à gauche) Graphique à l'échelle 2⁄3 (à droite).
test_3a
Teste la convergence d'un 3A avec un objectif modérément difficile.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Réussite:3A converge et les valeurs 3A renvoyées sont valides.
test_ae_af
Teste séparément les algorithmes d'exposition automatique (AE) et de mise au point automatique (AF) 3A.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Réussite:le modèle 3A converge et les valeurs 3A renvoyées sont légales.
test_ae_precapture_trigger
Teste la machine à états AE lors de l'utilisation du déclencheur de précapture. Il 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 l'AE est désactivé.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Réussite:l'AE est convergent.
test_auto/manuel
Les tests des prises de vue automatiques et manuelles se ressemblent.
API testées:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Réussite:le gain et la transformation manuels de la balance des blancs sont signalés dans chaque correspondance de résultat de capture avec la balance des blancs automatique estimate
de l'algorithme 3A de l'appareil photo.
test_auto_vs_manuel_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_noir_blanc
Vérifie que l'appareil produit des images complètes 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:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite:produit des images en noir et blanc. Les canaux saturés d'images blanches ont des valeurs RVB de [255, 255, 255] avec une marge d'erreur de moins de 1 % de différence.
test_noir_blanc_noir.jpg | test_noir_blanc_blanc.jpg |
test_black_white_plot_average.png
mode_test_rafale_sameness_manual
Prend cinq rafales de 50 images avec paramètre de capture manuel et vérifie qu'elles sont toutes identiques. Ce test permet de déterminer si des frames sporadiques sont traités différemment ou s'ils comportent des artefacts.
API testées:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Réussite:les images sont visuellement identiques et aux valeurs RVB.
Échec:affiche un pic 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_intensive_sameness_manual_mean.jpg
test_intensive_sameness_manual_plot_average.png
test_capture_result
Les tests indiquant que des données valides sont renvoyées dans les objets CaptureResult
Effectue une capture automatique,
manuelle et automatique.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite:les métadonnées sont valides pour toutes les captures et les paramètres manuels ne sont pas transmis à la deuxième capture automatique. Indique la correction de l'ombrage de l'objectif pour les captures.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Vérifie que les flux RAW ne peuvent pas être rognés.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Réussite:les images YUV sont recadrées au centre, mais pas les images RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
régions_crop_test
Vérifie que les zones recadrées fonctionnent. Prend une image complète et crée des correctifs sur 5 régions différentes (coins et centre). Prend des images dont le recadrage est défini pour les cinq régions. Compare les valeurs de patch et de recadrage de l'image.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Réussite:l'image de la zone recadrée correspond à la zone qui correspond à l'image recadrée.
Test_modèle_bruit_dng
Vérifie que les paramètres du modèle brut DNG sont corrects. Le graphique représente la variance mesurée d'une zone centrale de la carte grise dans les 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 la 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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite:les paramètres du modèle brut DNG sont corrects. Les valeurs RVB attendues correspondent aux valeurs RVB réelles mesurées.
test_dng_noise_model_plog.png
test_ev_compensation_avancé
Vérifie que la correction de la valeur d'exposition (EV) est appliquée. Ce 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é d'une image sans compensation VE, et la valeur attendue sera saturée si les valeurs calculées dépassent la plage de valeurs réelles de l'image. Le test échoue si les valeurs attendues et mesurées ne correspondent pas ou si les images sont surexposées dans les cinq étapes.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Réussite:les images montrent une exposition accrue sans surexposition en cinq pas.
test_ev_compensation_advanced_plot_average.png
test_ev_compensation_basic
Vérifie que la compensation VE est appliquée à l'aide d'une plage créée avec CONTROL_AE_COMPENSATION_STEP
. Huit images sont capturées pour chaque valeur de rémunération.
API testées:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Réussite:capture l'augmentation de la luminosité avec un paramètre de compensation VE accrue, et les huit images capturées pour chaque paramètre de compensation VE ont des valeurs de luma stables.
test_ev_compensation_basic.png
exposition_test
Vérifie qu'une exposition constante est obtenue car l'ISO et la durée d'exposition varient. Il prend une série de photos pour lesquelles la sensibilité ISO et la durée d'exposition sont sélectionnées pour s'équilibrer.
Les résultats devraient avoir la même luminosité, mais dans la séquence, l'image devrait être plus bruyante. Vérifie que les valeurs moyennes de pixels de l'échantillon sont proches les unes des autres. Permet de s'assurer que les images ne sont pas limitées à 0 ou 1 (ce qui les ferait ressembler à des lignes plates). Vous pouvez également exécuter le test avec des images RAW en définissant l'option debug
dans votre fichier de configuration.
API testées:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite:les images ont la même luminosité, mais sont plus bruyantes avec une sensibilité ISO plus élevée. Les plans RVB sont plats lorsque la valeur ISO*exposure est constante sur l'espace de gain testé.
test_exposure_plot_average.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
JPEG test
Les tests qui permettent de convertir les images YUV et les images JPEG de l'appareil sont identiques. Le test prend les 10% les plus au centre de l'image, calcule la valeur RVB et vérifie qu'elles correspondent.
API testées:
Réussite:l'écart RVB moyen entre chaque image est inférieur à 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
Test de verrouillage
Vérifie que les paramètres (exposition et gain) sont alignés sur le cadre de droite pour les caméras FULL
et LEVEL_3
. Prend une série de prises de vue à l'aide de requêtes dos à dos, en variant les paramètres de requête de capture d'une image à l'autre. Vérifie que les images possèdent les propriétés attendues.
API testées:
Réussite:les images [2, 3, 6, 8, 10, 12, 13] ont une ISO ou une exposition plus élevée et apparaissent avec 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=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=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_moyennes.png
test_linéarité
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é sur une cible uniforme.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite:les valeurs R, V et B doivent augmenter de façon linéaire avec une sensibilité accrue.
test_linearity_plot_average.png
Rafale test_verrouillée
Teste le verrouillage 3A et l'utilisation intensive des fonctions YUV (à l'aide du paramètre automatique). Ce test est conçu pour réussir même sur un nombre limité d'appareils qui ne disposent pas de MANUAL_SENSOR
ni de PER_FRAME_CONTROLS
.
Le test vérifie la cohérence de l'image YUV pendant la vérification de la fréquence d'images dans CTS.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Réussite:les captures ont un aspect cohérent.
cadre_rafale_verrouillé_test0.jpg
test_verrouillé_cadre_en rafale1.jpg
cadre_rafale_verrouillé_test2.jpg
test_param_color_correction
Vérifie que les paramètres android.colorCorrection.*
sont appliqués lorsqu'ils sont définis.
Prend des prises de vue avec des valeurs de transformation et de gain différentes, et vérifie qu'elles semblent différentes. La transformation et les gains sont choisis pour que la sortie devienne de plus en plus rouge ou bleue. Utilise une carte de tonalités linéaire. La mise en correspondance des tons est une technique utilisée dans le traitement des images pour mapper un ensemble de couleurs à un autre afin d'estimer l'apparence des images à grande gamme dynamique sur un support à plage dynamique plus limitée.
API testées:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Réussite:les valeurs R et B augmentent en fonction de la transformation.
test_param_color_correction_plot_average.png
*L'axe des abscisses représente les demandes de capture: 0 = unité, 1=boost rouge, 2= booster bleu
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (boost)
test_param_color_correction_req=2.jpg (boost)
paramètre_test_exposure_time
Vérifie que le paramètre android.sensor.exposureTime
est appliqué.
API testées:
Réussite:chaque plan est plus lumineux que le précédent.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
paramètre_test_mode_flash
Vérifie que le paramètre android.flash.mode
est appliqué. Définit manuellement l'exposition du côté obscur, afin qu'il soit évident que le flash s'est déclenché ou non, et utilise une carte de tonalités linéaire. Vérifie le centre avec l'image de tuile pour voir si un grand dégradé a été créé pour vérifier si le flash s'est déclenché.
API testées:
Réussite:le centre de l'image de tuile présente un grand dégradé indiquant que le flash a été déclenché.
paramètre_test_mode_flash_1.jpg
paramètre_test_mode_flash_1_tile.jpg
paramètre_test_mode_flash_2.jpg
paramètre_test_mode_flash_2_tile.jpg
test_param_noise_reduction
Vérifie que le paramètre android.noiseReduction.mode
est correctement appliqué lorsqu'il est défini. Permet de prendre des photos lorsque l'éclairage de l'appareil photo est faible. Utilise un gain analogique élevé pour s'assurer que l'image capturée comporte du bruit. Capture trois images : "NR" désactivé, "rapide" et "haute qualité". Capture également une image dans laquelle le gain faible et la NR sont désactivées, et utilise la variance de cette valeur comme référence. Plus le rapport SNR est élevé, meilleure est la qualité de l'image.
API testées:
Réussite:la valeur SNR varie avec différents modes de réduction du bruit et se comporte de la même manière que le graphique ci-dessous.
test_param_noise_reduction_plot_SNRs.png
0: DÉSACTIVÉ, 1: RAPIDE, 2: HQ, 3: MIN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensibilité
Vérifie que le paramètre android.sensor.sensitivity
est appliqué. Le test augmente la sensibilité en cinq pas avec une exposition fixe pour chaque prise de vue.
API testées:
Réussite:les moyennes RVB du centre 10% gagnent en luminosité lorsque la sensibilité est accrue.
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
mode_ombrage_paramètre_test
Vérifie que le paramètre android.shading.mode
est appliqué.
API testées:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Réussite: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.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
paramètre_test_tonemap_mode
Vérifie que le paramètre android.tonemap.mode est appliqué. Applique différentes courbes de carte de tonalité à chaque canal R, V et B, et vérifie que les images de sortie sont modifiées comme prévu. Ce test comprend deux tests : test1 et test2.
API testées:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass:
- test1: les deux images ont une carte de tons linéaire, mais n=1 présente un dégradé plus important. Le canal G (vert) est plus lumineux pour l'image n=1.
- test2: carte de tons identique, mais longueur différente Les images sont identiques.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_boost_sensibilité_brute
Vérifie l'amélioration de la sensibilité post-RAW. Capture un ensemble d'images RAW et YUV avec une sensibilité différente, publie une combinaison d'amélioration de la sensibilité RAW et vérifie si la moyenne du pixel de sortie correspond aux paramètres de la requête.
API testées:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite:les images RAW s'assombrissent à mesure que l'amélioration augmente, tandis que les images YUV restent constantes en luminosité.
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_averages.png
test_post_boost_sensitivity_yuv_s=0112_boost=3199.jpg
test_post_boost_sensitivity_yuv_s=0448_boost=0800.jpg
test_post_boost_sensitivity_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_de_sensibilité_raw_boost_yuv_plot_average.png
test_sensibilité_intensive_brute
Capture un ensemble d'images brutes avec des gains croissants et mesure le bruit. Capture uniquement à l'état brut, en rafale.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Réussite:chaque plan est plus bruyant que le plan précédent, car le gain est croissant.
Utilise la variance de la cellule de la grille des statistiques centrales.
variance_de_sensibilité_raw_intensive.png
exposition_raw_test
Capture un ensemble d'images brutes avec une durée d'exposition qui augmente et mesure les valeurs de pixels.
API testées:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Réussite:l'augmentation de l'ISO (le gain) rend les pixels plus sensibles à la lumière, de sorte que le tracé se déplace vers la gauche.
test_raw_exposure_s=55.png
(100 correspond à 1 ms, 101 à 10 ms, 10−1 à 0,1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_de_sensibilité_brute
Capture un ensemble d'images brutes avec une sensibilité croissante et mesure le bruit (variance) dans les 10% les plus au centre de l'image. Vérifie que chaque plan comporte plus de bruit que le précédent.
API testées:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Réussite:la variance augmente à chaque plan.
test_raw_sensitivity_variance.png
test_retrait_réduction_bruit
Vérifie que android.noiseReduction.mode
est appliqué aux requêtes de retraitement.
Capture les images retraitées lorsque l'éclairage de l'appareil photo est faible. Utilise un gain analogique élevé pour s'assurer que l'image de capture comporte du bruit. Capture trois images retraitées : NR désactivé, "rapide" et "haute qualité". Capture une image à nouveau traitée avec un gain faible et une NR désactivée, et utilise la variance de cette valeur comme référence.
API testées:
Passages:FAST >= OFF, HQ >= FAST, HQ >> OFF
Graphique SNR par rapport à NR_MODE typique
test_tonemap_Sequence
Teste une séquence de prises de vue avec différentes courbes de la carte de tons. Enregistre 3 prises de vue manuelles avec une carte de tons linéaire. Capture trois prises de vue manuelles avec la carte de tonalités par défaut. Calcule le delta entre chaque paire de cadres consécutives.
API testées:
Réussite:il existe trois cadres identiques suivis d'un ensemble différent de trois cadres identiques.
test_tonemap_Sequence_i=0.jpg
test_tonemap_Sequence_i=1.jpg
test_tonemap_Sequence_i=2.jpg
test_tonemap_Sequence_i=3.jpg
test_tonemap_Sequence_i=4.jpg
test_tonemap_Sequence_i=5.jpg
test_yuv_jpeg_tout
Vérifie que toutes les tailles et tous les formats signalés pour la capture d'image fonctionnent. Elle utilise une requête manuelle avec une carte de tonalités linéaire pour que les valeurs YUV et JPEG soient identiques lorsqu'elles sont converties par le module image_processing_utils
. Les images ne sont pas enregistrées par défaut, mais vous pouvez les enregistrer en activant debug_mode
.
API testées:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Réussite:tous les centres d'images présentent une différence RMS (racine-moyenne quadratique moyenne d'un signal) maximale pour les images converties RVB avec 3% de l'image YUV la plus haute résolution.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Vérifie que les tailles et les formats indiqués pour la capture d'image fonctionnent.
API testées:
Réussi:le test se termine et renvoie les images demandées.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Teste la capture d'une seule image en tant que sorties YUV et JPEG. Elle utilise une requête manuelle avec une carte de tonalités linéaire pour que les valeurs YUV et JPEG soient identiques lorsqu'elles sont converties par le module image_processing_utils
.
API testées:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Réussite:les images YUV et JPEG sont similaires et présentent une différence RMS (racine-moyenne quadratique moyenne d'un signal) inférieure à 1 %.
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, si compatible. Utilise une requête manuelle avec une carte de tonalités linéaire pour que les valeurs brutes et YUV soient identiques. Compare les valeurs RVB au centre des images converties à 10 %. Journauxandroid.shading.mode
.
API testées:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
Réussite:les images YUV et brutes sont similaires et présentent une différence RMS (racine-moyenne quadratique moyenne d'un signal) inférieure à 3,5 %.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scène2_a
scène2_a comporte trois visages sur un fond gris et des vêtements neutres. Les visages sont choisis pour proposer une large gamme de carnations. Le graphique doit avoir la bonne orientation pour que la détection de visages fonctionne de manière optimale.
scène2_a
test_flash_auto
Vérifie que le flash automatique se déclenche dans une scène sombre. Vérifie que le flash automatique est déclenché en vérifiant que le centre de l'image de la tuile présente un grand dégradé. Pour déclencher le flash automatique, la tablette et les lumières du support de test doivent être éteintes. La tablette est éteinte lors du test, et les lumières peuvent être éteintes automatiquement avec la manette Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement. Par conséquent, l'ouverture de la tablette arrière doit être entièrement recouverte par la tablette de scène, tandis que l'ouverture avant doit être recouverte par une ouverture et l'appareil testé doit empêcher la lumière parasite de pénétrer dans le support.
API testées:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Réussite:le centre de l'image de la tuile présente un grand dégradé indiquant que le flash automatique s'est déclenché.
Test_de_cadrage automatique
Teste le comportement du cadrage automatique de la caméra. Effectue un zoom important de sorte qu'aucun des visages de la scène n'est visible, active le mode de cadrage automatique en définissant AUTOFRAMING
dans CaptureRequest
sur True
et 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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Réussite:les trois visages sont détectés.
Test_display_p3
Teste la capture d'Display P3 au format JPEG à l'aide de l'API ColorSpaceProfiles
. Vérifie que le fichier JPEG capturé possède un profil ICC approprié dans son en-tête et que l'image contient des couleurs en dehors de la gamme sRVB.
API testées:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Réussite:le fichier JPEG contient un profil ICC d'affichage P3 et des couleurs en dehors de la gamme sRVB.
effets_test
Capture l'image pour les effets de l'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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Réussite:capture l'image de la scène avec les effets OFF
et une image monochrome avec les effets définis sur MONO
.
effets_tests_MONO.jpg
combinaisons_formats_test
Teste différentes combinaisons de formats de sortie.
API testées:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Réussite:toutes les combinaisons ont été enregistrées.
Qualité_jpeg_test
Teste la qualité de la compression JPEG de l'appareil photo. Appliquez les qualités JPEG via android.jpeg.quality
pour vous assurer que les tables de quantification changent correctement.
API testées:
Réussite:la matrice de quantification diminue avec l'augmentation de la qualité. (La matrice représente le facteur de division.)
Moyennes de la matrice luma/chroma de la caméra arrière du Pixel 4 DQT par rapport à la qualité JPEG
Exemple de test ayant échoué
Notez que pour les images de très mauvaise qualité (jpeg.quality < 50), il n'y a pas d'augmentation de la compression dans la matrice de quantification.
nombre_tests
Teste la détection des visages.
API testées:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite:permet de rechercher trois visages.
nombre_tests_mode_fd_1.jpg
taux_frame_min_aperçu_test
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 lumières du support doivent être éteintes par le contrôleur ou manuellement par l'opérateur de test.
API testées:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Réussite:la fréquence d'images de l'aperçu est égale à la valeur minimale de la plage de fréquences d'images demandée, et la variation entre les images est inférieure à la tolérance absolue définie lors du test.
test_retrait_uv_échange
Tests que le retraitement YUV n'intervertit pas les plans U et V. Cela est détecté en calculant la somme des différences absolues entre l'image retraitée et une capture qui n'a pas été retraitée. Si le changement des plans U et V de sortie de la capture retraitée entraîne une augmentation du SAD, la sortie est supposée comporter les plans U et V corrects.
API testées:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Réussite:les avions U et V ne sont pas intervertis.
test_reprocess_uv_swap.png
scène2_b
nombre_tests
Teste la détection de visages sur des portraits avec une plus grande diversité de carnations.
API testées:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite:détecte trois visages.
nombre_tests_mode_fd_1.jpg
test_yuv_jpeg_capture_sameness
Capture deux images en utilisant les plus grands formats YUV et JPEG courants, avec le même format que le plus grand format JPEG, sans dépasser une résolution de 1 920 x 1 440.
Définit jpeg.quality
sur 100 et capture une requête de double surface. Elle convertit les deux images en tableaux RVB et calcule la racine carrée de l'écart moyen en 3D (RMS) entre les deux images.
API testées:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Réussite:les images YUV et JPEG sont similaires et présentent une différence RMS (racine-moyenne quadratique moyenne d'un signal) inférieure à 1 %.
scène2_c
nombre_tests
Teste la détection de visages sur des portraits avec une plus grande diversité de carnations.
API testées:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite:détecte trois visages.
nombre_tests_mode_fd_1.jpg
Classe test_jpeg_capture_perf
Teste la latence de capture JPEG pour la classe de performance S, comme spécifié dans la section 2.2.7.2 Appareil photo du CDD.
Réussite:la latence de capture JPEG de camera2 DOIT être inférieure à 1 000 ms pour une résolution de 1080p, telle que mesurée par le test PerformanceTest de la caméra CTS dans les conditions d'éclairage ITS (3 000 K) des deux caméras principales.
classe_perf_lancement_appareil photo_test
Teste la latence de lancement de l'appareil photo pour la classe de performance S, comme spécifié à la section 2.2.7.2 Caméra dans le CDD.
Réussite:la latence de démarrage de la caméra 2 DOIT être inférieure à 600 ms (ouverture de la caméra jusqu'à la première image d'aperçu), telle que mesurée par le test PerformanceTest de la caméra CTS dans les conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.
scène2_d
nombre_tests
Teste la détection de visages sur des portraits avec une plus grande diversité de carnations.
API testées:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite:détecte trois visages.
scène2_e
test_image_continue
50 images VGA de résolution sont capturées avec le paramètre de requête de capture en premier
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Réussite:le système 3A se stabilise à la fin d'une capture de 50 images.
nombre_tests
Teste la détection de visages sur des portraits avec une plus grande diversité de carnations.
API testées:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite:détecte trois visages.
scène2_f
scène2_f comporte trois visages sur un fond 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.
scène2_f
nombre_tests
Teste la détection de visages sur des portraits avec une plus grande diversité de carnations.
API testées:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite:détecte trois visages.
nombre_tests_mode_fd_1.jpg
scène3
Scène3 utilise le graphique ISO 12233, et la plupart des tests utilisent une méthode d'extraction de graphique pour trouver le graphique dans la scène. Pour cette raison, 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 l'outil de recherche de graphiques fonctionne de manière optimale.
test_3a_cohérence
Teste la cohérence 3A.
API testées:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Réussite:le modèle 3A converge trois fois pour l'exposition, le gain, l'awb (balance des blancs automatique) et la fd (distance de mise au point) dans les limites de la tolérance.
amélioration_finition_test
Vérifie que le paramètre android.edge.mode
est appliqué correctement. Capture des images sans retraitement pour chaque mode de contour et renvoie la netteté de l'image de sortie et les métadonnées du résultat de la capture. Traite une requête de capture avec les paramètres suivants : mode de bord, sensibilité, durée d'exposition, distance de mise au point et surface de sortie.
Réussite:mode HQ
(2) plus net que le mode OFF
(0). Mode FAST
(1) plus net que le mode OFF
. Mode HQ
plus net ou égal au mode FAST
.
API testées:
Paramètres de l'appareil photo concernés:
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (mode rapide)
test_edge_enhancement_edge=2.jpg (mode haute qualité)
CANNOT TRANSLATE
Vérifie si l'image est correctement orientée conformément à la section 7.5.2 du CDD [C-1-5].
Les images en miroir, inversées ou pivotées peuvent être identifiées par la caractéristique en forme de losange située près du centre.
Réussite:l'image n'est pas inversée, mise en miroir ni pivotée.
correction_scène_miroir_test.jpg
test_paysage_en_portrait
Vérifie si le forçage du mode paysage au mode portrait fonctionne correctement pour les capteurs orientés paysage.
API testées:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Réussite:le test est capable de localiser un graphique avec la rotation prévue (0 degré lorsque le forçage paysage vers le mode Portrait est désactivé, 90 degrés lorsqu'il est activé).
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, les 12 premières images à la distance de mise au point optimale (selon le modèle 3A) et les 12 dernières images à la distance de mise au point minimale. Autour du cadre 12, l'objectif se déplace, ce qui diminue la netteté. La netteté finit par se stabiliser à mesure que l'objectif atteint la position finale. L'indicateur de mouvement de l'objectif doit être activé dans toutes les images dont la netteté est intermédiaire à celle dans les premières images, où l'objectif est immobile à une distance focale optimale, et dans les dernières images où l'objectif est immobile à la distance focale minimale. Le cadre exact dans lequel l'objectif se déplace n'est pas important: ce qui est vérifié, c'est que l'indicateur de mouvement est activé lorsque l'objectif bouge.
API testées:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Réussite:l'indicateur de mouvement de l'objectif se trouve à True
dans le cadre avec un changement de netteté.
Mécanismes de défaillance:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) danstest_log.DEBUG
n'est revendiqué que dans les images où la netteté ne change pas.- Les images avec
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) danstest_log.DEBUG
présentent une différence de netteté par rapport aux premières images à une distance focale optimale ou aux dernières images à une distance de mise au point minimale.
test_retrait_amélioration_edge
Vérifie si les méthodes de retraitement compatibles pour l'amélioration en périphérie fonctionnent correctement. Traite une requête de capture avec un mode de retrait en périphérie donné et compare différents modes de capture avec les modes de retrait en périphérie désactivés.
API testées:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Passe:la netteté est correcte pour les différents modes de bord. 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.png
scène4
Scène 4 se compose d'un cercle noir sur fond blanc à l'intérieur d'un carré.
scène4
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 que sa taille ne change pas de manière incorrecte avec des formats ou des résolutions différents.
API testées:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Réussite:les images ne sont pas étirées, leur centre ne présente pas une différence de plus de 3 % et le champ de vision maximal possible est préservé.
Mécanismes de défaillance:
- L'appareil photo n'est pas aligné sur le cercle affiché sur la tablette au centre de la scène capturée.
- Le cercle dans l'image capturée est déformé par le pipeline de traitement.
- L'image de résolution inférieure est recadrée deux fois dans le pipeline d'images, 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 de format extrême qui réduit la hauteur ou la largeur de l'image.
- Le cercle de l'image capturée comporte un reflet au centre et n'apparaît pas complètement rempli.
test_alignement_multicaméra
Teste les paramètres de calibrage de la caméra liés à son positionnement pour les systèmes multicaméras. À l'aide des sous-caméras physiques multicaméras, vous prenez une photo avec l'une des caméras physiques. Recherche le centre du cercle. Projete le centre du cercle avec les coordonnées mondiales de chaque caméra. Compare la différence entre le centre du cercle des appareils photo en coordonnées mondiales. Permet de reprojeter les coordonnées mondiales aux coordonnées en pixels et de les comparer aux données d'origine en tant que vérification de la validité. Il compare les tailles de cercle en vérifiant si les distances focales des caméras sont différentes.
API testées:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Réussite:le centre et la taille des cercles sont conformes aux attentes dans les images projetées, par rapport aux images capturées à l'aide des données d'étalonnage de l'appareil photo et des distances focales.
Mécanismes de défaillance:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
ouLENS_POSE_ROTATION
sont des valeurs de conception et non des données de calibrage réelles.- La caméra n'est pas appropriée pour la configuration test. Par exemple, vous pouvez tester un appareil photo grand angle et un appareil photo ultra grand angle à l'aide du support de test RFoV. Pour en savoir plus, consultez les questions fréquentes sur la caméra ITS prête à l'emploi1.
test_preview_aspect_ratio_and_crop
Comme pour le test test_aspect_ratio_and_crop pour les captures fixes, ce test vérifie les formats d'aperçu compatibles pour s'assurer que les images d'aperçu ne sont pas étirées ou recadrées de manière inappropriée. Vérifie que les proportions du cercle ne changent pas, que les images recadrées le maintiennent au centre du cadre et que la taille du cercle ne change pas pour un format constant ou avec des résolutions différentes (vérification du champ de vision).
API testées:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Réussite:les images ne sont pas étirées, leur centre ne présente pas une différence de plus de 3 % et le champ de vision maximal possible est préservé.
test_preview_stabilisization_fov
Vérifie les tailles d'aperçu acceptées pour s'assurer que le champ de vision est correctement recadré.
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
. Une image représentative est sélectionnée dans chaque vidéo et analysée pour s'assurer que les modifications apportées au titre de la vidéo sont conformes aux spécifications.
API testées:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Réussite:le format du cercle reste à peu près constant, l'emplacement au 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 à l'intérieur d'un carré, quel que soit le format vidéo. Elle extrait les images clés et vérifie que le format du cercle ne change pas. Les images recadrées le maintiennent au centre, et 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:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Réussite:les images vidéo ne sont pas étirées, leur centre ne diffère pas de plus de 3 % et le champ de vision maximal possible est préservé.
scène 5
La scène 5 nécessite une scène grise uniforme. 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, installez un diffuseur devant la caméra et orientez la caméra 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 caractéristique évidente. Voici un exemple d'image:
capture de la scène 5
ombrage_de_l'objectif_test_et_uniformité_des_couleurs
Vérifie que la correction d'ombrage de l'objectif est appliquée de manière appropriée et que la couleur d'une scène monochrome uniforme est répartie de manière uniforme. Effectue ce test sur un cadre YUV avec auto 3A. L'ombrage de l'objectif est évalué en fonction du canal Y. Mesure la valeur y moyenne pour chaque bloc d'échantillon spécifié, et détermine la réussite ou l'échec en comparant la valeur y au centre. Le test d'uniformité des couleurs est évalué dans l'espace r/g et b/g.
API testées:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Réussite:dans le rayon spécifié de l'image, la variance des valeurs r/g et b/g doit être inférieure à 20% pour réussir le test.
scène 6
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 le fonctionnement du zoom sur une large plage.
scène 6
test_dans_le_zoom_capteur
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 prend deux captures sur la plage de zoom : une image RAW à champ de vision 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 réelle à la taille indiquée par SCALER_RAW_CROP_REGION
et calcule la différence de racine carrée (RMS) en 3D entre les deux images.
API testées:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Réussite:la différence de racine carrée (RMS) de la racine 3D entre l'image RAW recadrée et l'image RAW recadrée complète est inférieure à 1%.
Test_zoom
Teste le comportement du zoom de la caméra. Prend des captures sur la plage de zoom et vérifie si les cercles s'agrandissent à mesure que la caméra effectue un zoom avant.
API testées:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite:la taille relative du cercle capturé correspond au ratio de zoom demandé pour s'assurer que la caméra zoome correctement.
test_zoom pour trouver le contour du cercle le plus proche du centre.
test_zoom_faible_latence
Teste le comportement du zoom à faible latence de la caméra. Prend 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.
API testées:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Réussite:la taille relative du cercle capturé est précise par rapport aux métadonnées du résultat du ratio de zoom.
Test_aperçu_vidéo_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:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite:la taille relative du cercle capturé correspond au ratio de zoom demandé dans la vidéo et l'aperçu.
VGA_640x480_key_frame.png (avant zoom)
preview_640x480_key_frame.png (avant zoom)
VGA_640x480_key_frame.png (après zoom)
preview_640x480_key_frame.png (après zoom)
extensions_scène
Les tests scene_extensions
concernent les 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.
scène_hdr
La scène scene_hdr
se compose d'un portrait à gauche et d'un code QR à faible contraste à droite.
scène_hdr
extension_hdr_test
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:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Réussite:l'extension HDR réduit le nombre de changements de contraste nécessaires pour détecter le code QR ou réduit le gradient sur le code QR.
nuit_scène
La scène scene_night
se compose d'un cercle blanc contenant quatre cercles plus petits, le tout sur un arrière-plan noir. Le plus petit cercle dans le coin supérieur droit est plus sombre que les autres pour indiquer l'orientation.
nuit_scène
extension_nuit_test
Teste l'extension Nuit. Prend des captures avec et sans l'extension activée, et vérifie les éléments suivants:
- Lorsque l'extension Nuit est activée, la capture prend plus de temps.
- La capture avec l'extension Nuit activée est plus lumineuse ou comporte des artefacts de scène dont l'apparence a été améliorée.
API testées:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Passable:par rapport à une capture sans l'extension Night activée, une capture avec cette extension activée prend au moins 0,5 seconde de plus. La capture doit être au moins 10% plus lumineuse ou les points gris de la scène doivent être inférieurs de 20 pixels au centre du cercle environnant.
capteur_fusion
Les tests de fusion de capteurs nécessitent un mouvement spécifique du téléphone devant un motif en damier. Pour obtenir des résultats optimaux, placez le graphique de test à plat. Les graphiques non plats affectent les calculs de rotation de nombreux tests.
Les tests sensor_fusion
peuvent être automatisés grâce à Sensor Fusion Box.
Image d'un damier
test_synchronisation_cadres_multicaméra
Vérifie que les horodatages de trame capturés par la caméra logique sont dans un délai de 10 ms en calculant les angles des carrés du damier pour déterminer l'horodatage.
API testées:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Réussite:l'angle entre les images de chaque caméra ne change pas sensiblement lorsque vous faites pivoter le téléphone.
stabilisation_aperçu_test
Tests qui ont stabilisé la rotation de l'aperçu vidéo par rapport au gyroscope
API testées:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Réussite:l'angle de rotation maximal sur les images est inférieur à 70% de la rotation du gyroscope.
Voici des exemples de vidéos avec et sans stabilisation.
Exemple de vidéo avec stabilisation
Exemple de vidéo sans stabilisation
Test_fusion des capteurs
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 fait l'objet d'une rotation de 90 degrés 10 fois devant le motif en damier. Le mouvement correspond à un aller-retour d'environ 2 secondes. Ce test est ignoré si aucun gyroscope n'est inclus ou si le paramètre REALTIME
de la source d'horodatage n'est pas activé.
Le test test_sensor_fusion
génère plusieurs tracés. Les deux tracés les plus importants pour le débogage sont les suivants:
test_sensor_fusion_gyro_events
: affiche les événements du gyroscope du téléphone pendant le test. Tout mouvement dans les directions x et y implique que le téléphone n'est pas correctement fixé sur la plaque de montage, ce qui réduit la probabilité que le test réussisse. Le nombre de cycles dans le tracé dépend de la vitesse d'écriture pour l'enregistrement des images.événements_gyroscopes_fusion_test
test_sensor_fusion_plot_rotations
: indique l'alignement du gyroscope et des événements enregistrés. Ce tracé doit montrer le mouvement correspondant entre la caméra et le gyroscope à +/-1 ms.rotations_tracé_fusion_capteur_test
API testées:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Réussite:le décalage horodatage de la caméra et du gyroscope est inférieur à 1 ms, conformément à la section 7.3.9 Capteurs haute fidélité [C-2-14]du CDD.
Mécanismes de défaillance:
- Erreur de décalage: le décalage du gyroscope de l'appareil photo n'est pas correctement calibré sur +/-1 ms.
- Abandons de frames: le pipeline n'est pas assez rapide pour capturer 200 images consécutives.
- Erreurs de socket:
adb
ne peut pas se connecter de manière fiable à l'appareil testé suffisamment longtemps pour exécuter le test. - Le graphique n'est pas fixé à plat. Le tracé
test_sensor_fusion_plot_rotations
comporte des images dans lesquelles le gyroscope et la rotation de la caméra varient considérablement lorsque l'appareil photo pivote à travers les parties du graphique qui ne sont pas plates. - La caméra n'est pas fixée à plat. Le tracé
test_sensor_fusion_gyro_events
montre le mouvement sur les plans X et Y. Cette défaillance est plus courante avec les caméras avant, car la caméra arrière présente souvent une bosse sur le reste du corps du téléphone, créant une inclinaison lorsque l'arrière du téléphone est installé sur la plaque de montage.
stabilisation_vidéo_test
Tests qui ont stabilisé la rotation de la vidéo par rapport au gyroscope
API testées:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Réussite:l'angle de rotation maximal sur les images est inférieur à 60% de la rotation du gyroscope.
Voici des exemples de vidéos avec et sans stabilisation.
Exemple de vidéo avec stabilisation
Exemple de vidéo sans stabilisation
instantané_le_test
Vérifie que les instantanés LED ne saturent ni ne teintent l'image.
Ce test ajoute un contrôleur d'éclairage au boîtier de fusion des capteurs pour contrôler les lumières. Avec les voyants définis sur OFF
, le test effectue une capture avec le mode AUTO_FLASH
défini sur ON
. Au cours 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 hotspot distinct 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'équilibre des blancs de l'image est raisonnable, le test calcule les ratios R/V et B/G, et vérifie si ces ratios sont compris entre 0,95 et 1,05.
API testées:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Réussite:les ratios R/G et B/G sont compris entre 0,95 et 1,05. La moyenne de l'image flash est comprise dans la plage (68, 102).