Cette page fournit une liste complète des tests effectués dans le cadre de Camera Image Test Suite (ITS), qui fait partie du vérificateur Android Compatibility Test Suite (CTS). 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 annoncées de la caméra 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.
Tests des portes ITS de la caméra en fonction des propriétés de caméra requises, du niveau d'API et du niveau de classe de performances multimédia (MPC). Au niveau de l'API, ITS utilise ro.product.first_api_level
pour valider 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 effectuer des tests sur les fonctionnalités ajoutées à un niveau d'API spécifique qui nécessitent une nouvelle capacité matérielle. 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 : Capturer les métadonnées, la gigue, le gyroscope, les vibrations
- scène1 : exposition, sensibilité, compensation EV, YUV vs JPEG/RAW
- scene2 : Détection de visage, tests nécessitant des scènes couleur ou obscurité totale
- scène3 : amélioration des contours, mouvement de l'objectif
- scène4 : rapport hauteur/largeur, recadrage, champ de vision
- scène5 : Ombrage de l'objectif
- scène6 : Zoom
- scene_extensions : extensions de caméra
- sensor_fusion : décalage de synchronisation caméra/gyroscope
Voir les sections individuelles pour une description de chaque scène.
scène0
Les tests Scene0 ne nécessitent aucune information spécifique sur la scène. Cependant, le téléphone doit être immobile pour les tests de gyroscope et de vibration.
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 CPU.
API testées :
Pass : capture une rafale d'images en taille réelle et l'appareil photo est suffisamment rapide pour éviter le délai d'attente.
test_capture_result_dump
Teste qu'un résultat de capture est renvoyé par une capture manuelle, puis le vide.
API testées :
Réussite : termine la capture et vide les résultats de la capture.
test_gyro_bias
Teste si le gyroscope a une sortie stable lorsque l'appareil est à l'arrêt. Les données sont tracées sous la forme d'une moyenne de 20 points de données.
API testées :
Réussite : le delta de la lecture du gyroscope est inférieur à 0,01 au fil du temps.
test_gyro_bias_plot.png
test_jitter
Mesure la gigue dans les horodatages de la caméra.
API testées :
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Réussite : il y a au moins un delta de 30 ms entre les images.
test_jitter_plot.png (Notez la petite plage de l'axe y. La gigue est en fait faible dans ce tracé.)
test_métadonnées
Teste la validité des entrées de métadonnées. Examine les résultats de la capture et les caractéristiques des objets de la caméra. Ce test utilise les valeurs d'exposition et de gain auto_capture_request
car le contenu de l'image 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éussi : le niveau matériel, les balises rollingShutterSkew
, frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV, la distance hyperfocale sont présents et ont des valeurs valides.
test_param_sensitivity_burst
Teste que le paramètre android.sensor.sensitivity
est appliqué correctement en rafale. Inspecte uniquement 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 : les données de sortie ont une tolérance d'erreur inférieure à 0,2 %.
test_read_write
Teste 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 de lecture et d'écriture correspondent sur toutes les prises de vue.
test_sensor_events
Teste que l’appareil interroge et imprime les événements de capteur 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 :
Réussite : les événements pour chaque capteur sont reçus.
test_solid_color_test_pattern
Teste que les mires de test de couleur unie sont générées correctement pour la mise en sourdine de la caméra. Si la mise en sourdine de la caméra est prise en charge, les mires de test de couleur unie doivent être prises en charge. Si la mise en sourdine de la caméra n'est pas prise en charge, les mires de test de couleur unie ne sont testées 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 prennent pas en charge 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 solides pris en charge sont de la bonne couleur et il existe une faible variance dans l'image.
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 couleurs. Ce test comprend les étapes suivantes :
- Capture des images pour tous les modèles de test pris en charge.
- Effectue une vérification simple de l’exactitude du motif de test de couleur unie et des barres de couleur.
API testées :
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Réussite : les modèles de test pris en charge sont générés correctement.
test_test_patterns_2.jpg
test_tonemap_curve
Teste la conversion du motif de test de RAW en 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 tonale. Garantit que le pipeline a des sorties de couleurs 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 :
-
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
Pass : Le YUV et le RAW se ressemblent.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Teste si les événements du capteur d’image et de mouvement se situent 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 horodatages de mouvement se situent entre les deux horodatages d'image.
test_vibration_restriction
Teste si la vibration de l'appareil fonctionne 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
Pass : l'appareil ne vibre pas lorsqu'il est mis en sourdine par l'API de restriction audio de la caméra.
scène 1
scene1 est un graphique gris. La carte grise doit couvrir les 30 % centraux du champ de vision de la caméra. La carte grise devrait défier modérément le 3A (exposition automatique, balance des blancs automatique, mise au point automatique) car la région centrale n'a aucune fonctionnalité. Cependant, la demande de capture spécifie la scène entière qui comprend suffisamment de fonctionnalités pour que 3A converge.
Les caméras RFoV peuvent être testées dans le WFoV ou le banc de test RFoV. Si une caméra RFoV est testée sur le banc d'essai WFoV, le graphique est mis à l'échelle de ⅔ pour garantir certaines limites pour le graphique gris dans le FoV afin d'aider 3A à converger. Pour des descriptions plus détaillées des bancs d'essai de caméras, voir Camera ITS-in-a-box .
scène1 : graphique en taille réelle (à gauche). Graphique à l'échelle ⅔ (à droite).
test_3a
Teste la convergence de 3A avec une cible moyennement 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 les algorithmes d’exposition automatique (AE) et de mise au point automatique (AF) 3A individuellement.
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 légales.
test_ae_precapture_trigger
Teste la machine à états AE lors de l’utilisation du 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 :
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Passe : AE converge.
test_auto_vs_manual
Les tests qui ont capturé 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 : les gains et la transformation manuels de la balance des blancs signalés dans chaque résultat de capture correspondent à l' estimate
automatique de la balance des blancs de l'algorithme 3A de l'appareil photo.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_noir_blanc
Teste que l’appareil produit des images entièrement 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
Pass : 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 inférieure à 1 % de différence.
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Prend 5 rafales de 50 images avec réglage de capture manuel et vérifie qu'elles sont toutes identiques. Ce test peut être utilisé pour identifier si certaines images sporadiques sont traitées différemment ou 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 identiques visuellement et en valeurs RVB.
Échec : affiche un pic ou une baisse du graphique moyen 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.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Teste que des données valides reviennent 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 valables pour toutes les captures et les paramètres manuels ne s'infiltrent pas dans la deuxième capture automatique. Trace la correction de l'ombrage de l'objectif pour les captures.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Teste que les flux RAW ne peuvent pas être recadré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 rogné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
test_crop_regions
Teste le fonctionnement des régions cadrées. Prend une image complète et crée des patchs de 5 régions différentes (coins et centre). Prend des images avec un recadrage défini pour les 5 régions. Compare les valeurs du patch et de l'image de recadrage.
API testées :
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Passer : l'image de la région recadrée correspond au patch qui correspond à l'image recadrée.
test_dng_noise_model
Vérifie que les paramètres du modèle brut DNG sont corrects. Le tracé représente la variance mesurée d'un patch central de la carte grise dans des images brutes capturées sur une plage de sensibilités, et compare ces valeurs avec la variance attendue à chaque sensibilité par le modèle de bruit DNG dans la caméra HAL (basé sur le Paramètres O,S renvoyés dans les objets de résultat de capture). Pour plus de détails 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 bruts du modèle DNG sont corrects. Les valeurs RVB attendues correspondent à celles des valeurs RVB réelles mesurées.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Teste que la compensation 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 aucune compensation EV appliquée et la valeur attendue saturera si les valeurs calculées dépassent la plage de valeurs réelles de l'image. Le test échoue si les valeurs attendues et les valeurs mesurées ne correspondent pas ou si les images sont surexposées en 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 croissante sans surexposition en cinq étapes.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Teste que la compensation EV 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 :
-
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
Pass : capture une augmentation de la luminance avec un paramètre de compensation EV accru, et les huit images capturées pour chaque paramètre de compensation EV ont des valeurs de luminance stables.
test_ev_compensation_basic.png
test_exposition
Teste qu'une exposition constante est obtenue lorsque l'ISO et le temps d'exposition varient. Prend une série de photos 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 bruyante. Vérifie que les valeurs moyennes des pixels de l’échantillon sont proches les unes des autres. Garantit 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 :
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite : les images ont la même luminosité, mais deviennent plus bruyantes avec un ISO plus élevé. Les plans RVB sont plats lorsque la valeur de l'exposition ISO* est constante sur l'espace de gain testé.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Les tests qui convertissent les images YUV et les images JPEG de l'appareil se ressemblent. Le test prend les 10 % centraux de l'image, calcule la valeur RVB et vérifie qu'elles correspondent.
API testées :
Réussite : La différence RVB moyenne entre chaque image est inférieure à 3 %.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Teste que les paramètres (exposition et gain) se verrouillent sur le cadre droit pour les caméras FULL
et LEVEL_3
. Prend une série de prises de vue en utilisant des requêtes consécutives, en faisant varier les paramètres de demande de capture entre les prises. Vérifie que les images ont les propriétés attendues.
API testées :
Réussite : les images [2, 3, 6, 8, 10, 12, 13] ont une sensibilité ISO ou une exposition accrue et s'affichent 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_means.png
test_linéarité
Teste que le traitement du périphérique peut être inversé en pixels linéaires. Capture une séquence de tirs avec l'appareil pointé vers 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, G, B doivent augmenter linéairement avec une sensibilité accrue.
test_linearity_plot_means.png
test_locked_burst
Teste le verrouillage 3A et la rafale YUV (en utilisant le réglage automatique). Ce test est conçu pour réussir même sur des appareils limités qui ne disposent pas MANUAL_SENSOR
ou PER_FRAME_CONTROLS
. Le test vérifie la cohérence de l'image YUV tandis que la vérification de la fréquence d'images est en CTS.
API testées :
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Passe : les captures semblent cohérentes.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Teste que les paramètres android.colorCorrection.*
sont appliqués lorsqu’ils sont définis. Prend des photos avec différentes valeurs de transformation et de gain, et vérifie qu'elles sont différentes 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. Le mappage de tons est une technique utilisée dans le traitement d'image pour mapper un ensemble de couleurs sur un autre afin de se rapprocher de l'apparence d'images à plage dynamique élevée dans un support ayant une 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_means.png
*L'axe des X représente les demandes de capture : 0 = unité, 1 = boost rouge, 2 = boost bleu
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (boost R)
test_param_color_correction_req=2.jpg (boost B)
test_param_exposure_time
Teste que le paramètre android.sensor.exposureTime
est appliqué.
API testées :
Passe : chaque plan est plus lumineux que le plan précédent.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Teste 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 mosaïque pour voir si un grand dégradé est créé pour vérifier si le flash s'est déclenché.
API testées :
Réussite : le centre de l'image de la tuile présente un grand dégradé, ce qui signifie que le flash s'est déclenché.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
Teste que le paramètre android.noiseReduction.mode
est appliqué correctement lorsqu’il est défini. Capture des images avec l’appareil photo faiblement éclairé. Utilise un gain analogique élevé pour garantir que l'image capturée est bruitée. Capture trois images, pour NR désactivé, « rapide » et « haute qualité ». Capture également une image avec un faible gain et une réduction du bruit désactivée, et utilise la variance de celle-ci comme référence. Plus le SNR (rapport signal/bruit) est élevé, meilleure est la qualité de l’image.
API testées :
Réussite : le SNR varie selon les 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 : OFF, 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é
Teste que le paramètre android.sensor.sensitivity
est appliqué. Le test augmente la sensibilité en 5 étapes avec une exposition fixe pour chaque prise de vue.
API testées :
Pass : RVB signifie que le centre de 10 % devient plus lumineux avec une sensibilité 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
test_param_shading_mode
Teste 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 commutés et les cartes d'ombrage des objectifs 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
test_param_tonemap_mode
Teste que le paramètre android.tonemap.mode est appliqué. Applique différentes courbes de carte de tons à chaque canal R, V, 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 :
-
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
Passer:
- test1 : les deux images ont une carte de tons linéaire, mais n=1 a un dégradé plus raide. Le canal G (vert) est plus lumineux pour l'image n=1.
- test2 : même tonalité, mais longueur différente. Les images sont les mêmes.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Vérifie l'augmentation de la sensibilité après RAW. Capture un ensemble d'images RAW et YUV avec une sensibilité différente, publie la combinaison d'augmentation de la sensibilité RAW et vérifie si la moyenne des pixels de sortie correspond aux paramètres de la demande.
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'accentuation 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_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_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_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. Capture en mode brut uniquement, 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
Passe : Chaque tir est plus bruyant que le tir précédent, à mesure que le gain augmente.
Utilise la variance de la cellule centrale de la grille des statistiques.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Capture un ensemble d'images brutes avec un temps d'exposition croissant et mesure les valeurs des pixels.
API testées :
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Passer : augmenter l'ISO (gain) rend les pixels plus sensibles à la lumière, donc le tracé se déplace vers la gauche.
test_raw_exposure_s=55.png
(10⁰ équivaut à 1 ms, 10¹ équivaut à 10 ms, 10⁻¹ équivaut à 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_raw_sensibilité
Capture un ensemble d'images brutes avec des sensibilités croissantes et mesure le bruit (variance) au centre de 10 % de l'image. Teste que chaque tir est plus bruyant 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
Passe : la variance augmente à chaque tir.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Teste que android.noiseReduction.mode
est appliqué pour les demandes de retraitement. Capture des images retraitées avec l’appareil photo faiblement éclairé. Utilise un gain analogique élevé pour garantir que l'image capturée est bruyante. Capture trois images retraitées, pour NR désactivé, « rapide » et « haute qualité ». Capture une image retraitée avec un faible gain et une réduction du bruit désactivée, et utilise la variance de celle-ci comme référence.
API testées :
Passe : RAPIDE >= OFF, QG >= RAPIDE, QG >> OFF
Tracé typique SNR vs NR_MODE
test_tonemap_sequence
Teste une séquence de prises de vue avec différentes courbes de tonalité. Capture 3 prises de vue manuelles avec une carte tonale linéaire. Capture 3 prises de vue manuelles avec la carte tonale par défaut. Calcule le delta entre chaque paire de trames consécutives.
API testées :
Réussite : Il y a 3 images identiques suivies d'un ensemble différent de 3 images 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_all
Teste que toutes les tailles et formats signalés pour la capture d’images fonctionnent. Utilise une requête manuelle avec une carte de tons linéaire afin que le YUV et le JPEG se ressemblent une fois convertis par le module image_processing_utils
. Les images ne sont pas enregistrées par défaut, mais peuvent être enregistrées 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'image ont une différence RMS maximale (valeur quadratique moyenne d'un signal) dans les images converties RVB avec 3 % de l'image YUV de la plus haute résolution.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Teste que les tailles et formats signalés pour la capture d’image fonctionnent.
API testées :
Réussite : 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. Utilise une requête manuelle avec une carte de tons linéaire afin que le YUV et le JPEG se ressemblent une fois convertis 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 inférieure à 1 % RMS (valeur quadratique moyenne d'un signal).
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 sorties RAW/RAW10/RAW12 et YUV si elles sont prises en charge. Utilise une requête manuelle avec une carte de tons linéaire, donc brut et YUV devraient être identiques. Compare les valeurs RVB centrales de 10 % des images converties RVB. Journaux android.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 inférieure à 3,5 % RMS (valeur quadratique moyenne d'un signal).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scène2_a
scene2_a a trois visages avec un fond gris et des vêtements neutres. Les visages sont choisis pour avoir une large gamme de carnations. Le graphique doit avoir la bonne orientation pour que la détection des visages fonctionne de manière optimale.
scène2_a
test_auto_flash
Teste que le flash automatique est déclenché 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 mosaïque présente un dégradé important. Pour déclencher le flash automatique, la tablette et les lumières du banc d'essai doivent être éteintes. La tablette est éteinte par le test et les lumières peuvent être éteintes automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement. En tant que tel, l'ouverture arrière de la tablette doit être entièrement recouverte par la tablette de scène, et l'ouverture avant doit être couverte par une ouverture et le téléphone DUT pour empêcher la lumière parasite de pénétrer dans la plate-forme.
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é, ce qui signifie que le flash automatique s'est déclenché.
test_autoframing
Teste le comportement de cadrage automatique de l’appareil photo. Effectue un zoom important de telle sorte 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
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
Passe : les trois visages sont détectés.
test_display_p3
Tests Afficher la capture P3 au format JPEG à l'aide de l'API ColorSpaceProfiles
. Teste que le fichier JPEG capturé a 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 :
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Réussite : le JPEG contient un profil ICC Display P3 et des couleurs en dehors de la gamme sRGB.
test_effects
Capture l'image pour les effets de caméra pris en charge et vérifie s'ils sont générés correctement. Le test vérifie uniquement les effets OFF
et MONO
, mais enregistre les images pour tous les effets pris en charge.
API testées :
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
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.jpg
test_format_combos
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()
Pass : Toutes les combinaisons sont capturées avec succès.
test_jpeg_qualité
Teste la qualité de compression JPEG de l’appareil photo. Améliorez les qualités JPEG via android.jpeg.quality
et assurez-vous 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 DQT luma/chroma de la caméra arrière du Pixel 4 par rapport à la qualité JPEG
Exemple de test échoué
A noter 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.
test_num_faces
Teste la détection des visages.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passe : trouve trois visages.
test_num_faces_fd_mode_1.jpg
test_preview_min_frame_rate
Teste 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 banc d'essai 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 au minimum 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 dans le test.
test_reprocess_uv_swap
Teste que le retraitement YUV n'échange pas les plans U et V. Ceci est détecté en calculant la somme des différences absolues (SAD) entre l'image retraitée et une capture non retraitée. Si l’échange des plans U et V de sortie de la capture retraitée entraîne une augmentation du SAD, alors la sortie est supposée avoir 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
Pass : Les avions U et V ne sont pas échangés.
test_reprocess_uv_swap.png
scène2_b
test_num_faces
Teste la détection des visages avec une diversité accrue des tons chair dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passe : trouve 3 visages.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Capture deux images en utilisant les plus grands formats YUV et JPEG courants avec le même rapport hauteur/largeur que le plus grand format JPEG ne dépassant pas une résolution de 1920 x 1440. Définit jpeg.quality
sur 100 et capture une demande à double surface. Convertit les deux images en tableaux RVB et calcule la différence quadratique moyenne (RMS) 3D 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 inférieure à 1 % RMS (valeur quadratique moyenne d'un signal).
scène2_c
test_num_faces
Teste la détection des visages avec une diversité accrue des tons chair dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passe : trouve 3 visages.
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.
Réussite : DOIT avoir une latence de capture JPEG de la caméra 2 < 1 000 ms pour une résolution de 1 080p, telle que mesurée par le test de performance de la caméra CTS dans des conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.
test_camera_launch_perf_class
Teste la latence de lancement de la caméra pour la classe de performances S, comme spécifié dans la section 2.2.7.2 Caméra du CDD.
Réussite : DOIT avoir une latence de démarrage de la caméra 2 (caméra ouverte jusqu'à la première image de prévisualisation) < 600 ms, telle que mesurée par le test de performance de la caméra CTS dans des conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.
scène2_d
test_num_faces
Teste la détection des visages avec une diversité accrue des tons chair dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passe : trouve 3 visages.
scène2_e
test_continuous_picture
50 images de résolution VGA sont capturées avec la demande de capture en définissant d'abord 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 s'installe à la fin d'une capture de 50 images.
test_num_faces
Teste la détection des visages avec une diversité accrue des tons chair dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passe : trouve 3 visages.
scène2_f
scene2_f a trois visages avec un fond blanc et des vêtements blancs. Les visages présentent une large gamme de tons chair et un contraste élevé avec l’arrière-plan.
scène2_f
test_num_faces
Teste la détection des visages avec une diversité accrue des tons chair dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passe : trouve 3 visages.
test_num_faces_fd_mode_1.jpg
scène3
Scene3 utilise le graphique ISO12233, et la plupart des tests utilisent une méthode d'extracteur 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 pour les scènes 1, 2 ou 4, mais seulement le graphique. Le graphique doit être dans l'orientation correcte pour que le Finder du graphique fonctionne de manière optimale.
test_3a_consistence
Tests pour la cohérence 3A.
API testés:
-
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
PASS: 3A converge l'exposition, le gain, le AWB (balance des blancs auto) et la FD (distance de mise au point) trois fois dans la tolérance.
test_edge_enhancement
Tests que le paramètre android.edge.mode
est appliqué correctement. Capture des images non déprochées pour chaque mode de bord et renvoie la netteté de l'image de sortie et des métadonnées de résultat de capture. Traite une demande de capture avec un mode de bord donné, une sensibilité, un temps d'exposition, une distance de mise au point et un paramètre de surface de sortie.
Passer: mode HQ
(2) plus net que le mode OFF
(0). Mode FAST
(1) MODE MOTER QUE MODE OFF
. Le mode HQ
ne plus net ou égal au mode FAST
.
API testés:
Paramètres de la caméra touchés:
-
EDGE_MODE
test_edge_enhancement_edge = 0.jpg
test_edge_enhancement_edge = 1.jpg (mode rapide)
test_edge_enhancement_edge = 2.jpg (mode de haute qualité)
test_flip_mirror
Tests si l'image est correctement orientée selon la section CDD 7.5.2 Caméra frontale [C-1-5] .
Les images en miroir, retourné ou tourné peuvent être identifiées par la fonction de diamant près du centre.
Passez: l'image n'est pas retournée, en miroir ou en rotation.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
Tests si le paysage à l'observation des portraits fonctionne correctement pour les capteurs axés sur le paysage.
API testés:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
PASS: Le test est capable de localiser un graphique avec la rotation attendue (0 degrés lorsque le paysage au dépôt de portrait est désactivé, 90 degrés lorsqu'ils sont activés).
test_landscape_to_portrait.png
test_lens_movement_reportting
Tests si le drapeau de mouvement de l'objectif est correctement signalé. Capture une rafale de 24 images avec les 12 premières images à la distance de mise au point optimale (comme le trouve 3A) et les 12 dernières images à la distance de mise au point minimum. Autour du cadre 12, l'objectif se déplace provoquant la baisse de la netteté. La netteté se stabilise finalement lorsque l'objectif se déplace vers la position finale. Le drapeau de mouvement de l'objectif doit être affirmé dans toutes les cadres où la netteté est intermédiaire à la netteté dans les premiers cadres avec la lentille stationnaire à une distance focale optimale, et les derniers cadres où l'objectif est stationnaire à la distance focale minimale. Le cadre exact que l'objectif déplace n'est pas important: ce qui est vérifié, c'est que le drapeau de mouvement est affirmé lorsque l'objectif se déplace.
API testés:
-
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
PASS: Le drapeau de mouvement de l'objectif est True
dans le cadre avec un changement de netteté.
Mécanismes d'échec:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) danstest_log.DEBUG
est affirmé uniquement dans les cadres où la netteté ne change pas. - Frames avec
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) danstest_log.DEBUG
a une différence de netteté par rapport aux premiers cadres à une distance focale optimale ou les derniers cadres à une distance de focalisation minimale.
test_reprocess_edge_enhancement
Tests si les méthodes de retraitement prises en charge pour l'amélioration des bords fonctionnent correctement. Traite une demande de capture avec un mode de bord de retraité donné et compare différents modes pour capturer avec les modes de bord de retraitement désactivés.
API testés:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: La netteté pour les différents modes de bord est correcte. HQ
(mode 2) est plus net que OFF
(mode 0), et l'amélioration entre différents modes est similaire.
test_reprocess_edge_enhancement_plot.png
scène4
Scene4 se compose d'un cercle noir sur un fond blanc à l'intérieur d'un carré.
scène4
test_aspect_ratio_and_crop
Tests si les images sont déformées ou recadrées de manière inattendue dans le pipeline d'images. Prend des photos d'un cercle sur tous les formats. Vérifie que le cercle n'est pas déformé, le cercle ne se déplace pas du centre d'image et le cercle ne change pas de taille incorrectement avec différents rapports d'aspect ou résolutions.
API testés:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3% et le FOV maximal possible (champ de vision) est préservé.
Mécanismes d'échec:
- Le cercle de l'image capturée est déformé par le pipeline de traitement.
- L'image de résolution inférieure est double recadrée dans le pipeline d'images, créant différents FOV 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 rapport d'aspect extrême réduisant la hauteur ou la largeur de l'image.
- Le cercle dans l'image capturée a une réflexion au centre et ne semble pas entièrement rempli.
test_multi_camera_alignment
Teste les paramètres d'étalonnage de la caméra liés au positionnement de la caméra pour les systèmes multi-caméras. En utilisant les sous-caméras physiques multi-caméras, prend une photo avec l'une des caméras physiques. Trouve le Circle Center. Projette le Circle Center vers les coordonnées mondiales pour chaque appareil photo. Compare la différence entre les centres Circle des caméras dans les coordonnées mondiales. Reprocute les coordonnées du monde aux coordonnées des pixels et se compare aux originaux en tant que vérification de validité. Compare les tailles de cercle qui vérifient si les focales des caméras sont différentes.
API testés:
-
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
PASS: Les centres et tailles de cercle sont comme prévu dans les images projetées par rapport aux images capturées à l'aide des données d'étalonnage de la caméra et des focales.
Mécanismes d'échec:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, ouLENS_POSE_ROTATION
sont des valeurs de conception et non des données d'étalonnage réelles. - Le système de caméra n'est pas approprié pour la configuration du test. Par exemple, tester un système de caméra large et ultra-large avec la plate-forme d'essai RFOV. Pour plus d'informations, consultez la caméra sa FAQ1 dans la boîte .
test_preview_aspect_ratio_and_crop
Semblable au test test_aspect_ratio_and_crop pour les captures encore, ce test vérifie les formats d'aperçu pris en charge pour s'assurer que les trames d'aperçu ne sont pas étirées ou recadrées de manière inappropriée. Vérifie que le rapport d'aspect du cercle ne change pas, les images recadrées maintiennent le cercle au centre du cadre et que la taille du cercle ne change pas pour un format constant ou avec des résolutions différentes (chèque de vision).
API testés:
-
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
Pass: Les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3% et le FOV maximal possible (champ de vision) est préservé.
test_preview_stabilisation_fov
Vérifie les tailles d'aperçu prises en charge pour s'assurer que le FOV est recadré de manière appropriée. Le test capture deux vidéos, une avec stabilisation ON
aperçu et une autre avec une stabilisation OFF
aperçu. Une trame représentative est sélectionnée dans chaque vidéo et analysée pour s'assurer que les modifications du FOV dans les deux vidéos sont dans SPEC.
API testés:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASS: Le rapport d'aspect du cercle reste à peu près constant, l'emplacement central du cercle reste stable et la taille du cercle ne change plus de 20%.
test_video_aspect_ratio_and_crop
Prend des vidéos d'un cercle à l'intérieur d'un carré sur tous les formats vidéo. Extrait les cadres clés et vérifie le rapport d'aspect du cercle ne change pas, les images recadrées gardent le cercle au centre et la taille du cercle ne change pas pour un format constant ou avec une résolution différente (chèque de vue).
API testés:
-
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
Pass: Les cadres vidéo ne sont pas étirés, le centre des cadres ne diffère pas de plus de 3% et le FOV maximum possible (champ de vision) est préservé.
scène5
Scene5 nécessite une scène grise uniformément éclairée. Ceci est accompli par un diffuseur placé sur la lentille de la caméra. Nous recommandons le diffuseur suivant: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Pour préparer la scène, attachez un diffuseur devant la caméra et pointez la caméra vers une source d'éclairage d'environ 2000 lux. Les images capturées pour Scene5 nécessitent un éclairage diffus sans caractéristiques évidentes. Ce qui suit est un exemple d'image:
Scene5 Capture
test_lens_shading_and_color_uniformité
Tests que la correction de l'ombrage de l'objectif est appliquée de manière appropriée et que la couleur d'une scène uniforme monochrome est uniformément distribuée. Effectue ce test sur un cadre YUV avec Auto 3A. L'ombrage de l'objectif est évalué sur la base du canal Y. Mesure la valeur Y moyenne pour chaque bloc d'échantillonnage spécifié et détermine le passage ou l'échec en comparant la valeur centrale Y. Le test d'uniformité des couleurs est évalué dans l'espace R / G et B / G.
API testés:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
PASS: Au rayon spécifié de l'image, la variance de la valeur R / G et B / G doit être inférieure à 20% pour réussir le test.
scène6
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 grande plage.
scène6
test_in_sensor_zoom
Teste le comportement de la fonction de zoom dans le capot de la caméra, qui produit des images brutes recadrées.
Avec le cas d'utilisation du flux défini sur CROPPED_RAW
, le test prend deux captures sur la gamme de zoom, une image brute complète du champ de vision (FOV) et une image brute recadrée. Le test convertit les images en tableaux RVB, diminue l'image brute recadrée pleine grandeur à la taille rapportée par SCALER_RAW_CROP_REGION
, et calcule la différence carrée moyenne de racine 3D (RMS) entre les deux images.
API testés:
-
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
Pass: La différence carrée moyenne de racine 3D (RMS) entre l'image brute recadrée à l'échelle réduite et l'image brute FOV 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 grossissent à mesure que la caméra zoome.
API testés:
-
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
PASS: La taille relative du cercle capturé est exacte avec le rapport zoom demandé pour s'assurer que la caméra zoomage correctement.
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. 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 rapports de zoom dans les métadonnées de capture.
API testés:
-
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
PASS: La taille relative du cercle capturé est précise par rapport aux métadonnées de résultat du rapport zoom.
test_preview_video_zoom_match
Teste que tout en enregistrant et en zoomant, en prévisualisation vidéo et en sortie vidéo et enregistrez la même sortie. Calcule la taille du cercle le plus proche du centre à différents rapports de zoom et vérifie si la taille du cercle augmente à mesure que le rapport zoom augmente.
API testés:
-
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
PASS: La taille relative du cercle capturé est exacte avec le rapport zoom demandé dans la vidéo et l'aperçu.
Vga_640x480_key_frame.png (avant zoom)
aperview_640x480_key_frame.png (avant zoom)
Vga_640x480_key_frame.png (après zoom)
aperview_640x480_key_frame.png (après zoom)
scene_extensions
Les tests scene_extensions
sont destinés aux extensions de la caméra et doivent utiliser la caméra dans sa boîte , car elles nécessitent un contrôle précis de l'environnement de test.
scene_hdr
La scène scene_hdr
se compose d'un portrait à gauche et d'un code QR à faible contraste à droite.
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és:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
PASS: L'extension HDR réduit le nombre de modifications de contraste nécessaires pour détecter le code QR ou réduit le gradient à travers le code QR.
scene_night
La scène scene_night
se compose d'un cercle blanc avec quatre petits cercles à l'intérieur, le tout sur un fond noir. Le cercle plus petit dans le coin supérieur droit est plus sombre que les autres pour indiquer l'orientation.
scene_night
test_night_extension
Teste l' extension de nuit . Prend les captures avec et sans l'extension activée, et vérifie les éléments suivants:
- La capture avec l'extension de nuit activée prend plus de temps.
- La capture avec l'extension de nuit activée est plus lumineuse ou a des artefacts de scène avec une apparence améliorée.
API testés:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Pass: Comparé à une capture sans extension nocturne activée, une capture avec l'extension nocturne activée prend au moins 0,5 seconde de plus. La capture doit être au moins 10% plus lumineuse, ou les points gris dans la scène doivent être des valeurs de 20 pixels inférieures 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 des résultats optimaux, assurez-vous que le tableau de test est monté à plat. Les graphiques qui ne sont pas plats affectent les calculs de rotation pour de nombreux tests. Les tests sensor_fusion
peuvent être automatisés avec la boîte de fusion du capteur .
Image de damier
test_multi_camera_frame_sync
Les tests qui cadrent les horodatages capturés par la caméra logique sont à moins de 10 ms en calculant des angles de carrés dans le damier pour déterminer l'horodatage.
API testés:
-
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()
Passez: l'angle entre les images de chaque appareil photo ne change pas sensiblement lorsque le téléphone est tourné.
test_preview_stabilisation
Les tests qui ont stabilisé la vidéo d'aperçu tournent moins que le gyroscope.
API testés:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASS: La rotation de l'angle maximum sur les cadres est inférieure à 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_sensor_fusion
Teste la différence d'horodatage entre la caméra et le gyroscope pour les applications AR et VR. Le téléphone tourne à 90 degrés 10 fois devant le motif de damier. Le mouvement est d'environ 2 s aller-retour. Ce test est ignoré si aucun gyroscope n'est inclus ou si le paramètre en temps réel de la source REALTIME
n'est pas activé.
Le test test_sensor_fusion
génère un certain nombre de parcelles. Les deux complots les plus importants pour le débogage sont:
test_sensor_fusion_gyro_events
: montre les événements gyroscope du téléphone pendant le test. Le mouvement dans la direction x et y implique que le téléphone n'est pas monté en toute sécurité sur la plaque de montage, réduisant la probabilité de passage du test. Le nombre de cycles dans l'intrigue dépend de la vitesse d'écriture pour enregistrer les cadres.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: montre l'alignement du gyroscope et des événements de la caméra. Ce tracé doit afficher le mouvement correspondant entre la caméra et le gyroscope à +/- 1 ms.test_sensor_fusion_plot_rotations
API testés:
-
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
Pass: Le décalage des horodatages de la caméra et du gyroscope est inférieur à 1 ms selon la section CDD 7.3.9 Capteurs de haute fidélité [C-2-14] .
Mécanismes d'échec:
- Erreur de décalage: le décalage de la caméra-gyroscope n'est pas correctement calibré à l'intérieur de +/- 1 ms.
- Cadre Drops: Le pipeline n'est pas assez rapide pour capturer 200 images consécutivement.
- Erreurs de socket:
adb
ne peut pas se connecter de manière fiable au DUT assez longtemps pour exécuter le test. - Le graphique n'est pas monté à plat. Le tracé
test_sensor_fusion_plot_rotations
a des cadres où le gyroscope et la rotation de la caméra varient considérablement lorsque la caméra tourne à travers les parties du graphique qui ne sont pas plates. - La caméra n'est pas montée à plat. Le tracé
test_sensor_fusion_gyro_events
montre un mouvement dans les plans x et y. Cette défaillance est plus courante dans les caméras frontales, car la caméra arrière a souvent une bosse surélevée au reste du corps du téléphone, créant une inclinaison lors du montage à l'arrière du téléphone vers la plaque de montage.
test_video_stabilisation
Les tests qui stabilisent la vidéo tournent moins que le gyroscope.
API testés:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
PASS: La rotation de l'angle maximum sur les cadres est inférieure à 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
test_led_snapshot
Tests que les instantanés LED ne saturent pas ou ne teindent pas l'image.
Ce test ajoute un contrôleur d'éclairage à la boîte de fusion du capteur pour contrôler les lumières. Avec les lumières OFF
, le test prend une capture avec le mode AUTO_FLASH
réglé sur ON
. Au cours de cette capture, le test exécute une séquence de précapture avec le déclencheur aePrecapture
pour START
et définit l'intention de capture pour Preview
pour prendre la capture avec Flash.
Étant donné que la capture a un hotspot distinctif en raison d'un flash, le test calcule la moyenne de l'image flash de toute 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 rapports R / G et B / G et vérifie si les rapports sont à 0,95 et 1,05.
API testés:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
PASS: Les rapports R / G et B / G sont à moins de 0,95 et 1,05. La moyenne de l'image flash est dans la gamme (68, 102).