Test ITS della fotocamera

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina fornisce un elenco completo dei test in Camera Image Test Suite (ITS), che fa parte di Android Compatibility Test Suite (CTS) Verifier. I test ITS sono test funzionali, il che significa che non misurano la qualità dell'immagine, ma che tutte le funzioni della fotocamera pubblicizzate funzionano come previsto. Questo documento consente a sviluppatori e tester di comprendere cosa fanno i singoli test e come eseguire il debug degli errori dei test.

I test sono raggruppati per scena come segue:

  • scene0 : cattura metadati, jitter, giroscopio, vibrazione
  • scene1 : Esposizione, sensibilità, compensazione EV, YUV rispetto a JPEG/RAW
  • scene2 : Rilevamento del volto
  • scene3 : Miglioramento dei bordi, movimento dell'obiettivo
  • scene4 : Proporzioni, ritaglio, campo visivo
  • scene5 : Ombreggiatura della lente
  • scena6 : Zoom
  • sensor_fusion : offset di temporizzazione fotocamera/giroscopio

Vedere le singole sezioni per una descrizione di ciascuna scena.

scena0

I test di Scene0 non richiedono informazioni specifiche sulla scena. Tuttavia, il telefono deve essere fermo per il giroscopio e il test delle vibrazioni.

test_burst_capture

Verifica che l'intera pipeline di acquisizione possa tenere il passo con la velocità dell'acquisizione fullsize e il tempo della CPU.

API testate:

Passa: acquisisce una raffica di immagini a grandezza naturale e la fotocamera è abbastanza veloce da evitare il timeout.

test_capture_result_dump

Verifica che un risultato di acquisizione venga restituito da un'acquisizione manuale e quindi ne esegue il dump.

API testate:

Passa: completa l'acquisizione e scarica i risultati dell'acquisizione.

test_giro_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:

Passato: il delta della lettura del giroscopio è inferiore a 0,01 nel tempo.

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

Misura il jitter nei timestamp della fotocamera.

API testate:

Passato: c'è almeno un delta di 30 ms tra i fotogrammi.

test_jitter_plot.png

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. Esamina i risultati dell'acquisizione e gli oggetti delle caratteristiche della fotocamera. Questo test utilizza l'esposizione auto_capture_request e guadagna valori perché il contenuto dell'immagine non è importante.

API testate:

Pass: livello hardware, rollingShutterSkew , tag frameDuration , timestampSource , croppingType , blackLevelPattern , pixel_pitch , FOV, hyperfocal distance sono presenti e hanno valori validi.

test_param_sensitivity_burst

Verifica che il parametro android.sensor.sensitivity sia applicato correttamente a raffica. Esamina solo i metadati di output.

API testate:

Superato: i dati di output hanno una tolleranza di errore inferiore allo 0,2%.

test_lettura_scrittura

Verifica che il dispositivo scriva i valori di esposizione e guadagno corretti rileggendo i metadati di acquisizione.

API testate:

Superato: i valori di lettura e scrittura corrispondono in tutti gli scatti.

test_sensor_events

Verifica che il dispositivo interroga e stampa gli eventi dei sensori per i dispositivi che pubblicizzano il supporto per la fusione dei sensori. I sensori previsti sono accelerometro, giroscopio e magnetometro. Questo test funziona solo se lo schermo è acceso, il che significa che il dispositivo non è in modalità standby.

API testate:

Pass: vengono ricevuti gli eventi per ciascun sensore.

test_solid_color_test_pattern

Verifica che i modelli di prova in tinta unita siano generati correttamente per la disattivazione dell'audio della telecamera. Se è supportato il silenziamento della telecamera, è necessario supportare i modelli di prova in tinta unita. Se il silenziamento della telecamera non è supportato, i modelli di prova in tinta unita vengono testati solo se la funzionalità è annunciata.

Se le immagini RAW sono supportate, viene testata anche l'assegnazione del colore. 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:

Superato: i modelli di test solidi supportati sono del colore corretto e vi è una bassa varianza nell'immagine.

test_test_pattern

Verifica il parametro android.sensor.testPatternMode per acquisire fotogrammi per ogni modello di test valido e verifica che i fotogrammi siano generati correttamente per i colori solidi e le barre dei colori. Questo test include i seguenti passaggi:

  1. Acquisisce immagini per tutti i modelli di test supportati.
  2. Esegue un semplice controllo di correttezza per il motivo di prova in tinta unita e le barre dei colori.

API testate:

Superato: i modelli di test supportati vengono generati correttamente.

test_test_pattern_2

test_test_patterns_2.jpg

test_tonemap_curve

Verifica la conversione del pattern di test 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 tonemap. Garantisce che la pipeline abbia output di colore adeguati con tonemap lineare e input di immagini ideali (si basa su test_test_patterns ).

API testate:

Passaggio: YUV e RAW sembrano simili tra loro.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Verifica se gli eventi del sensore di immagine e di movimento sono nello stesso dominio del tempo.

API testate:

Passa: i timestamp di movimento si trovano tra i due timestamp dell'immagine.

test_vibration_restriction

Verifica se la vibrazione del dispositivo funziona come previsto.

API testate:

Superato: il dispositivo non vibra quando è disattivato dall'API di limitazione dell'audio della videocamera.

scena 1

scene1 è un grafico grigio. Il grafico grigio deve coprire il 30% centrale del campo visivo della telecamera. Il grafico dei grigi dovrebbe sfidare moderatamente 3A (esposizione automatica, bilanciamento del bianco automatico, messa a fuoco automatica) poiché la regione centrale non ha funzionalità. 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.

scena 1

scene1: tabella a grandezza naturale (a sinistra). ⅔ grafico in scala (a destra).

prova_3a

Verifica la convergenza di 3A con un obiettivo moderatamente impegnativo.

API testate:

Superato: 3A converge e i valori 3A restituiti sono validi.

test_ae_af

Verifica singolarmente gli algoritmi di esposizione automatica (AE) e messa a fuoco automatica (AF) 3A.

API testate:

Passato: 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 dovrebbe essere ignorato perché AE è disabilitato.

API testate:

Passaggio: AE converge.

test_auto_vs_manual

I test che hanno catturato scatti automatici e manuali hanno lo stesso aspetto.

API testate:

Superato: il bilanciamento del bianco manuale guadagna e trasforma riportati in ogni risultato di acquisizione che corrisponde alla estimate del bilanciamento del bianco automatico dall'algoritmo 3A della fotocamera.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_nero_bianco

Verifica che il dispositivo produca immagini in bianco e nero complete. Esegue due acquisizioni, la prima con un guadagno estremamente basso e un'esposizione breve, che si traduce in una foto nera, e la seconda con un guadagno estremamente elevato e un'esposizione lunga, che si traduce in una foto bianca.

API testate:

Passa: 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% di differenza.

test_nero_bianco_nerotest_nero_bianco_nero
test_nero_bianco_nero.jpg test_nero_bianco_bianco.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_sameness_manual

Scatta 5 raffiche di 50 immagini con l'impostazione di acquisizione manuale e verifica che siano tutte identiche. Questo test può essere utilizzato per identificare se sono presenti frame sporadici che vengono elaborati in modo diverso o presentano artefatti.

API testate:

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

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

Verifica che i dati validi vengano restituiti negli oggetti CaptureResult . Esegue un'acquisizione automatica, manuale e automatica.

API testate:

Passato: i metadati sono validi per tutte le acquisizioni e le impostazioni manuali non trapelano nella seconda acquisizione automatica. Traccia la correzione dell'ombreggiatura dell'obiettivo per le acquisizioni.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Verifica che i flussi RAW non siano ritagliabili.

API testate:

Passa: le immagini YUV vengono ritagliate al centro ma non le immagini RAW.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

Verifica che le regioni di ritaglio funzionino. Scatta un'immagine completa e crea patch di 5 regioni diverse (angoli e centro). Scatta immagini con il ritaglio impostato per le 5 regioni. Confronta i valori della patch e dell'immagine di ritaglio.

API testate:

Passa: l'immagine della regione ritagliata corrisponde alla patch che corrisponde all'immagine ritagliata.

test_dng_noise_model

Verifica che i parametri del modello grezzo DNG siano corretti. Il grafico descrive la varianza misurata di una macchia centrale della scheda grigia in scatti grezzi catturati in un intervallo di sensibilità e confronta questi valori con la varianza prevista per ciascuna sensibilità dal modello di rumore DNG nella fotocamera HAL (basato sul parametri O,S restituiti negli oggetti del risultato di acquisizione). Per maggiori dettagli sul modello di rumore DNG, scaricare il seguente documento sul modello di rumore DNG .

API testate:

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

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 fasi e controlla la luminosità misurata rispetto alla luminosità prevista. I valori previsti vengono calcolati dalla luminosità dell'immagine dell'immagine senza compensazione EV applicata e il valore atteso si satura se i valori calcolati superano l'intervallo di valori dell'immagine effettivo. Il test ha esito negativo se i valori previsti e i valori misurati non corrispondono o se le immagini si sovraespongono entro cinque passaggi.

API testate:

Superato: le immagini mostrano un'esposizione crescente senza sovraesporre entro cinque passaggi.

test_ev_compensation_advanced_plot_means

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 ogni valore di compensazione.

API testate:

Passa: acquisisce l'aumento della luminanza con una maggiore impostazione della compensazione EV e gli otto fotogrammi acquisiti per ciascuna impostazione della compensazione EV hanno valori di luminanza stabili.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_esposizione

Verifica che si ottiene un'esposizione costante al variare di ISO e tempo di esposizione. Scatta 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 l'uno all'altro. Garantisce che le immagini non siano bloccate su 0 o 1 (il che le farebbe sembrare linee piatte). Il test può essere eseguito anche con immagini RAW impostando il flag di debug nel file di configurazione.

API testate:

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

test_exposure_plot_means.png

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

test_jpeg

I test che hanno convertito le immagini YUV e le immagini JPEG del dispositivo hanno lo stesso aspetto. 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.jpgtest_jpeg=fmt=yuv.jpg
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 back-to-back, variando i parametri della richiesta di acquisizione tra gli scatti. 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.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_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:

Superato: i valori di R, G, B devono aumentare linearmente all'aumentare della sensibilità.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Verifica il blocco 3A e il burst YUV (usando l'impostazione automatica). Questo test è progettato per essere superato 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:

Superato: le acquisizioni sembrano coerenti.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_multi_camera_match

Test per vedere se le telecamere multiple sui dispositivi danno valori RGB simili per una macchia grigia.

API testate:

Passato: fotocamere diverse producono valori RGB simili per la stessa macchia di grigio.

test_multi_camera+match_yuv_fl=4.38

test_multi_camera+match_yuv_fl=4.38.jpg

test_param_color_correction

Verifica che i parametri android.colorCorrection.* vengano applicati quando impostati. Scatta foto con diversi valori di trasformazione e guadagno 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 dei toni lineare. La mappatura dei toni è una tecnica utilizzata nell'elaborazione delle immagini per mappare un insieme di colori a un altro per approssimare l'aspetto delle immagini ad alta gamma dinamica in un mezzo che ha una gamma dinamica più limitata.

API testate:

Passato: i valori R e B aumentano in base alla trasformazione.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*L'asse x è la richiesta di acquisizione: 0 = unità, 1 = boost rosso, 2= boost blu

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (aumento R)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (aumento B)

test_param_exposure_time

Verifica che venga applicato il parametro android.sensor.exposureTime .

API testate:

Superato: ogni scatto è più luminoso dello scatto precedente.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

Verifica che il parametro android.flash.mode sia applicato. Imposta manualmente l'esposizione in modo che sia sul lato oscuro, in modo che sia ovvio se il flash si è attivato o meno, e utilizza una mappa dei toni lineare. Controlla il centro con l'immagine del riquadro per vedere se è stata creata una sfumatura ampia per verificare se il flash si è attivato.

API testate:

Superato: il centro dell'immagine del riquadro ha un gradiente ampio, il che significa che il flash si è attivato.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_riduzione_rumore

Verifica che il parametro android.noiseReduction.mode venga applicato correttamente quando impostato. Cattura le immagini con la fotocamera scarsamente illuminata. Utilizza un guadagno analogico elevato per garantire che l'immagine acquisita sia rumorosa. Cattura tre immagini, per NR disattivato, "veloce" e "alta qualità". Cattura anche un'immagine con basso guadagno e NR disattivato e usa la varianza di questo come linea di base. Maggiore è l'SNR (Rapporto segnale/rumore), migliore è la qualità dell'immagine.

API testate:

Superato: SNR varia con le diverse modalità di riduzione del rumore e si comporta in modo simile al grafico seguente.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: OFF, 1: VELOCE, 2: HQ, 3: MIN , 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_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:

Passa: RGB significa che il 10% centrale diventa più luminoso con una maggiore sensibilità.

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

test_param_sensibilità_plot

test_param_sensitivity_plot.png

test_param_shading_mode

Verifica che il parametro android.shading.mode sia applicato.

API testate:

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

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

Verifica che il parametro android.tonemap.mode sia applicato. Applica diverse curve tonemap a ciascun canale R, G, B e controlla che le immagini in uscita siano modificate come previsto. Questo test è composto da due test, test1 e test2.

API testate:

Passaggio:

  • test1: entrambe le immagini hanno una tonemap lineare, ma n=1 ha un gradiente più ripido. Il canale G (verde) è più luminoso per l'immagine n=1.
  • test2: Stessa tonemap, ma lunghezza diversa. Le immagini sono le stesse.
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

Controlla l'aumento della sensibilità dopo RAW. Cattura una serie di immagini RAW e YUV con sensibilità diverse, pubblica una combinazione di aumento della sensibilità RAW e controlla se la media dei pixel di output corrisponde alle impostazioni della richiesta.

API testate:

Superato: le immagini RAW diventano più scure all'aumentare del boost mentre le immagini YUV rimangono costanti in termini di luminosità

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

Cattura una serie di immagini grezze con guadagni crescenti e misura il rumore. Cattura solo raw, a raffica.

API testate:

Passaggio: ogni colpo è più rumoroso del colpo precedente, poiché il guadagno aumenta.

Utilizza la varianza della cella centrale della griglia delle statistiche.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Cattura una serie di immagini grezze con un tempo di esposizione crescente e misura i valori dei pixel.

API testate:

Passa: aumentando l'ISO (guadagno) i pixel sono più sensibili alla luce, quindi la trama si sposta verso sinistra.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ è 1 ms, 10¹ è 10 ms, 10⁻¹ è 0,1 ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensibilità

Cattura una serie di immagini grezze con sensibilità crescenti e misura il rumore (varianza) al centro del 10% dell'immagine. Verifica che ogni scatto sia più rumoroso del precedente.

API testate:

Passaggio: la varianza aumenta ad ogni colpo.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

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 di acquisizione sia rumorosa. Cattura tre immagini rielaborate, per NR disattivato, "veloce" e "alta qualità". Acquisisce un'immagine rielaborata con guadagno basso e NR disattivato e utilizza la varianza di questa come linea di base.

API testate:

Passa: VELOCE >= OFF, HQ >= VELOCE, HQ >> OFF

Tipico grafico SNR vs NR_MODE

Tipico grafico SNR vs NR_MODE

test_tonemap_sequence

Testa una sequenza di scatti con diverse curve tonemap. Cattura 3 scatti manuali con una tonemap lineare. Cattura 3 scatti manuali con tonemap di default. Calcola il delta tra ogni coppia di frame consecutiva.

API testate:

Pass: ci sono 3 frame identici seguiti da un diverso set di 3 frame identici.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

Verifica che tutte le dimensioni e i formati riportati per l'acquisizione delle immagini funzionino. Utilizza una richiesta manuale con una tonemap 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 abilitando debug_mode .

API testate:

Superato: tutti i centri immagine hanno una differenza RMS (valore quadratico medio di un segnale) massima nelle immagini convertite in RGB con il 3% dell'immagine YUV con la risoluzione più alta.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Verifica che le dimensioni e i formati riportati per l'acquisizione delle immagini funzionino.

API testate:

Superato: il test completa e restituisce le immagini richieste.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Test di acquisizione di un singolo fotogramma sia come output YUV che JPEG. Utilizza una richiesta manuale con una tonemap lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando vengono convertiti dal modulo image_processing_utils .

API testate:

Superato: le immagini YUV e JPEG sono simili e hanno una differenza RMS (valore quadratico medio di un segnale) inferiore all'1%.

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Test di acquisizione di un singolo fotogramma sia come output RAW che YUV. Utilizza una richiesta manuale con tonemap lineare, quindi RAW e YUV dovrebbero essere gli stessi. Confronta i valori RGB centrali del 10% delle immagini convertite RGB. Registra android.shading.mode .

API testate:

Superato: le immagini YUV e JPEG sono simili e presentano una differenza RMS (valore quadratico medio-radice di un segnale) inferiore al 3,5%.

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

test_yuv_plus_raw10

Test di acquisizione di un singolo fotogramma sia come output RAW10 che YUV. Utilizza una richiesta manuale con tonemap lineare, quindi RAW e YUV dovrebbero essere gli stessi. Confronta i valori RGB centrali del 10% delle immagini convertite RGB. Registra android.shading.mode .

API testate:

Superato: le immagini RAW10 e YUV sono simili e hanno una differenza RMS (valore quadratico medio di un segnale) inferiore al 3,5%.

test_yuv_plus_raw10_shading=1_rawtest_yuv_plus_raw10_shading=1_yuv
test_yuv_plus_raw10_shading=1_raw.jpg test_yuv_plus_raw10_shading=1_yuv.jpg

test_yuv_plus_raw12

Test di acquisizione di un singolo fotogramma sia come output RAW12 che YUV. Utilizza una richiesta manuale con tonemap lineare, quindi RAW e YUV dovrebbero essere gli stessi. Confronta i valori RGB centrali del 10% delle immagini convertite RGB. Registra android.shading.mode .

API testate:

Superato: le immagini RAW12 e YUV sono simili e hanno una differenza RMS (valore quadratico medio di un segnale) inferiore al 3,5%.

test_yuv_plus_raw12_shading=1_raw.jpgtest_yuv_plus_raw12_shading=1_yuv.jpg
test_yuv_plus_raw12_shading=1_raw.jpg test_yuv_plus_raw12_shading=1_yuv.jpg

scena2_a

scene2_a ha tre facce con sfondo grigio e abiti neutri. I volti sono scelti per avere una vasta gamma di tonalità della pelle.

scena2_a

scena2_a

test_auto_flash

Verifica che il flash automatico venga attivato in una scena buia. Verifica che il flash automatico venga attivato controllando che il centro dell'immagine del riquadro abbia una sfumatura ampia. 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.

API testate:

Superato: il centro dell'immagine del riquadro ha un gradiente ampio, il che significa che il flash automatico viene attivato.

test_effetti

Cattura il fotogramma per gli effetti della fotocamera supportati e controlla se sono generati correttamente. Il test controlla solo gli effetti OFF e MONO , ma salva le immagini per tutti gli effetti supportati.

API testate:

Passa: acquisisce l'immagine della scena con effetti OFF ​​e un'immagine monocromatica con effetti impostati su MONO .

test_effetti_MONO

test_effetti_MONO.jpg

test_format_combo

Testa diverse combinazioni di formati di output.

API testate:

Passa: tutte le combinazioni vengono acquisite con successo.

test_jpeg_quality

Verifica la qualità della compressione JPEG della fotocamera. Passa le qualità JPEG tramite android.jpeg.quality e assicura che le tabelle di quantizzazione cambino correttamente.

API testate:

Passato: la matrice di quantizzazione diminuisce con l'aumento della qualità. (Matrice rappresenta il fattore di divisione.)

test_jpeg_quality

Pixel 4 fotocamera posteriore luma/chroma DQT matrice media rispetto alla qualità JPEG

test_jpeg_quality non riuscito

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:

Passa: trova tre facce.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

scena2_b

test_auto_per_frame_control

Verifica le proprietà PER_FRAME_CONTROL per le richieste di acquisizione automatica.

API testate:

Superato: sono presenti tutte le proprietà PER_FRAME_CONTROL .

test_auto_per_frame_control_frame_1

test_auto_per_frame_control_frame_1.jpg

test_auto_per_frame_control_frame_10

test_auto_per_frame_control_frame_10.jpg

test_auto_per_frame_control_frame_29

test_auto_per_frame_control_frame_29.jpg

test_auto_per_frame_control_plot

test_auto_per_frame_control_plot.png

test_num_facce

Verifica il rilevamento dei volti con una maggiore diversità del tono della pelle nelle scene dei volti.

API testate:

Passa: trova 3 facce.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpg_capture_sameness

Acquisisce due immagini utilizzando i più grandi formati comuni YUV e JPEG con le stesse proporzioni del formato JPEG più grande senza superare una 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 quadratica media (RMS) 3D tra le due immagini.

API testate:

Superato: le immagini YUV e JPEG sono simili e hanno una differenza RMS (valore quadratico medio di un segnale) inferiore all'1%.

scena2_c

test_num_facce

Verifica il rilevamento dei volti con una maggiore diversità del tono della pelle nelle scene dei volti.

API testate:

Passa: trova 3 facce.

test_num_faces_fd_mode_1

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 una risoluzione di 1080p misurata dal PerformanceTest della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.

test_camera_launch_perf_class

Verifica 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 telecamera2 (apri la telecamera al primo fotogramma di anteprima) < 600 ms misurata dal PerformanceTest della telecamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le telecamere principali.

scena2_d

test_num_facce

Verifica il rilevamento dei volti con una maggiore diversità del tono della pelle nelle scene dei volti.

API testate:

Passa: trova 3 facce.

scena2_e

immagine_di_prova

50 fotogrammi di risoluzione VGA vengono acquisiti con la richiesta di acquisizione prima impostando android.control.afMode = 4 (CONTINUOUS_PICTURE).

API testate:

Superato: il sistema 3A si stabilizza entro la fine di un'acquisizione di 50 fotogrammi.

test_num_facce

Verifica il rilevamento dei volti con una maggiore diversità del tono della pelle nelle scene dei volti.

API testate:

Passa: 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 ha bordi come le immagini per le scene 1, 2 o 4, ma solo il grafico.

test_3a_consistenza

Test per la consistenza 3A.

API testate:

Passato: 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 dei metadati del risultato di acquisizione. Elabora una richiesta di acquisizione con una data modalità bordo, sensibilità, tempo di esposizione, distanza di messa a fuoco e parametro della superficie di uscita.

Pass: 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

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (modalità veloce)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (modalità alta qualità)

test_flip_mirror

Verifica se l'immagine è orientata correttamente secondo la sezione CDD 7.5.2 Fotocamera frontale [C-1-5] .

Le immagini specchiate, capovolte o ruotate possono essere identificate dalla caratteristica del diamante vicino al centro.

Pass: Image isn't flipped, mirrored or rotated.

test_flip_mirror_scene_patch

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:

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:

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

test_reprocess_edge_enhancement_plot.png

scene4

Scene4 consists of a black circle on a white background inside a square.

scene4

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:

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:

Pass: Focal lengths and circles sizes are consistent.

test_preview_stabilization_fov

Checks the supported preview sizes to ensure the FoV is cropped approriately. 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:

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:

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:

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

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:

Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.

test_zoom

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. The sensor_fusion tests can be automated with the Sensor Fusion Box .

checkerboard

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:

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:

Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.

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.png

    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.png

    test_sensor_fusion_plot_rotations

APIs tested:

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:

Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.