Questa pagina fornisce un elenco completo dei test nell'ambito del Camera Image Test Suite (ITS), che fa parte del Verifier del Compatibility Test Suite (CTS) di Android. I test ITS sono test funzionali, ovvero non misurano la qualità delle immagini, ma che tutte le funzioni della fotocamera pubblicizzate funzionano come previsto. Questo documento consente a sviluppatori e tester di capire cosa fanno i singoli test e come eseguire il debug degli errori di test.
I controlli ITS della fotocamera filtrano i test in base alle proprietà della fotocamera richieste, al livello API e al livello della classe di prestazioni media (MPC). Per il livello API, ITS utilizza
ro.product.first_api_level
per bloccare i test aggiunti in un livello API specifico che
testano le esperienze negative degli utenti per le funzionalità nei livelli API inferiori. ITS
utilizza ro.vendor.api_level
per eseguire test di controllo per le funzionalità aggiunte in un livello
dell'API specifico che richiedono nuove funzionalità hardware. Se ro.odm.build.media_performance_class
è definito per un dispositivo, ITS richiede l'esecuzione di test specifici a seconda del livello MPC.
I test sono raggruppati per scena come segue:
- scene0: acquisizione metadati, tremolio, giroscopio, vibrazione
- scene1: esposizione, sensibilità, compensazione EV, YUV rispetto a JPEG/RAW
- scene2: la funzionalità di rilevamento facciale, test che richiedono scene a colori
- scene3: miglioramento dei bordi, movimento dell'obiettivo
- scene4: proporzioni, ritaglio, campo visivo
- scene5: ombreggiatura dell'obiettivo
- scene6: zoom
- scene7: passaggio tra più videocamere
- scene8: misurazione della regione AE e AWB
- scene9: compressione JPEG
- scene_extensions: estensioni per la fotocamera
- scene_flash: flash automatico, frequenza frame minima
- scene_video: cadute di frame
- sensor_fusion: offset dei tempi della fotocamera/del giroscopio
- feature_combination: combinazioni di funzionalità
Consulta le singole sezioni per una descrizione di ogni scena.
scene0
I test Scene0 non richiedono informazioni specifiche sulla scena. Tuttavia, lo smartphone deve essere statico per i test del giroscopio e delle vibrazioni.
test_jitter
Misura il jitter nei timestamp della videocamera.
API testate:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Passa:tra un frame e l'altro deve esserci un delta di almeno 30 ms.
test_jitter_plot.png (nota l'intervallo ridotto dell'asse Y. Il tremolio in realtà è minimo in questo grafico.)
test_metadata
Verifica la validità delle voci dei metadati. Esamina i risultati di acquisizione e gli oggetti delle caratteristiche della fotocamera. Questo test utilizza i valori di auto_capture_request
esposizione
e guadagno perché i contenuti delle immagini non sono importanti.
API testate:
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
Superata: sono presenti livello hardware, rollingShutterSkew
, tag frameDuration
,
timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV,
distanza iperfocale.
test_request_capture_match
Verifica che il dispositivo scriva i valori di esposizione e guadagno corretti leggendo nuovamente i metadati di acquisizione.
API testate:
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
Passaggio: i valori dei metadati di richiesta e acquisizione corrispondono in tutti gli scatti.
test_sensor_events
Verifica che le query del dispositivo e stampi gli eventi del sensore per i dispositivi che dichiarano di supportare la fusione dei sensori. I sensori previsti sono l'accelerometro, il giroscopio e il magnetometro. Questo test funziona solo se lo schermo è acceso, ovvero se il dispositivo non è in modalità standby.
API testate:
Pass: vengono ricevuti gli eventi per ciascun sensore.
test_color_solid_test_pattern
Verifica che i pattern di prova a colori uniformi vengano generati correttamente per la disattivazione dell'audio della videocamera. Se la disattivazione dell'audio della videocamera è supportata, devono essere supportati i motivi di test dei colori a tinta unita. Se la disattivazione dell'audio della videocamera non è supportata, i pattern di test dei colori solidi vengono testati solo se la funzionalità è pubblicizzata.
Se sono supportate le immagini RAW, viene verificata anche l'assegnazione dei colori. I colori testati sono nero, bianco, rosso, blu e verde. Per le fotocamere che non supportano le immagini RAW, viene testato solo il nero.
API testate:
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
Passato:i pattern di test solidi supportati sono del colore corretto e l'immagine presenta una bassa variabilità.
test_test_pattern
Testa il parametro android.sensor.testPatternMode
per acquisire frame per ogni schema di prova valido e controlla che i frame vengano generati correttamente per colori pieni e barre di colore. Questo test include i seguenti passaggi:
- Acquisisce immagini per tutti i pattern di test supportati.
- Esegue un semplice controllo di correttezza per il motivo di prova a tinta unita e le barre di colore.
API testate:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Superato: i pattern di test supportati sono generati correttamente.
test_test_pattern_2.jpg
test_tonemap_curve
Verifica la conversione del pattern di test da RAW a YUV con una mappa tonale lineare. Questo test
richiede android.sensor.testPatternMode = 2
(COLOR_BARS) per generare un pattern di immagine
perfetto per la conversione delle mappe tonali. Garantisce che la pipeline abbia uscite di colore adeguate con mappatura tonale lineare e input di immagine ideale (si basa su test_test_patterns
).
API testate:
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
Passaggio: i file YUV e RAW sono simili tra loro.
test_tonemap_curve_raw_2.jpg
test_tono_curva_yuv_2.jpg
test_unified_timestamp
Verifica se gli eventi dell'immagine e del sensore di movimento si trovano nello stesso dominio temporale.
API testate:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Superata: i timestamp del movimento sono compresi tra i due timestamp delle immagini.
limitazione_vibrazione_di_prova
Verifica se la vibrazione del dispositivo funziona come previsto.
API testate:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Superato: il dispositivo non vibra quando viene disattivato dall'API Camera Audio Restrizione.
scene1
scene1 è un grafico grigio. Il grafico grigio deve coprire il 30% centrale del campo visivo della videocamera. Il grafico grigio dovrebbe mettere moderatamente alla prova le funzionalità di 3A (esposizione automatica, bilanciamento del bianco automatico, messa a fuoco automatica) poiché la regione centrale non presenta elementi. Tuttavia, la richiesta di acquisizione specifica l'intera scena, che include funzionalità sufficienti per la convergenza della tecnologia 3A.
Le videocamere RFoV possono essere testate nell'apparecchiatura di test WFoV o RFoV. Se una videocamera con campo visivo a raggio ridotto viene testata nell'apparecchiatura di test con campo visivo a tutto tondo, il grafico viene scalato per ⅔ per garantire alcuni limiti per il grafico grigio nel campo visivo in modo da favorire la convergenza della 3A. Per una descrizione più dettagliata dei supporti di test per le videocamere, consulta Videocamera ITS in una scatola.
scene1: grafico a grandezza originale (a sinistra). Grafico in scala di 2⁄3 (a destra).
test_ae_precapture_trigger
Testa la macchina a stati AE quando si utilizza l'attivatore di preacquisizione. Acquisisce cinque richieste manuali con l'AE disattivato. L'ultima richiesta ha un attivatore AE preacquisizione, che deve essere ignorato perché l'AE è disattivato.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Passa: l'AE converge.
test_auto_vs_manual
I test che hanno acquisito foto automatiche e manuali sono uguali.
API testate:
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
Pass: i guadagni e la trasformazione del bilanciamento del bianco manuale registrati in ogni risultato di acquisizione corrispondeno al bilanciamento del bianco automatico estimate
dell'algoritmo 3A della fotocamera.
test_auto_vs_manuale_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Verifica che il dispositivo produca immagini completamente in bianco e nero. Scatta due foto: la prima con guadagno estremamente basso ed esposizione breve, che genera una foto nera, e la seconda con guadagno estremamente elevato ed esposizione lunga, che genera una foto bianca.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: produce immagini in bianco e nero. I canali saturi delle immagini bianche hanno valori RGB di [255, 255, 255] con un margine di errore inferiore all'1%.
prova_nero_bianco_nero.jpg | bianco_nero_di_prova.jpg |
test_black_white_plot_means.png
acquisizione_burst_test
Verifica che l'intera pipeline di acquisizione sia in grado di stare al passo con la velocità dell'acquisizione a grandezza originale e del tempo di CPU.
API testate:
Passa:acquisisce una raffica di immagini a grandezza naturale, controlla la luminosità dell'immagine e gli eventuali cali di frame.
test_burst_sameness_manual
Scatta 5 foto simili con l'impostazione di acquisizione manuale e controlla che siano tutte uguali. Questo test può essere utilizzato per identificare se sono presenti frame sporadici elaborati in modo diverso o con artefatti.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Superato: le immagini sono visivamente identiche e nei valori RGB.
Non riuscito: mostra un picco o un calo del grafico medio RGB all'inizio di ogni scoppio
- La tolleranza è del 3% per
first_API_level
< 30 - La tolleranza è del 2% per
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
risultato_acquisizione_test
Verifica che i dati validi vengano restituiti negli oggetti CaptureResult
. Esegue un'acquisizione automatica,
manuale e automatica.
API testate:
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
Pass: i metadati sono validi per tutte le acquisizioni e le impostazioni manuali non vengono trasferite alla seconda acquisizione automatica. Grafica la correzione dell'ombreggiatura dell'obiettivo per le acquisizioni.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Verifica che gli stream RAW non siano ritagliabili.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Passa:le immagini YUV vengono ritagliate al centro, ma non le immagini 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
Verifica che le regioni di ritaglio funzionino. Acquisisce un'immagine completa e crea patch di 5 regioni diverse (angoli e centro). Scatta foto con il ritaglio impostato per le 5 regioni. Confronta i valori dell'immagine patch e dell'immagine ritagliata.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: l'immagine della regione ritagliata corrisponde alla patch che corrisponde all'immagine ritagliata.
Modello_dng_noise_prova
Verifica che i parametri del modello RAW DNG siano corretti. Il grafico mostra la variazione misurata di una patch centrale della scheda grigia negli scatti RAW acquisiti su un intervallo di sensibilità e confronta questi valori con la variazione prevista a ogni sensibilità dal modello di rumore DNG nell'HAL della fotocamera (in base ai parametri O, S restituiti negli oggetti di risultato dell'acquisizione). Per maggiori dettagli sul modello di rumore DNG, scarica il seguente documento sul modello di rumore DNG.
API testate:
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
Superato: i parametri del modello non elaborato DNG sono corretti. I valori RGB previsti corrispondono a quelli RGB effettivi misurati.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Verifica che la compensazione del valore di esposizione (EV) sia applicata. Il test aumenta l'esposizione in otto passaggi e verifica la luminosità misurata rispetto alla luminosità prevista. I valori previsti vengono calcolati dalla luminosità dell'immagine senza compensazione EV applicata e il valore previsto viene saturato se i valori calcolati superano l'intervallo di valori dell'immagine effettiva. Il test non va a buon fine se i valori previsti e quelli misurati non corrispondono o se le immagini sono sovraesposte entro cinque passaggi.
API testate:
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
Superato: le immagini mostrano un aumento dell'esposizione senza sovraesposizione nel giro di cinque passaggi.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Verifica che la compensazione EV venga applicata utilizzando un intervallo creato con
CONTROL_AE_COMPENSATION_STEP
. A ogni valore di compensazione vengono
acquisiti otto frame.
API testate:
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: l'aumento della luminosità viene acquisito con l'aumento dell'impostazione di compensazione dell'EV e gli otto frame acquisiti per ogni impostazione di compensazione dell'EV hanno valori di luminosità stabili.
test_ev_compensation_basic.png
test_exposure_x_iso
Verifica che venga raggiunta un'esposizione costante man mano che ISO e tempo di esposizione variano. Scatta una serie di scatti in cui ISO e tempo di esposizione sono stati scelti in modo bilanciato.
I risultati dovrebbero avere la stessa luminosità, ma nel corso della sequenza l'immagine dovrebbe diventare più rumorosa. Verifica che i valori medi dei pixel del campione siano vicini tra loro. Garantisce
che le immagini non siano limitate a 0 o 1 (il che le farebbe apparire come linee piatte). Il test può essere eseguito anche con immagini RAW impostando il flag debug
nel
file di configurazione.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Superato: le immagini hanno la stessa luminosità, ma diventano più rumorose con ISO più elevati. I piani RGB sono piatti quando il valore di ISO*esposizione è costante nell'intervallo di guadagno testato.
Meccanismo di errore:
- In
test_exposure_plot_means.png
, all'aumento dei valori del moltiplicatore di guadagno (asse x), i valori medi del piano RGB normalizzati (asse y) iniziano a deviare dai valori del moltiplicatore di guadagno basso.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
I test hanno dimostrato che le immagini YUV convertite e le immagini JPEG del dispositivo hanno lo stesso aspetto. Il test prende il 10% centrale dell'immagine, ne calcola il valore RGB e verifica che corrispondano.
API testate:
Passaggio: la differenza RGB media tra ogni immagine è inferiore al 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Verifica che le impostazioni (esposizione e guadagno) si aggancino al frame corretto per le videocamere FULL
e
LEVEL_3
. Effettua una serie di scatti utilizzando richieste in sequenza, variando i parametri della richiesta di acquisizione tra le immagini. Verifica che le immagini abbiano le proprietà previste.
API testate:
Passaggio: le immagini [2, 3, 6, 8, 10, 12, 13] hanno un'ISO o un'esposizione aumentate e appaiono con medie RGB più elevate su 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_linearity
Verifica che l'elaborazione del dispositivo possa essere invertita in pixel lineari. Acquisisce una sequenza di scatti con il dispositivo rivolto verso un bersaglio uniforme.
API testate:
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
Pass: i valori R, G, B devono aumentare in modo lineare con l'aumento della sensibilità.
test_linearity_plot_means.png
test_locked_burst
Testa il blocco da 3 A e la funzione di raffica YUV (utilizzando l'impostazione automatica). Questo test è progettato per essere superato anche su dispositivi con limitazioni che non dispongono di MANUAL_SENSOR
o PER_FRAME_CONTROLS
.
Il test controlla la coerenza delle immagini YUV, mentre il controllo della frequenza frame è in CTS.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Passa:le acquisizioni sembrano coerenti.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
frame_burst_test_bloccato2.jpg
test_param_color_aggiustamento
Verifica che i parametri android.colorCorrection.*
vengano applicati quando sono impostati.
Scatta foto con valori di trasformazione e guadagno diversi e verifica che abbiano un aspetto corrispondentemente diverso. La trasformazione e i guadagni vengono scelti per rendere l'output sempre più rosso o blu. Utilizza una mappatura tonale lineare. La mappatura tonale è una tecnica impiegata nell'elaborazione delle immagini per mappare un insieme di colori a un altro in modo da approssimare l'aspetto delle immagini ad alta gamma dinamica in un mezzo con una gamma dinamica più limitata.
API testate:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Superato: i valori di R e B aumentano in base alla trasformazione.
test_param_color_correction_plot_means.png
*Asse x sono le richieste di cattura: 0 = unità, 1=booster rosso, 2= boost blu
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (B boost)
parametro_test_modalità_flash
Verifica che il parametro android.flash.mode
venga applicato. Imposta manualmente l'esposizione sul lato scuro, in modo che sia evidente se il flash è stato attivato o meno, e utilizza una mappatura tonale lineare. Controlla il centro con l'immagine a riquadri per vedere se viene creato un gradiente ampio per verificare se il flash è stato attivato.
API testate:
Superato: al centro dell'immagine del riquadro è presente un'ampia sfumatura che indica che il flash si è attivato.
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
Verifica che il parametro android.noiseReduction.mode
venga applicato correttamente
quando impostato. Scatta foto con la fotocamera poco illuminata. Utilizza un guadagno analogico elevato
per garantire che l'immagine acquisita sia rumorosa. Acquisisce tre immagini con riduzione del rumore disattivata, "veloce" e "alta qualità". Acquisisce anche un'immagine con guadagno basso e NR disattivato e utilizza la varianza di questa come linea di base. Maggiore è il rapporto SNR (segnale/disturbo), migliore è la qualità dell'immagine.
API testate:
Superato: l'SNR varia con diverse modalità di riduzione del rumore e si comporta in modo simile al grafico seguente.
test_param_noise_reduction_plot_SNRs.png
0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduct_high_gain_nr=2.jpg
test_param_noise_reduct_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
modalità_shading_param_test
Verifica che il parametro android.shading.mode
venga applicato.
API testate:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Passaggio: le modalità di ombreggiatura vengono cambiate e le mappe di ombreggiatura dell'obiettivo vengono modificate come previsto.
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
Verifica che il parametro android.tonemap.mode sia applicato. Applica curve di mappatura tonale diverse a ciascun canale R, G, B e controlla che le immagini di output vengano modificate come previsto. Questo test prevede due test: test1 e test2.
API testate:
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
Superamento:
- test1: entrambe le immagini hanno una mappatura tonale lineare, ma n=1 ha un gradiente più accentuato. Il canale G (verde) è più luminoso per l'immagine n=1.
- test2: stessa mappatura tonale, ma durata diversa. Le immagini sono le stesse.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Controlla l'aumento della sensibilità RAW. Acquisisce un insieme di immagini RAW e YUV con diversa sensibilità, pubblica la combinazione di aumento della sensibilità RAW e controlla se la media dei pixel in uscita corrisponde alle impostazioni della richiesta.
API testate:
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
Pass: le immagini RAW diventano più scure man mano che l'aumento aumenta, mentre le immagini YUV rimangono costanti in 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
sensibilità_burst_test_raw
Acquisisce un insieme di immagini RAW con guadagni crescenti e misura il rumore. Acquisisce solo in formato RAW in una raffica.
API testate:
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
Superato: ogni scatto è più rumoroso rispetto a quello precedente, in quanto il guadagno aumenta.
Utilizza la varianza della cella della griglia delle statistiche centrali.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Acquisisce un insieme di immagini RAW con un tempo di esposizione crescente e misura i valori dei pixel.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Superata: l'aumento dell'ISO (guadagno) rende i pixel più sensibili alla luce, quindi il grafico si sposta verso sinistra.
test_raw_exposure_s=55.png
(10⁰ è 1 ms, 10¹ è 10 ms, 10⁻¹ è 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_sensitivity
Acquisisce un insieme di immagini RAW con sensibilità crescenti e misura il rumore (varianza) nel 10% centrale dell'immagine. Verifica che ogni ripresa sia più rumorosa di quella precedente.
API testate:
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
Passaggio: la varianza aumenta con ogni scatto.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Verifica che android.noiseReduction.mode
venga applicato per le richieste di rielaborazione.
Acquisisce immagini riprocessate con la fotocamera poco illuminata. Utilizza un guadagno analogico elevato per garantire che l'immagine acquisita sia rumorosa. Acquisisce tre immagini riprocessate, per NR
off, "veloce" e "alta qualità". Acquisisce un'immagine rielaborata con guadagno basso e NR disattivati e utilizza la varianza di questa impostazione come riferimento.
API testate:
Passa:FAST >= OFF, HQ >= FAST, HQ >> OFF
Grafico tipico tra SNR e NR_MODE
test_tonemap_sequence
Testa una sequenza di scatti con curve di mappatura tonale diverse. Acquisisce 3 scatti manuali con una mappatura tonale lineare. Scatta tre foto manuali con la mappatura tonale predefinita. Calcola il delta tra ogni coppia di frame consecutivi.
API testate:
Passa: sono presenti 3 frame identici seguiti da un altro insieme di 3 frame identici.
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
Verifica che tutte le dimensioni e i formati segnalati per l'acquisizione di immagini funzionino. Utilizza una richiesta manuale con una mappatura tonale lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando vengono convertiti dal modulo image_processing_utils
. Le immagini non vengono salvate per
impostazione predefinita, ma possono essere salvate attivando debug_mode
.
API testate:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Superata: tutti i centri immagine hanno una differenza RMS massima (valore quadrato medio-quadrato di un segnale) nelle immagini convertite RGB con il 3% dell'immagine YUV con la massima risoluzione.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Verifica che le dimensioni e i formati segnalati per l'acquisizione delle immagini funzionino.
API testate:
Passato:il test viene completato e restituisce le immagini richieste.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Testa l'acquisizione di un singolo frame come output YUV e JPEG. Utilizza una richiesta manuale con una mappatura tonale lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando vengono convertiti dal modulo image_processing_utils
.
API testate:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Superato: le immagini YUV e JPEG sono simili e hanno una differenza RMS inferiore all'1% (valore quadratico medio di un segnale).
prova_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Verifica la cattura di un singolo frame sia come output RAW/RAW10/RAW12 sia come YUV, se supportato. Utilizza una richiesta manualmente con mappatura tonale lineare, quindi i formati RAW e YUV dovrebbero essere uguali. Confronta i valori RGB al 10% del centro delle immagini convertite in RGB. Logandroid.shading.mode
.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
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
Passaggio: le immagini YUV e RAW sono simili e hanno una differenza RMS (valore quadratico medio di un segnale) inferiore al 3,5%.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scene2_a
scene2_a ha tre volti con uno sfondo grigio e abbigliamento neutro. I volti vengono scelti per avere un'ampia gamma di tonalità della pelle. Il grafico deve avere l'orientamento corretto per il funzionamento ottimale del rilevamento dei volti.
scene2_a
test_inquadratura automatica
Testa il comportamento dell'inquadratura automatica della videocamera. Esegue uno zoom elevato in modo che
nessuno dei volti nella scena sia visibile, attiva la modalità di inquadratura automatica impostandoAUTOFRAMING
in CaptureRequest
suTrue
e verifica se tutti i
volti nella scena originale possono essere rilevati quando lo stato converrebbe (ovvero
quando AUTOFRAMING_STATE
in CaptureResult
è impostato su
AUTOFRAMING_STATE_CONVERGED
).
API testate:
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
Passa:sono stati rilevati tutti e tre i volti.
test_display_p3
Testa la cattura in JPEG del Display P3 utilizzando l'API ColorSpaceProfiles
. Verifica che il JPEG acquisito abbia un profilo ICC appropriato nell'intestazione e che l'immagine contenga colori al di fuori della gamma sRGB.
API testate:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Pass: il file JPEG contiene un profilo ICC Display P3 e colori al di fuori della gamma sRGB.
test_effects
Acquisisce l'inquadratura per gli effetti della fotocamera supportati e controlla se sono stati generati
correttamente. Il test controlla solo gli effetti OFF
e MONO
, ma salva le immagini per tutti gli effetti supportati.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Passaggio: acquisisce l'immagine della scena con effetti OFF
e un'immagine monocromatica con effetti impostati su MONO
.
effetti_test_MONO.jpg
test_format_combos
Testa diverse combinazioni di formati di output.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass: tutte le combinazioni sono state acquisite correttamente.
test_num_faces
Verifica il rilevamento dei volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: trova tre volti.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Testa che la rielaborazione YUV non scambia i piani U e V. Questo viene rilevato calcolando la somma delle differenze assolute (SAD) tra l'immagine rielaborata e un'acquisizione non rielaborata. Se lo scambio dei piani U e V dell'acquisizione elaborata nuovamente comporta un aumento dell'SAD, si presume che l'output abbia i piani U e V corretti.
API testate:
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: i piani U e V non sono scambiati.
test_reprocess_uv_swap.png
scene2_b
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passa:vengono trovati 3 volti.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_catture_sameness
Acquisisce due immagini utilizzando i formati YUV e JPEG più comuni con le stesse proporzioni del formato JPEG più grande e una risoluzione non superiore a 1920 x 1440.
Imposta jpeg.quality
su 100 e acquisisce una richiesta di doppia superficie. Converte entrambe le immagini in array RGB e calcola la differenza quadratica media (RMS) 3D tra le due immagini.
Inoltre, questo test verifica che gli output YUV per tutti i casi d'uso di flussi supportati siano ragionevolmente simili a quelli YUV per il caso d'uso STILL_CAPTURE
.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Passaggio: le immagini YUV e JPEG per il caso d'uso STILL_CAPTURE
presentano una differenza RMS (valore quadratico medio di un segnale) inferiore al 3%; le immagini YUV per tutti i casi d'uso supportati presentano una differenza RMS inferiore al 10% rispetto alle immagini YUV con il caso d'uso STILL_CAPTURE
.
scena2_c
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passa:vengono trovati 3 volti.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Testa la latenza di acquisizione JPEG per la classe di prestazioni S, come specificato nella sezione 2.2.7.2 Videocamera nel CDD.
Passaggio: la latenza di acquisizione JPEG della fotocamera 2 DEVE essere inferiore a 1000 ms per la risoluzione 1080p, misurata dal test di prestazioni della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_camera_launch_perf_class
Testa la latenza di avvio della fotocamera per la classe di prestazioni S come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Superato: DEVE avere una latenza di avvio della fotocamera2 (da aprire al primo fotogramma di anteprima) < 600 ms, misurata dal PerformanceTest della fotocamera CTS in condizioni di illuminazione ITS (3000K) per entrambe le videocamere principali.
test_videocamera_hdr_predefinita
Verifica che l'acquisizione della fotocamera predefinita sia Ultra HDR per la classe di prestazioni 15 come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Pass: l'acquisizione dei pacchetti della videocamera predefinita DEVE essere Ultra HDR per un dispositivo di classe di prestazioni 15.
scene2_d
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: trova tre volti.
scena2_e
test_continuous_picture
Vengono acquisiti 50 frame con risoluzione VGA con l'impostazione di primo piano della richiesta di acquisizione
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API testate:
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
Passaggio: il sistema 3A si stabilizza al termine di un'acquisizione di 50 fotogrammi.
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passa:vengono trovati 3 volti.
scene2_f
scene2_f ha tre volti con sfondo bianco e abbigliamento bianco. I volti hanno un'ampia gamma di tonalità della pelle e un alto contrasto con lo sfondo.
scene2_f
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passa:vengono trovati 3 volti.
test_num_faces_fd_mode_1.jpg
scene3
Scene3 utilizza il grafico ISO12233 e la maggior parte dei test utilizza un metodo di estrazione dei grafici per trovare il grafico nella scena. Per questo motivo, la maggior parte delle immagini salvate non ha bordi come le immagini per le scene 1, 2 o 4, ma solo il grafico. Il grafico deve essere nell'orientamento corretto per il corretto funzionamento del Ricerca grafici.
test_edge_enhancement
Verifica che il parametro android.edge.mode
sia applicato correttamente. Acquisisce
le immagini non rielaborate per ogni modalità perimetrale e restituisce la nitidezza dell'immagine
di output e dei metadati dei risultati dell'acquisizione. Elabora una richiesta di acquisizione con un determinato parametro di modalità di sfocatura, sensibilità, tempo di esposizione, distanza di messa a fuoco e superficie di output.
Passa: la modalità HQ
(2) è più nitida della modalità OFF
(0). La modalità FAST
(1) è più nitida
della modalità OFF
. La modalità HQ
sia più nitida o uguale alla modalità FAST
.
API testate:
Parametri della fotocamera interessati:
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (modalità rapida)
test_edge_enhancement_edge=2.jpg (modalità alta qualità)
test_flip_specchio
Verifica se l'immagine è orientata correttamente come indicato nella sezione 7.5.2 della CDD Fotocamera anteriore [C-1-5].
Le immagini speculari, capovolte o ruotate possono essere identificate dalla forma a diamante nei pressi del centro.
Pass: l'immagine non è capovolta, speculare o ruotata.
test_flip_mirror_scene_patch.jpg
test_imu_drift
Verifica se l'unità di misura inerziale (IMU) ha un output stabile per 30 secondi quando il dispositivo è fermo e sta registrando un'anteprima ad alta definizione.
API testate:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass:
- La deriva del giroscopio è inferiore a 0,01 rad durante il tempo di test.
- La varianza della lettura del giroscopio è inferiore a 1E-7 rad2/s2/Hz durante il tempo del test.
- La deviazione del vettore di rotazione è inferiore a 0,01 rad nel tempo del test.
- (Non ancora obbligatorio) la deviazione del giroscopio è inferiore a 1 grado al secondo.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
test_landscape_to_portrait
Verifica se l'override da orizzontale a verticale funziona correttamente per i sensori orientati orizzontalmente.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Superato: il test è in grado di individuare un grafico con la rotazione prevista (0 gradi se l'override da orizzontale a verticale è disattivato, 90 gradi se attivato).
test_landscape_to_portrait.png
report_sullo_spostamento_lente_test
Verifica se l'indicatore del movimento dell'obiettivo viene segnalato correttamente. Acquisisce una raffica di 24 immagini con i primi 12 fotogrammi alla distanza di messa a fuoco ottimale (rilevata da 3A) e gli ultimi 12 fotogrammi alla distanza di messa a fuoco minima. Intorno al frame 12, l'obiettivo si sposta causando una diminuzione della nitidezza. La nitidezza si stabilizza quando l'obiettivo si sposta nella posizione finale. L'indicatore del movimento dell'obiettivo deve essere attivato in tutti i fotogrammi in cui la nitidezza è intermedia rispetto a quella dei primi fotogrammi con l'obiettivo fermo alla distanza focale ottimale e degli ultimi fotogrammi con l'obiettivo fermo alla distanza focale minima. L'inquadratura esatta non è importante: si controlla che il flag di movimento venga dichiarato quando l'obiettivo è in movimento.
API testate:
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
Superato: il flag di movimento dell'obiettivo è True
nell'inquadratura e cambia la nitidezza.
Meccanismi di errore:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
viene affermato solo nei frame in cui la nitidezza non cambia.- I frame con
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) intest_log.DEBUG
presentano una differenza di nitidezza rispetto ai primi frame con distanza focale ottimale o agli ultimi frame con distanza focale minima.
test_reprocess_edge_enhancement
Verifica se i metodi di elaborazione supportati per il miglioramento dei bordi funzionano correttamente. Elabora una richiesta di acquisizione con una determinata modalità perimetrale di rielaborazione e confronta diverse modalità di acquisizione con le modalità di rielaborazione del perimetro disabilitate.
API testate:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Passaggio: la nitidezza per le diverse modalità di bordo è corretta. HQ
(modalità 2) è più nitido di OFF
(modalità 0) e il miglioramento tra le diverse modalità è simile.
test_reprocess_edge_enhancement_plot.png
scena4
La scena 4 consiste in un cerchio nero su sfondo bianco all'interno di un quadrato.
I test in scene4 possono essere sensibili all'allineamento, quindi a partire dalla versione 15 puoi utilizzare check_alignment.py
nella directory degli strumenti per attivare un controllo del DUT e dell'allineamento del grafico.
scene4
test_30_60 f/s_anteprima_partita_fov
Test che dimostrano che i video di anteprima a 30 f/s e 60 f/s hanno lo stesso FoV. Il test acquisisce due video, uno a 30 f/s e un altro a 60 f/s. Da ogni video viene selezionato un frame rappresentativo e analizzato per verificare che le variazioni dell'angolo di campo nei due video rientrino nelle specifiche. Verifica che le proporzioni del cerchio rimangano costanti, che il centro del cerchio rimanga stabile e che il raggio del cerchio rimanga costante.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Passaggio: le immagini non sono allungate, il centro delle immagini non differisce per più del 3% e la variazione massima delle proporzioni tra i video a 30 FPS e a 60 FPS non supera il 7,5%
Meccanismi di errore:
- Il cerchio del video a 30 f/s è molto più grande rispetto a quello del video a 60 f/s.
- Il cerchio nell'immagine acquisita è distorto dalla pipeline di elaborazione.
- Il cerchio nell'immagine acquisita è stato ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riduce l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita presenta un riflesso al centro e non sembra completamente pieno.
rapporto_aspetto_di_test_e_ritaglio
Verifica se le immagini sono distorte o ritagliate in modo imprevisto nella pipeline di immagini. Scatta foto di un cerchio in tutti i formati. Verifica che il cerchio non sia distorto, che non si sposti dal centro dell'immagine e che non cambi dimensione in modo errato con proporzioni o risoluzioni diverse.
API testate:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Passaggio: le immagini non sono allungate, il centro delle immagini non differisce per più del 3% e il campo visivo (FoV) massimo possibile viene mantenuto.
Meccanismi di errore:
- La fotocamera non è allineata al cerchio visualizzato sul tablet al centro della scena acquisita.
- Il cerchio nell'immagine acquisita è distorto dalla pipeline di elaborazione.
- L'immagine a bassa risoluzione viene ritagliata due volte nella pipeline di immagini, creando un FOV diverso tra le immagini ad alta e bassa risoluzione.
- Il cerchio nell'immagine acquisita è stato ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riduce l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita ha un riflesso al centro e non appare completamente pieno.
test_multi_camera_alignment
Testa i parametri di calibrazione della videocamera relativi al posizionamento della videocamera per i sistemi con più videocamere. Utilizzando le videocamere secondarie fisiche con più videocamere, scatta una foto con una delle videocamere fisiche. Trova il centro del cerchio. Proietta il centro del cerchio sulle coordinate mondiali per ogni videocamera. Confronta la differenza tra i centri dei cerchi delle videocamere in coordinate mondiali. Riproduce le coordinate mondiali in coordinate pixel e le confronta con quelle originali come controllo di validità. Confronta le dimensioni dei cerchi per verificare se le lunghezze focali delle videocamere sono diverse.
API testate:
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
Passaggio: i centri e le dimensioni dei cerchi sono come previsti nelle immagini proiettate rispetto alle immagini acquisite utilizzando i dati di calibrazione della fotocamera e le lunghezze focali.
Meccanismi di errore:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
oLENS_POSE_ROTATION
sono valori di progettazione e non dati di calibrazione effettivi.- Il sistema di videocamere non è appropriato per la configurazione del test. Ad esempio, il test di un sistema di fotocamere wide e ultrawide con il banco di prova RFoV. Per ulteriori informazioni, consulta la Domande frequenti 1 sull'ITS-in-a-box della videocamera.
rapporto_aspetto_anteprima_test_e_ritaglio
Analogamente al test test_aspect_ratio_and_crop per le acquisizioni di immagini, questo test controlla i formati di anteprima supportati per assicurarsi che i frame di anteprima non siano allungati o ritagliati in modo inappropriato. Verifica che le proporzioni del cerchio non cambino, che le immagini ritagliate mantengano il cerchio al centro dell'inquadratura e che le dimensioni del cerchio non cambino per un formato costante o con risoluzioni diverse (controllo del campo visivo).
API testate:
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
Passaggio: le immagini non sono allungate, il centro delle immagini non differisce di più del 3% e il campo visivo (FoV) massimo possibile viene mantenuto.
test_preview_stabilization_fov
Controlla le dimensioni di anteprima supportate per assicurarti che il FOV sia ritagliato correttamente.
Il test acquisisce due video, uno con la stabilizzazione dell'anteprima ON
e un altro con la stabilizzazione dell'anteprima OFF
. Da ogni video viene selezionato un frame rappresentativo e analizzato per verificare che le variazioni dell'angolo di campo nei due video rientrino nelle specifiche.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio: il rapporto di aspetto del cerchio rimane approssimativamente costante, la posizione del centro del cerchio rimane stabile e le dimensioni del cerchio non cambiano più del 20%.
test_video_aspect_ratio_and_crop
Acquisisci video di un cerchio all'interno di un quadrato su tutti i formati video. Estrae i fotogrammi chiave e verifica che le proporzioni del cerchio non cambino, le immagini ritagliate mantengano il cerchio al centro e le dimensioni del cerchio non variino per un formato costante o con una risoluzione diversa (controllo del campo visivo).
API testate:
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
Passaggio: i fotogrammi video non sono allungati, il centro dei fotogrammi non differisce di più del 3% e il FOV (campo visivo) massimo possibile viene mantenuto.
scena5
La scena 5 richiede una scena grigia illuminata in modo uniforme. Questo viene ottenuto con un diffusore collocato sopra l'obiettivo della fotocamera. Ti consigliamo il seguente diffusore:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Per preparare la scena, attacca un diffusore davanti alla fotocamera e puntala verso una fonte di illuminazione di circa 2000 lux. Le immagini acquisite per la scena 5 richiedono illuminazione diffusa senza caratteristiche evidenti. Di seguito è riportata un'immagine di esempio:
acquisizione scena5
ombreggiatura_obiettivo_test_e_uniformità_colore
Verifica che la correzione dell'ombreggiatura dell'obiettivo venga applicata in modo appropriato e che il colore di una scena monocromatica uniforme sia distribuito in modo uniforme. Esegui questo test su un frame YUV con 3A automatico. L'ombreggiatura dell'obiettivo viene valutato in base al canale y. Misura il valore medio di Y per ogni blocco di campioni specificato e determina se il test è superato o meno confrontandolo con il valore di Y del centro. Il test di uniformità del colore viene valutato nello spazio r/g e b/g.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Passato: al raggio specificato dell'immagine, la varianza del valore di r/g e b/g deve essere inferiore al 20% per superare il test.
scena6
Scene 6 è una griglia di piccoli cerchi con un quadrato in un angolo per indicare l'orientamento. I piccoli cerchi sono necessari per testare la funzione zoom su una vasta
intervallo.
I test in scene6 possono essere sensibili all'allineamento, quindi a partire dalla versione 15 puoi utilizzare check_alignment.py
nella directory degli strumenti per attivare un controllo del DUT e dell'allineamento del grafico.
scene6
test_in_sensor_zoom
Testa il comportamento della funzionalità di zoom in-sensor della fotocamera, che produce immagini RAW ritagliate.
Con il caso d'uso dello stream impostato su
CROPPED_RAW
,
il test acquisisce due foto nell'intervallo di zoom, un'immagine RAW con campo visivo (FoV) completo e un'immagine RAW ritagliata. Il test converte le immagini in array RGB, riduce le dimensioni dell'immagine RAW ritagliata a quelle riportate da SCALER_RAW_CROP_REGION
e calcola la differenza quadratica media (RMS) 3D tra le due immagini.
API testate:
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
Superata: la differenza tra il quadrato medio della radice 3D (RMS) tra l'immagine RAW ritagliata ridimensionata e l'immagine RAW completa per FoV è inferiore alla soglia impostata nel test.
test_zoom
Consente di verificare il comportamento dello zoom della fotocamera. Scatta foto nell'intervallo di zoom e controlla se i cerchi si ingrandiscono man mano che la fotocamera aumenta lo zoom. Per ogni formato (YUV, JPEG), viene utilizzata la stessa sessione di acquisizione della fotocamera per convergere la 3A e acquisire le foto.
API testate:
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: le dimensioni relative del cerchio acquisito sono accurate rispetto al rapporto di zoom richiesto per garantire che la fotocamera effettui lo zoom correttamente.
test_zoom per trovare il contorno del cerchio più vicino al centro.
test_low_latency_zoom
Verifica il comportamento dello zoom a bassa latenza della fotocamera. Acquisisce le immagini nell'intervallo di zoom con android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
e controlla se i cerchi nelle immagini di output corrispondono ai rapporti di zoom nei metadati delle acquisizioni. La stessa sessione di acquisizione con la fotocamera viene utilizzata per convergere
3 A e acquisire acquisizioni.
API testate:
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: le dimensioni relative del cerchio acquisito sono accurate rispetto ai metadati del risultato del rapporto di zoom.
test_preview_video_zoom_match
Verifica che, durante la registrazione e lo zoom, l'anteprima video e l'output video mostrino e registrino lo stesso output. Calcola le dimensioni del cerchio più vicino al centro con diversi rapporti di zoom e controlla se le dimensioni del cerchio aumentano con l'aumentare del rapporto di zoom.
API testate:
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: le dimensioni relative del cerchio acquisito sono accurate rispetto al rapporto di zoom richiesto nel video e nell'anteprima.
VGA_640x480_key_frame.png (prima dello zoom)
preview_640x480_key_frame.png (prima dello zoom)
VGA_640x480_key_frame.png (dopo lo zoom)
anteprima_640x480_key_frame.png (dopo lo zoom)
test_preview_zoom
Verifica che il rapporto di zoom di ogni frame di anteprima corrisponda ai metadati di acquisizione corrispondenti. Il test acquisisce i frame di anteprima nell'intervallo di zoom e trova il contorno del cerchio più vicino al centro. Il test verifica quindi che il cerchio selezionato aumenti di dimensioni e che il centro del cerchio si allontani dal centro dell'immagine man mano che la fotocamera aumenta lo zoom.
API testate:
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: le dimensioni relative del cerchio selezionato sono precise per il rapporto di zoom registrato del risultato di acquisizione corrispondente per tutti i frame di anteprima. La distanza relativa del cerchio selezionato dal centro dell'immagine è accurata per il rapporto di zoom registrato del risultato di acquisizione corrispondente di tutti i frame di anteprima.
Immagini di test_preview_zoom che mostrano il cerchio selezionato più vicino al centro
test_session_characteristics_zoom
Testa l'intervallo del rapporto di zoom per tutte le configurazioni delle sessioni supportate elencate in
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
Per ciascuna di queste configurazioni, se
CameraDeviceSetup#isSessionConfigurationSupported
restituisce true, il test verifica che l'intervallo di rapporti di zoom restituito in
CameraDeviceSetup#getSessionCharacteristics
possa essere raggiunto.
API testate:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Superato: i rapporti di zoom minimo e massimo possono essere raggiunti per ogni
SessionConfiguration
supportato elencato in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
Scene 7 è una cornice rettangolare divisa in quattro quadranti uguali, ciascuno di un colore diverso. Al centro del rettangolo è presente un grafico con bordi inclinati per i controlli della nitidezza. Quattro indicatori ArUco sono allineati ai quattro angoli esterni del rettangolo per contribuire a ottenere coordinate precise del riquadro del rettangolo principale con rapporti di zoom diversi.
scene7
test_multi_camera_switch
Questo test verifica che durante la registrazione dell'anteprima con rapporti di zoom diversi, il passaggio dagli obiettivi ultrawide (UW) a quelli wide (W) generi valori RGB simili.
Il test utilizza diversi rapporti di zoom nell'intervallo predefinito per eseguire una registrazione dell'anteprima dinamica e identificare il punto in cui cambia la fotocamera fisica. Questo punto segna il crossover dall'obiettivo UW all'obiettivo W.
I fotogrammi acquisiti al punto di crossover e prima vengono analizzati per quanto riguarda l'esposizione automatica (AE), il bilanciamento del bianco automatico (AWB) e l'autofocus (AF).
Il controllo AE garantisce che la variazione di luminosità rientri nell'intervallo previsto sia per le immagini con obiettivi UW che per quelle con obiettivi W. Il controllo AWB verifica che i rapporti R/G e B/G rientrino nei valori di soglia sia per le immagini con obiettivo UW che per quelle W. Il controllo AF valuta il valore stimato della nitidezza in base alla grandezza media del gradiente tra le immagini con obiettivo UW e W.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Passato:per superare il test, i controlli AE, AWB e AF devono essere tutti superati. Di seguito sono riportati i criteri per ogni controllo:
- Controllo AE: la variazione di luminosità tra le immagini dell'obiettivo UW e W deve essere inferiore al 0,5%.
- Controllo AWB: la differenza tra i valori R/G e B/G per le immagini dell'obiettivo UW e W deve essere inferiore allo 0,5%.
- Controllo AF: la variazione della nitidezza tra le immagini degli obiettivi UW e W deve essere inferiore al 2%.
scene8
Scene 8 è una cornice rettangolare divisa in quattro regioni uguali, ciascuna contenente un ritratto realizzato con un'esposizione diversa o a cui è sovrapposto una diversa sfumatura di colore (sfumatura blu, maggiore esposizione, ridotta esposizione, tonalità gialla). Quattro indicatori ArUco sono allineati con i quattro angoli esterni del rettangolo per ottenere coordinate precise del riquadro rettangolo principale.
scena 8
test_ae_awb_regions
Verifica che i valori RGB e luma siano diversi durante la registrazione dell'anteprima in regioni di esposizione automatica (AE) e bilanciamento del bianco automatico (AWB) diverse.
Il test registra una registrazione di anteprima di 8 secondi, eseguendo la misurazione AE e AWB su ciascun quadrante per due secondi ciascuno. Il test estrae quindi un frame dalla registrazione di anteprima di ogni regione e utilizza i frame estratti per eseguire i seguenti controlli AE e AWB:
- Controllo AE: verifica che il fotogramma che misura la regione con esposizione ridotta abbia un valore di luminosità aumentato di più dell'1% rispetto al fotogramma che misura la regione con esposizione aumentata. In questo modo viene verificato che le immagini vengano illuminate quando viene misurata una regione scura.
- Controllo AWB: verifica che il rapporto tra rosso e blu (dei valori RGB medi dell'immagine) nell'inquadratura con la regione di misurazione blu sia superiore al 2% rispetto all'inquadratura con la regione di misurazione gialla. Questo consente di verificare che le immagini abbiano un valore RGB bilanciato durante la misurazione di una regione gialla (calda) o blu (freddo).
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Superato: i controlli di AE e AWB hanno entrambi superato.
scene9
Scene9 è composta da migliaia di cerchi di dimensioni e colori casuali per creare una scena con una ripetibilità molto bassa al fine di sottoporre a stress gli algoritmi di compressione JPEG.
scene9
test_jpeg_alta_entropia
Verifica che la compressione JPEG della fotocamera funzioni su scene9 con elevata entropia e il fattore di qualità JPEG impostato su 100%. Il fattore di zoom viene aumentato per garantire che la scena visualizzata sul tablet riempia il campo visivo della videocamera.
API testate:
Pass: il file JPEG viene compresso correttamente, scritto e letto di nuovo dal disco.
test_jpeg_quality
Testa la qualità della compressione JPEG della fotocamera. Passa le qualità JPEG
android.jpeg.quality
e assicurati che le tabelle di quantizzazione vengano modificate
correttamente.
API testate:
Passa:la matrice di quantizzazione diminuisce con l'aumento della qualità. La matrice rappresenta il fattore di divisione.
Medie della matrice DQT luma/chroma della fotocamera posteriore di Pixel 4 rispetto alla qualità JPEG
Esempio di test non riuscito
Tieni presente che per le immagini di qualità molto bassa (jpeg.quality < 50), non viene registrato alcun aumento della compressione nella matrice di quantizzazione.
scene_video
La scena scene_video
è una scena video. È costituito da quattro cerchi di colori diversi che si muovono avanti e indietro a frequenze diverse su sfondo bianco.
video_scena
test_preview_frame_drop
Verifica che la frequenza dei fotogrammi dell'anteprima richiesta venga mantenuta con una scena dinamica. Questo test viene eseguito su tutte le videocamere esposte ad app di terze parti.
API testate:
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
Passato: la frequenza frame dell'anteprima è al massimo dell'intervallo richiesto e la variazione media tra i frame consecutivi è inferiore alla tolleranza relativa impostata nel test.
scene_extensions
I test scene_extensions
sono destinati alle estensioni della videocamera e richiedono l'uso di ITS-in-a-Box per videocamere, poiché richiedono un controllo preciso dell'ambiente di test. Inoltre,
tutte le dispersioni di luce devono essere controllate. Potrebbe essere necessario coprire il banco di prova, il DUT e il tablet con un telo e eliminare la fuoriuscita di luce dallo schermo anteriore del DUT.
scene_hdr
La scena scene_hdr
è composta da un ritratto a sinistra e da un codice QR a basso contrasto a destra.
scene_hdr
test_hdr_extension
Testa l'estensione HDR. Acquisisce foto con e senza l'estensione abilitata e controlla se l'estensione rende il codice QR più rilevabile.
API testate:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Pass: l'estensione HDR riduce il numero di modifiche del contrasto necessarie per rilevare il codice QR o riduce il gradiente all'interno del codice QR.
scene_low_light
La scena scene_low_light
è costituita da una griglia di quadrati di varie tonalità di grigio su uno sfondo nero e la griglia di quadrati è delimitata da un contorne rosso. I quadrati sono disposti secondo l'orientamento di una curva di Hilbert.
scene_low_light
test_night_extension
Testa l'estensione Notte. Acquisisce le acquisizioni con l'estensione abilitata ed esegue quanto segue:
- Rileva la presenza di 20 quadrati
- Calcola la luminanza delimitata da ogni quadrato
- Calcola il valore di luma medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza nel valore di luminanza dei quadrati consecutivi (ad esempio, quadrato2 - quadrato1) fino ai quadrati 5 e 6 (quadrato6 - quadrati5) e trova la media delle cinque differenze calcolate.
API testate:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Passa:il valore di luma medio dei primi 6 riquadri deve essere almeno 85 e la differenza media del valore di luma dei riquadri consecutivi fino ai riquadri 5 e 6 deve essere almeno 17.
Il seguente grafico di luminanza mostra l'aspetto di un risultato del test positivo.
test_low_light_boost_extension
Testa la modalità AE Boost luce bassa. Se Camera2 supporta la modalità AE con aumento della luminosità, questo test viene eseguito per Camera2. Se l'estensione della modalità notturna è supportata e supporta la modalità AE con potenziamento in condizioni di scarsa illuminazione, questo test viene eseguito anche per l'estensione della modalità notturna. Questo test imposta la modalità AE su Boost in condizioni di scarsa illuminazione, acquisisce un fotogramma dall'anteprima ed esegue le seguenti operazioni:
- Rileva la presenza di 20 scatole
- Calcola la luminanza delimitata da ogni riquadro
- Calcola il valore di luma medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza nel valore di luminanza dei quadrati consecutivi (ad esempio, quadrato2 - quadrato1) fino ai quadrati 5 e 6 (quadrato6 - quadrati5) e trova la media delle cinque differenze calcolate.
API testate:
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Passa:il valore di luma medio dei primi 6 riquadri deve essere almeno 70 e la differenza media del valore di luma dei riquadri consecutivi fino ai riquadri 5 e 6 deve essere almeno 17.
scena_lampo
I test scene_flash
richiedono una scena scura nella scatola di fusione del sensore.
test_auto_flash
Verifica che il flash automatico venga attivato in una scena buia per le fotocamere anteriori e posteriori. Per le fotocamere anteriori, il flash automatico utilizza lo schermo per illuminare la scena, non un flash fisico. Il test verifica che il flash automatico venga attivato controllando che il centro dell'immagine del riquadro sia più luminoso con il flash automatico attivato. Per attivare il flash automatico, le luci del banco di prova devono essere spente. Le luci possono essere spente automaticamente con il controller Arduino. Affinché il test funzioni correttamente, la scena deve essere completamente buia. L'app Jetpack Camera (JCA) deve essere installata sul dispositivo prima del test. Il flash automatico per le fotocamere posteriori si basa sullo stato AE per essere attivato, ma il flash automatico per le fotocamere anteriori non si basa sull'AE e viene attivato sempre.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Passaggio: il centro dell'immagine del riquadro con il flash automatico abilitato è più luminoso rispetto all'immagine della scena originale per tutte le videocamere.
test_flash_strength
Verifica che il controllo dell'intensità del flash in modalità SINGLE
sia implementato correttamente.
Verifica che se il dispositivo supporta il controllo dell'intensità del flash durante l'uso della fotocamera in modalità SINGLE
, l'intensità del flash cambi con diversi livelli di intensità richiesti. Verifica che il controllo dell'intensità del flash funzioni con diversi
AE_MODES
.
Ad esempio, se la modalità di esposizione automatica è ON
o OFF
, il livello di intensità del flash influisce sulla luminosità e, se la modalità è ON_AUTO_FLASH
, il livello di intensità del flash non influisce sulla luminosità.
Per eseguire il test, è necessario spegnere le luci sul banco di prova.
Le luci possono essere spente automaticamente con il controller Arduino.
Affinché il test funzioni correttamente, la scena deve essere completamente buia.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Superamento:
Quando la modalità di esposizione automatica è ON
o OFF
, la luminosità delle patch
dell'immagine aumenta con l'aumentare dell'intensità del flash da nessun flash a
FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
Quando la modalità di esposizione automatica è ON_AUTO_FLASH
, la differenza di luminosità delle patch dell'immagine è entro i limiti di tolleranza man mano che l'intensità del flash aumenta da nessun flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Verifica che gli istantanei LED non saturino o colorino l'immagine.
Questo test aggiunge un controller di illuminazione alla cassetta di derivazione della fusione dei sensori per controllare le luci. Con le luci impostate su OFF
, il test esegue un'acquisizione con
la modalità AUTO_FLASH
impostata su ON
. Durante questa acquisizione, il test esegue una sequenza di preacquisizione con l'trigger aePrecapture
impostato su START
e imposta l'intent di acquisizione su Preview
per acquisire l'immagine con il flash.
Poiché l'acquisizione ha un hotspot distintivo dovuto al flash, il test calcola la media dell'immagine flash dell'intera acquisizione e verifica se il valore rientra nell'intervallo (68, 102). Per verificare se l'immagine è ragionevolmente bilanciata in bianco, il test calcola i rapporti R/G e B/G e verifica se rientrano tra 0,95 e 1,05.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Passaggio: i rapporti R/G e B/G sono compresi tra 0,95 e 1,05. La media dell'immagine con flash rientra nell'intervallo (68, 102).
test_preview_min_frame_rate
Verifica che la frequenza dei fotogrammi dell'anteprima diminuisca correttamente in una scena buia. Affinché questo test funzioni correttamente, le luci del banco di prova devono essere disattivate dal controllore o manualmente dall'operatore del test.
API testate:
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
Superata: la frequenza fotogrammi di anteprima è al minimo dell'intervallo di frequenza fotogrammi richiesto e la variazione tra i frame è inferiore alla tolleranza assoluta impostata nel test.
test_torch_strength
Verifica che il controllo dell'intensità del flash in modalità
TORCH
sia implementato correttamente.
Verifica che se il dispositivo supporta il controllo dell'intensità del flash durante l'uso della fotocamera in modalità TORCH
, l'intensità della torcia cambi con diversi livelli di intensità richiesti. Verifica che il controllo dell'intensità del flash funzioni con diversi
AE_MODES
.
Ad esempio, se la modalità di esposizione automatica è ON
o OFF
, il livello di intensità del flash influisce sulla luminosità e, se la modalità è ON_AUTO_FLASH
, il livello di intensità del flash non influisce sulla luminosità.
Verifica che la potenza della torcia sia la stessa per tutta la durata di una
burst, simulando una sessione di acquisizione video. Per eseguire il test, le luci del banco di prova devono essere spente. Le luci possono essere spente automaticamente con il controller Arduino. Affinché il test funzioni correttamente, la scena deve essere completamente buia.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Pass:
Quando la modalità di esposizione automatica è ON
o OFF
, la luminosità delle patch di sfolgorazione dell'immagine aumenta man mano che l'intensità del flash aumenta da nessuna illuminazione
a
FLASH_TORCH_STRENGTH_MAX_LEVEL
.
Quando la modalità di esposizione automatica è ON_AUTO_FLASH
, la differenza di luminosità delle patch di raffica di immagini rientra nella tolleranza
man mano che l'intensità del flash aumenta da nessun flash a
FLASH_TORCH_STRENGTH_MAX_LEVEL
.
fusione_sensore
I test di fusione dei sensori richiedono movimenti specifici dello smartphone davanti a un motivo a scacchi e a indicatori ArUco. Per risultati ottimali, assicurati che la scheda di prova sia montata in piano. I grafici che non sono piatti influiscono sui calcoli della rotazione per molti test. Il grafico deve riempire il retro della cassetta di fusione dei sensori stampando su un formato di 43 x 43 cm. I test sensor_fusion
possono essere automatizzati con la
Sensor Fusion Box.
Grafico di fusione dei sensori
Grafico di fusione dei sensori che riempie il retro della casella di fusione dei sensori
test_lens_intrinsic_calibration
Verifica che il centro ottico dell'obiettivo cambia intrinseco quando si sposta a causa della stabilizzazione ottica dell'immagine (OIS). Se i campioni intrinseci dell'obiettivo sono supportati, verifica che il centro ottico dei campioni intrinseci dell'obiettivo cambi quando l'obiettivo si sposta a causa della stabilizzazione ottica dell'immagine (OIS).
API testate:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Passa: il centro ottico dell'obiettivo cambia in modo intrinseco di uno o più pixel. Se sono supportati i campioni intrinseci dell'obiettivo, i centri ottici dei campioni intrinseci dell'obiettivo cambiano di un pixel o più.
Esempio di grafico test_lens_intrinsic_calibration
che mostra le modifiche dei punti
principali in pixel per ogni frame
test_multi_camera_frame_sync
Verifica che i timestamp dei fotogrammi acquisiti dalla fotocamera logica siano entro 10 ms calcolando gli angoli dei quadrati all'interno della scacchiera per determinare il timestamp.
API testate:
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()
Passa:l'angolo tra le immagini di ogni fotocamera non cambia in modo significativo quando lo smartphone viene ruotato.
distorsione_anteprima_test
Verifica che la distorsione venga corretta in ogni frame di anteprima acquisito a vari livelli di zoom. Per ogni frame di anteprima, il test calcola i punti ideali in base ai dati intrinseci ed estrinseci della videocamera. Nell'immagine di esempio, i punti ideali sono visualizzati in verde, mentre i punti effettivi sono visualizzati in rosso. L'errore di distorsione viene calcolato in base alla distanza quadratica media (RMS) dei pixel tra i punti effettivi e quelli ideali. Gli evidenziatori verdi e rossi sull'immagine vengono utilizzati per rilevare visivamente l'area dell'errore di distorsione.
Immagine di una scacchiera con i punti ideali in verde e i punti effettivi in rosso
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
Passaggio superato: l'errore di distorsione normalizzato di ogni frame di anteprima è inferiore alla soglia impostata nel test.
test_preview_stabilization
Verifica che il video di anteprima stabilizzato ruoti meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio: la rotazione angolare massima nei fotogrammi è inferiore al 70% della rotazione del giroscopio.
Di seguito sono riportati video di esempio con e senza stabilizzazione.
Video di esempio con stabilizzazione
Video di esempio senza stabilizzazione
test_sensor_fusion
Verifica la differenza del timestamp tra la fotocamera e il giroscopio per le applicazioni AR
e VR. Lo smartphone viene ruotato di 90 gradi 10 volte davanti al motivo a scacchi. Il movimento è di circa 2 secondi andata e ritorno. Questo test viene ignorato se non è incluso alcun giroscopio o se il parametro REALTIME
source timestamp non è abilitato.
Il test test_sensor_fusion
genera una serie di grafici. I due grafici più importanti per il debug sono:
test_sensor_fusion_gyro_events
: mostra gli eventi del giroscopio dello smartphone durante il test. Lo spostamento nella direzione x e y implica che lo smartphone non è fissato saldamente sulla piastra di montaggio e ciò riduce la probabilità che il test superi il test. Il numero di cicli nel grafico dipende dalla velocità di scrittura per il salvataggio dei frame.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: mostra l'allineamento del giroscopio e gli eventi della videocamera. Questo grafico deve mostrare un movimento corrispondente tra la fotocamera e il giroscopio con una precisione di +/-1 ms.test_sensor_fusion_plot_rotations
API testate:
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: l'offset dei timestamp della fotocamera e del giroscopio è inferiore a 1 ms, come indicato nella sezione 7.3.9 del CDD relativa ai sensori ad alta fedeltà [C-2-14].
Meccanismi di errore:
- Errore di offset: l'offset della fotocamera e del giroscopio non è calibrato correttamente entro +/-1 ms.
- Cadute di frame: la pipeline non è abbastanza veloce per acquisire 200 frame consecutivamente.
- Errori di socket:
adb
non riesce a connettersi in modo affidabile al DUT per un tempo sufficiente per eseguire il test. - Il grafico non è montato in modo piatto. Il grafico
test_sensor_fusion_plot_rotations
presenta fotogrammi in cui il giroscopio e la rotazione della fotocamera variano notevolmente mentre la videocamera ruota attraverso le parti del grafico che non sono piatte. - La videocamera non è montata in piano. Il grafico
test_sensor_fusion_gyro_events
mostra il movimento nei piani X e Y. Questo guasto è più comune nelle fotocamere anteriori perché la fotocamera posteriore spesso ha un rilievo rispetto al resto del corpo dello smartphone, creando un'inclinazione quando si monta la parte posteriore dello smartphone sulla piastra di montaggio.
test_video_stabilization
Verifica che il video stabilizzato ruoti meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio: la rotazione angolare massima nei fotogrammi è inferiore al 60% della rotazione del giroscopio.
Di seguito sono riportati video di esempio con e senza stabilizzazione.
Video di esempio con stabilizzazione
Video di esempio senza stabilizzazione
feature_combination
I test feature_combination
verificano che le funzionalità funzionino correttamente quando sono attivate contemporaneamente più funzionalità della fotocamera. Questi test utilizzano la stessa
immagine a scacchiera utilizzata nella scena di fusione dei sensori.
combinazione_funzionalità_test
Testa tutte le combinazioni di diverse combinazioni di stream, stabilizzazione della preview, intervallo FPS target, video HDR a 10 bit e Ultra HDR supportate dal dispositivo della fotocamera. Questo test richiede molta memoria, quindi consigliamo di utilizzare un host con almeno 128 GB di RAM.
Per Android 15 e versioni successive, il file di configurazione include un
log_feature_combo_support
campo, il cui valore predefinito è False
. Quando il campo log_feature_combo_support
è impostato su True
, il test esegue tutte le combinazioni di funzionalità supportate e registra i risultati in un file proto senza che il test non vada a buon fine. Per i test di conformità, il
log_feature_combo_support
campo deve essere impostato su False
.
API testate:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass: per ogni combinazione di funzionalità supportata:
- Lo stream di anteprima viene stabilizzato se la stabilizzazione dell'anteprima è attiva.
- La frequenza fotogrammi dell'anteprima rientra nel valore
AE_TARGET_FPS_RANGE
configurato. - Lo spazio colore dello stream di anteprima registrato corrisponde a quello impostato.
- L'acquisizione Ultra HDR ha una mappa di guadagno valida.