Questa pagina fornisce un elenco completo dei test di Camera Image Test Suite (ITS), che fa parte di Android Compatibility Test Suite (CTS) Verifier. I test ITS sono test funzionali, nel senso che non misurano la qualità dell'immagine, ma controllano che tutte le funzioni pubblicizzate della fotocamera funzionino come previsto. Questo documento consente agli sviluppatori e ai tester di comprendere cosa fanno i singoli test e come eseguire il debug degli errori di test.
I controlli ITS della fotocamera eseguono test in base alle proprietà richieste della fotocamera, al livello API e al livello MPC (Media Performance Class). Per il livello API, ITS utilizza ro.product.first_api_level
per controllare i test aggiunti in un livello API specifico che verificano esperienze utente negative per funzionalità nei livelli API inferiori. ITS utilizza ro.vendor.api_level
per eseguire test per funzionalità aggiunte in un livello API specifico che richiedono nuove funzionalità hardware. Se per un dispositivo è definito ro.odm.build.media_performance_class
, ITS richiede l'esecuzione di test specifici a seconda del livello MPC.
I test sono raggruppati per scena come segue:
- scene0 : cattura metadati, jitter, giroscopio, vibrazione
- scena1 : esposizione, sensibilità, compensazione EV, YUV vs JPEG/RAW
- scene2 : rilevamento dei volti, test che richiedono scene a colori o oscurità completa
- scena3 : miglioramento dei bordi, movimento dell'obiettivo
- scena4 : proporzioni, ritaglio, campo visivo
- scena5 : ombreggiatura della lente
- scena6 : zoom
- sensor_fusion : offset temporale della fotocamera/giroscopio
Vedere le singole sezioni per una descrizione di ciascuna scena.
scena0
I test Scene0 non richiedono informazioni specifiche sulla scena. Tuttavia, il telefono deve essere fermo per i test del giroscopio e delle vibrazioni.
test_burst_capture
Verifica che l'intera pipeline di acquisizione possa tenere il passo con la velocità dell'acquisizione a dimensione intera e con il tempo della CPU.
API testate:
Superato: cattura una raffica di immagini a grandezza naturale e la fotocamera è sufficientemente veloce da evitare il timeout.
test_capture_result_dump
Verifica che un risultato di acquisizione venga restituito da un'acquisizione manuale e quindi lo scarica.
API testate:
Superato: completa l'acquisizione e scarica i risultati dell'acquisizione.
test_gyro_bias
Verifica se il giroscopio ha un'uscita stabile quando il dispositivo è fermo. I dati vengono tracciati come una media di 20 punti dati.
API testate:
Superato: il delta della lettura del giroscopio è inferiore a 0,01 nel tempo.
test_gyro_bias_plot.png
test_jitter
Misura il jitter nei timestamp della fotocamera.
API testate:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Passato: c'è almeno un delta di 30 ms tra i fotogrammi.
test_jitter_plot.png (Nota il piccolo intervallo dell'asse y. Il jitter è in realtà piccolo in questo grafico.)
test_metadati
Verifica la validità delle voci di metadati. Osserva i risultati dell'acquisizione e le caratteristiche degli oggetti della fotocamera. Questo test utilizza l'esposizione auto_capture_request
e i valori di guadagno perché il contenuto dell'immagine non è importante.
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
Superato: livello hardware, rollingShutterSkew
, tag frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, distanza iperfocale sono presenti e hanno valori validi.
test_param_sensitivity_burst
Verifica che il parametro android.sensor.sensitivity
sia applicato correttamente nel burst. Esamina solo i metadati di output.
API testate:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Superato: i dati di output hanno una tolleranza di errore inferiore allo 0,2%.
prova_leggi_scrivi
Verifica che il dispositivo scriva i valori di esposizione e guadagno corretti rileggendo 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 di lettura e scrittura corrispondono in tutti i colpi.
test_sensore_eventi
Verifica che il dispositivo esegua query e stampi gli eventi dei sensori per i dispositivi che pubblicizzano il supporto della fusione dei sensori. I sensori previsti sono accelerometro, giroscopio e magnetometro. Questo test funziona solo se lo schermo è acceso, ovvero il dispositivo non è in modalità standby.
API testate:
Superato: vengono ricevuti gli eventi per ciascun sensore.
test_solid_color_test_pattern
Verifica che i modelli di test a colori solidi vengano generati correttamente per la disattivazione dell'audio della fotocamera. Se è supportata la disattivazione dell'audio della fotocamera, devono essere supportati i modelli di prova a colori solidi. Se la disattivazione dell'audio della fotocamera non è supportata, i modelli di prova a colori solidi vengono testati solo se la funzionalità viene pubblicizzata.
Se sono supportate le immagini RAW, viene testata 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
Superato: i modelli di prova solidi supportati sono del colore corretto e la varianza nell'immagine è bassa.
test_modello_test
Testa il parametro android.sensor.testPatternMode
per acquisire fotogrammi per ogni modello di test valido e controlla che i fotogrammi siano generati correttamente per i colori solidi e le barre dei colori. Questo test include i seguenti passaggi:
- Cattura immagini per tutti i modelli di test supportati.
- Esegue un semplice controllo di correttezza per il modello di prova del colore solido 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 modelli di test supportati vengono generati correttamente.
test_test_patterns_2.jpg
test_tonemap_curve
Verifica la conversione del pattern di prova da RAW a YUV con tonemap lineare. Questo test richiede android.sensor.testPatternMode = 2
(COLOR_BARS) per generare un modello di immagine perfetto per la conversione della mappa tonale. Garantisce che la pipeline abbia output di colore adeguati con mappatura dei toni 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
Superato: YUV e RAW sembrano simili tra loro.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Verifica se gli eventi del sensore di immagine e 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
Superato: i timestamp del movimento sono compresi tra i due timestamp dell'immagine.
test_vibrazione_restrizione
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 l'audio viene disattivato dall'API di limitazione dell'audio della fotocamera.
scena 1
scene1 è un grafico grigio. Il grafico grigio deve coprire il 30% centrale del campo visivo della telecamera. Si prevede che il grafico grigio sfiderà moderatamente 3A (esposizione automatica, bilanciamento automatico del bianco, messa a fuoco automatica) poiché la regione centrale non ha caratteristiche. Tuttavia, la richiesta di acquisizione specifica l'intera scena che include funzionalità sufficienti per la convergenza di 3A.
Le telecamere RFoV possono essere testate nel WFoV o nel banco di prova RFoV. Se una telecamera RFoV viene testata nel banco di prova WFoV, il grafico viene ridimensionato di ⅔ per garantire alcuni limiti per il grafico grigio nel FoV per aiutare 3A a convergere.
scena1: grafico a grandezza naturale (a sinistra). ⅔ grafico in scala (a destra).
prova_3a
Verifica la convergenza di 3A con un obiettivo moderatamente impegnativo.
API testate:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Superato: 3A converge e i valori 3A restituiti sono validi.
test_ae_af
Testa singolarmente gli algoritmi di esposizione automatica (AE) e messa a fuoco automatica (AF) 3A.
API testate:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Superato: 3A converge e i valori 3A restituiti sono legali.
test_ae_precapture_trigger
Verifica la macchina a stati AE quando si utilizza il trigger di preacquisizione. Cattura cinque richieste manuali con AE disabilitato. L'ultima richiesta ha un trigger di preacquisizione AE, che deve essere ignorato perché AE è disabilitato.
API testate:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Passato: AE converge.
test_auto_vs_manual
I test che hanno effettuato scatti automatici e manuali sembrano 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
Superato: i guadagni e la trasformazione del bilanciamento del bianco manuale riportati in ogni risultato di acquisizione corrispondono alla estimate
del bilanciamento del bianco automatico dall'algoritmo 3A della fotocamera.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
prova_nero_bianco
Verifica che il dispositivo produca immagini completamente in bianco e nero. Effettua due scatti, il primo con guadagno estremamente basso e esposizione breve, che dà come risultato una foto nera, e il secondo con guadagno estremamente alto e esposizione lunga, che dà come risultato una foto bianca.
API testate:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Superato: produce immagini in bianco e nero. I canali saturati delle immagini bianche hanno valori RGB di [255, 255, 255] con un margine di errore inferiore all'1% di differenza.
![]() | ![]() | |
prova_nero_bianco_nero.jpg | prova_nero_bianco_bianco.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Scatta 5 raffiche di 50 immagini con impostazione di acquisizione manuale e controlla che siano tutte identiche. Questo test può essere utilizzato per identificare se sono presenti frame sporadici elaborati in modo diverso o che presentano 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 identiche visivamente e nei valori RGB.
Fallito: mostra un picco o un calo del grafico della media RGB all'inizio di ogni burst
- 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
test_cattura_risultato
Verifica che i dati validi ritornino 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
Superato: i metadati sono validi per tutte le acquisizioni e le impostazioni manuali non vengono diffuse nella seconda acquisizione automatica. Traccia la correzione dell'ombreggiatura dell'obiettivo per le acquisizioni.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Verifica che i flussi 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
Superato: 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 il funzionamento delle regioni coltivate. Scatta un'immagine completa e crea patch di 5 regioni diverse (angoli e centro). Scatta immagini con ritaglio impostato per le 5 regioni. Confronta i valori della patch e dell'immagine ritagliata.
API testate:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Superato: l'immagine della regione ritagliata corrisponde alla patch che corrisponde all'immagine ritagliata.
test_dng_noise_model
Verifica che i parametri del modello non elaborato DNG siano corretti. Il grafico illustra la varianza misurata di una zona centrale del cartoncino grigio negli scatti grezzi catturati in un intervallo di sensibilità e confronta questi valori con la varianza prevista per ciascuna sensibilità dal modello di rumore DNG nell'HAL della fotocamera (basato sul Parametri O,S restituiti negli oggetti risultato dell'acquisizione). Per maggiori dettagli sul modello di rumore DNG, scaricare 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 grezzo DNG sono corretti. I valori RGB previsti corrispondono a quelli dei valori RGB effettivi misurati.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Verifica che venga applicata la compensazione del valore di esposizione (EV). Il test aumenta l'esposizione in otto passaggi e controlla la luminosità misurata rispetto alla luminosità prevista. I valori attesi vengono calcolati dalla luminosità dell'immagine senza compensazione EV applicata e il valore atteso si saturerà se i valori calcolati superano l'intervallo di valori dell'immagine effettiva. Il test fallisce se i valori attesi 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'esposizione crescente senza sovraesporre entro 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
. Vengono catturati otto fotogrammi per ciascun valore di compensazione.
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
Superato: acquisisce l'aumento di luminanza con un'impostazione di compensazione EV aumentata e gli otto fotogrammi catturati per ciascuna impostazione di compensazione EV hanno valori di luminanza stabili.
test_ev_compensation_basic.png
prova_esposizione
Verifica che venga ottenuta un'esposizione costante al variare dell'ISO e del tempo di esposizione. Effettua una serie di scatti con ISO e tempo di esposizione scelti per bilanciarsi a vicenda. I risultati dovrebbero avere la stessa luminosità, ma durante la sequenza l'immagine dovrebbe diventare più rumorosa. Verifica che i valori medi dei pixel campione siano vicini tra loro. Garantisce che le immagini non siano fissate 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 dell'esposizione ISO* è costante nello spazio di guadagno testato.
test_exposure_plot_means.png
![]() | ![]() | |
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
prova_jpeg
I test che hanno convertito le immagini YUV e le immagini JPEG del dispositivo sembrano uguali. Il test prende il 10% centrale dell'immagine, calcola il valore RGB e verifica che corrispondano.
API testate:
Superato: la differenza RGB media tra ciascuna immagine è inferiore al 3%.
![]() | ![]() | |
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Verifica che le impostazioni (esposizione e guadagno) si blocchino sul fotogramma destro per le fotocamere FULL
e LEVEL_3
. Esegue una serie di scatti utilizzando richieste consecutive, variando i parametri della richiesta di acquisizione tra uno scatto e l'altro. Verifica che le immagini abbiano le proprietà previste.
API testate:
Superato: le immagini [2, 3, 6, 8, 10, 12, 13] hanno ISO o esposizione aumentati e vengono visualizzate con valori RGB più elevati 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
prova_linearità
Verifica che l'elaborazione del dispositivo possa essere invertita in pixel lineari. Cattura una sequenza di scatti con il dispositivo puntato su 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
Superato: i valori R, G, B devono aumentare linearmente con l'aumentare della sensibilità.
test_linearity_plot_means.png
test_locked_burst
Verifica il blocco 3A e il burst YUV (utilizzando l'impostazione automatica). Questo test è progettato per superare anche su dispositivi limitati che non dispongono MANUAL_SENSOR
o PER_FRAME_CONTROLS
. Il test verifica la coerenza dell'immagine YUV mentre il controllo del frame rate è in CTS.
API testate:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Superato: le acquisizioni sembrano coerenti.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Verifica che i parametri android.colorCorrection.*
vengano applicati quando impostati. Effettua riprese 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 mappa tonale lineare. La mappatura dei toni è una tecnica utilizzata nell'elaborazione delle immagini per mappare un set di colori su un altro per approssimare l'aspetto delle immagini ad alta gamma dinamica in un mezzo che ha 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 R e B aumentano in base alla trasformazione.
test_param_color_correction_plot_means.png
*L'asse x rappresenta le richieste di acquisizione: 0 = unità, 1=potenziamento rosso, 2=potenziamento blu
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (aumento R)
test_param_color_correction_req=2.jpg (aumento B)
test_param_exposure_time
Verifica che il parametro android.sensor.exposureTime
sia applicato.
API testate:
Superato: ogni scatto è più luminoso del precedente.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Verifica che il parametro android.flash.mode
sia applicato. Imposta manualmente l'esposizione sul lato scuro, in modo che sia ovvio se il flash si è attivato o meno e utilizza una mappa tonale lineare. Controlla il centro con l'immagine del riquadro per vedere se è stato creato un gradiente ampio per verificare se il flash è stato attivato.
API testate:
Superato: il centro dell'immagine del riquadro ha un gradiente ampio, il che significa che il flash è stato 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. Cattura immagini con la fotocamera scarsamente illuminata. Utilizza un guadagno analogico elevato per garantire che l'immagine catturata sia rumorosa. Cattura tre immagini, per NR disattivato, "veloce" e "alta qualità". Cattura anche un'immagine con guadagno basso e NR disattivato e utilizza la varianza di questa come linea di base. Maggiore è l'SNR (rapporto segnale/rumore), migliore è la qualità dell'immagine.
API testate:
Superato: l'SNR varia a seconda delle diverse modalità di riduzione del rumore e si comporta in modo simile al grafico seguente.
test_param_noise_reduction_plot_SNRs.png
0: SPENTO, 1: VELOCE, 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à
Verifica che il parametro android.sensor.sensitivity
sia applicato. Il test aumenta la sensibilità in 5 step con esposizione fissa per ogni scatto.
API testate:
Superato: la media RGB del 10% centrale diventa più luminosa con una maggiore sensibilità.
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
Verifica che il parametro android.shading.mode
sia 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
Superato: 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 diverse curve di mappatura dei toni a ciascun canale R, G, B e controlla che le immagini di output vengano modificate come previsto. Questo test è composto da 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
Passaggio:
- test1: entrambe le immagini hanno una mappa tonale lineare, ma n=1 ha una pendenza più ripida. Il canale G (verde) è più luminoso per l'immagine n=1.
- test2: stessa mappa tonale, ma lunghezza 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 successiva. Cattura una serie di immagini RAW e YUV con sensibilità diversa, pubblica la combinazione di aumento della sensibilità RAW e controlla se la media dei pixel di output corrisponde alle impostazioni richieste.
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
Superato: le immagini RAW diventano più scure all'aumentare dell'aumento mentre le immagini YUV rimangono costanti in termini di 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_sensibilità
Cattura una serie di immagini grezze con guadagni crescenti e misura il rumore. Cattura solo 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
Passaggio: ogni tiro è più rumoroso del tiro precedente, poiché il guadagno aumenta.
Utilizza la varianza della cella della griglia delle statistiche centrali.
test_raw_burst_sensitivity_variance.png
prova_esposizione_raw
Cattura una serie di immagini grezze con 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
Superato: aumentando l'ISO (guadagno) i pixel diventano più sensibili alla luce, quindi la trama 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_sensibilità
Cattura una serie di immagini grezze con sensibilità crescente e misura il rumore (varianza) nel 10% centrale dell'immagine. Verifica che ogni scatto sia più rumoroso del 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 ad ogni tiro.
test_raw_sensitivity_variance.png
test_rielaborazione_riduzione_rumore
Verifica che android.noiseReduction.mode
venga applicato per la rielaborazione delle richieste. Cattura le immagini rielaborate con la fotocamera scarsamente illuminata. Utilizza un guadagno analogico elevato per garantire che l'immagine acquisita sia rumorosa. Cattura tre immagini rielaborate, per NR disattivato, "veloce" e "alta qualità". Cattura un'immagine rielaborata con guadagno basso e NR disattivato e utilizza la varianza di questa come linea di base.
API testate:
Superato: VELOCE >= SPENTO, HQ >= VELOCE, HQ >> SPENTO
Grafico tipico SNR vs NR_MODE
test_tonemap_sequence
Testa una sequenza di riprese con diverse curve della mappatura dei toni. Cattura 3 scatti manuali con una mappa tonale lineare. Cattura 3 scatti manuali con tonemap predefinita. Calcola il delta tra ciascuna coppia di frame consecutivi.
API testate:
Superato: ci sono 3 fotogrammi identici seguiti da un set diverso di 3 fotogrammi 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 delle immagini funzionino. Utilizza una richiesta manuale con una mappa tonale lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando convertiti dal modulo image_processing_utils
. Le immagini non vengono salvate per impostazione predefinita, ma possono essere salvate abilitando debug_mode
.
API testate:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Superato: tutti i centri dell'immagine hanno una differenza massima RMS (valore quadratico medio di un segnale) nelle immagini convertite RGB con il 3% dell'immagine YUV con la risoluzione più alta.
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:
Superato: il test completa e restituisce le immagini richieste.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Verifica l'acquisizione di un singolo fotogramma sia come output YUV che JPEG. Utilizza una richiesta manuale con una mappa tonale lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando convertiti dal modulo image_processing_utils
.
API testate:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Passato: le immagini YUV e JPEG sono simili e presentano una differenza inferiore all'1% RMS (valore quadratico medio di un segnale).
![]() | ![]() | |
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Verifica l'acquisizione di un singolo fotogramma sia come output RAW che YUV. Utilizza una richiesta manuale con mappatura dei toni lineare in modo che RAW e YUV siano gli stessi. Confronta i valori RGB centrali del 10% delle immagini convertite RGB. Registra android.shading.mode
.
API testate:
-
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
Passato: le immagini YUV e JPEG sono simili e presentano una differenza inferiore al 3,5% RMS (valore quadratico medio di un segnale).
![]() | ![]() | |
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_yuv_plus_raw10
Verifica l'acquisizione di un singolo fotogramma sia come output RAW10 che YUV. Utilizza una richiesta manuale con mappatura dei toni lineare in modo che RAW e YUV siano gli stessi. Confronta i valori RGB centrali del 10% delle immagini convertite RGB. Registra android.shading.mode
.
API testate:
-
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
Superato: le immagini RAW10 e YUV sono simili e presentano una differenza inferiore al 3,5% RMS (valore quadratico medio di un segnale).
![]() | ![]() | |
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
Verifica l'acquisizione di un singolo fotogramma sia come output RAW12 che YUV. Utilizza una richiesta manuale con mappatura dei toni lineare in modo che RAW e YUV siano gli stessi. Confronta i valori RGB centrali del 10% delle immagini convertite RGB. Registra android.shading.mode
.
API testate:
-
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#RAW12
Superato: le immagini RAW12 e YUV sono simili e presentano una differenza inferiore al 3,5% RMS (valore quadratico medio di un segnale).
![]() | ![]() | |
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
scena2_a
scene2_a ha tre volti con sfondo grigio e abiti neutri. I volti vengono scelti per avere una vasta gamma di tonalità della pelle. Il grafico deve avere l'orientamento corretto affinché il rilevamento dei volti funzioni in modo ottimale.
scena2_a
test_auto_flash
Verifica che il flash automatico venga attivato in una scena buia. Verifica che il flash automatico sia attivato controllando che il centro dell'immagine del riquadro abbia un gradiente ampio. Per attivare il flash automatico, il tablet e le luci nel banco di prova devono essere spenti. Il tablet viene spento dal test e le luci possono essere spente automaticamente con il controller Arduino. La scena deve essere completamente buia affinché il test funzioni correttamente. Pertanto, l'apertura posteriore del tablet deve essere completamente coperta dal tablet della scena, mentre l'apertura anteriore deve essere coperta da un'apertura e dal telefono DUT per impedire alla luce diffusa di entrare nell'attrezzatura.
API testate:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Superato: il centro dell'immagine del riquadro ha un gradiente ampio, il che significa che è stato attivato il flash automatico.
test_effetti
Cattura i fotogrammi per gli effetti della fotocamera supportati e controlla se vengono 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
Superato: cattura l'immagine della scena con gli effetti OFF
e un'immagine monocromatica con gli effetti impostati su MONO
.
test_effects_MONO.jpg
test_format_combo
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()
Passa: tutte le combinazioni vengono catturate con successo.
test_jpeg_qualità
Verifica la qualità di compressione JPEG della fotocamera. Passa le qualità JPEG tramite android.jpeg.quality
e garantisce che le tabelle di quantizzazione cambino correttamente.
API testate:
Superato: 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 Pixel 4 rispetto alla qualità JPEG
Esempio di test fallito
Si noti che per immagini di qualità molto bassa (jpeg.quality < 50), non vi è alcun aumento della compressione nella matrice di quantizzazione.
test_num_facce
Verifica il rilevamento dei volti.
API testate:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: Trova tre facce.
test_num_faces_fd_mode_1.jpg
scena2_b
test_num_facce
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene dei volti.
API testate:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Supera: trova 3 facce.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Cattura due immagini utilizzando i formati YUV e JPEG comuni più grandi con le stesse proporzioni del formato JPEG più grande che non supera la risoluzione di 1920x1440. Imposta jpeg.quality
su 100 e acquisisce una richiesta di doppia superficie. Converte entrambe le immagini in array RGB e calcola la differenza radice quadrata media (RMS) 3D tra le due immagini.
API testate:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Passato: le immagini YUV e JPEG sono simili e presentano una differenza inferiore all'1% RMS (valore quadratico medio di un segnale).
scena2_c
test_num_facce
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene dei volti.
API testate:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Supera: trova 3 facce.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Verifica la latenza di acquisizione JPEG per la classe di prestazioni S come specificato nella sezione 2.2.7.2 Fotocamera nel CDD.
Superato: DEVE avere una latenza di acquisizione JPEG della fotocamera2 < 1000 ms per la risoluzione 1080p misurata dal PerformanceTest 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 nel CDD.
Superato: DEVE avere una latenza di avvio della fotocamera 2 (fotocamera aperta al primo fotogramma di anteprima) < 600 ms, misurata dal PerformanceTest della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
scena2_d
test_num_facce
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene dei volti.
API testate:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Supera: trova 3 facce.
scena2_e
prova_immagine_continua
Vengono acquisiti 50 fotogrammi con risoluzione VGA impostando prima la 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
Superato: il sistema 3A si stabilizza entro la fine di un'acquisizione di 50 fotogrammi.
test_num_facce
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene dei volti.
API testate:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Supera: trova 3 facce.
scena3
Scene3 utilizza il grafico ISO12233 e la maggior parte dei test utilizza un metodo di estrazione del grafico per trovare il grafico nella scena. Per questo motivo la maggior parte delle immagini salvate non hanno i bordi come le immagini delle scene 1, 2 o 4, ma solo il grafico. La carta deve avere l'orientamento corretto affinché il cercatore di carta funzioni in modo ottimale.
test_3a_coerenza
Test per la consistenza 3A.
API testate:
-
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
Superato: 3A converge per esposizione, guadagno, awb (bilanciamento automatico del bianco) e fd (distanza di messa a fuoco) tre volte entro la tolleranza.
test_edge_enhancement
Verifica che il parametro android.edge.mode
sia applicato correttamente. Acquisisce immagini non rielaborate per ciascuna modalità edge e restituisce la nitidezza dell'immagine di output e i metadati dei risultati dell'acquisizione. Elabora una richiesta di acquisizione con una determinata modalità bordo, sensibilità, tempo di esposizione, distanza di messa a fuoco e parametro della superficie di output.
Superato: modalità HQ
(2) più nitida della modalità OFF
(0). Modalità FAST
(1) più nitida della modalità OFF
. Modalità HQ
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 (fast mode)
test_edge_enhancement_edge=2.jpg (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
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: Lens movement flag is True
in the frame with sharpness change.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
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: Focal lengths and circles sizes are consistent.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%. ie the FOV changes at most 20%
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
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: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
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: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
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()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
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: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization