Kamera ITS testleri

Bu sayfada, Android Uyumluluk Testi Paketi (CTS) Doğrulayıcının bir parçası olan Kamera Görüntüsü Test Paketi (ITS) kapsamındaki testlerin kapsamlı bir listesi sunulmaktadır. ITS testleri işlevsel testlerdir; yani görüntü kalitesini ölçmezler, ancak reklamı yapılan tüm kamera işlevlerinin beklendiği gibi çalıştığı anlamına gelir. Bu belge, geliştiricilerin ve test uzmanlarının bireysel testlerin ne yaptığını ve test hatalarındaki hataları nasıl ayıklayacaklarını anlamalarını sağlar.

Kamera ITS kapıları, gerekli kamera özelliklerine, API düzeyine ve medya performans sınıfı (MPC) düzeyine göre test eder. API düzeyi için ITS, daha düşük API düzeylerinde işlevsellik açısından olumsuz kullanıcı deneyimlerini test eden belirli bir API düzeyine eklenen testleri geçmek için ro.product.first_api_level kullanır. ITS, yeni donanım yeteneği gerektiren belirli bir API düzeyinde eklenen özelliklere yönelik testleri geçmek için ro.vendor.api_level kullanır. Bir cihaz için ro.odm.build.media_performance_class tanımlanmışsa ITS, MPC düzeyine bağlı olarak belirli testlerin yürütülmesini gerektirir.

Testler aşağıdaki gibi sahneye göre gruplandırılmıştır:

  • scene0 : Meta verileri, titreşimi, jiroskopu, titreşimi yakalayın
  • sahne1 : Pozlama, hassasiyet, EV telafisi, YUV ve JPEG/RAW
  • sahne2 : Yüz algılama, renkli sahneler veya tamamen karanlık gerektiren testler
  • sahne3 : Kenar geliştirme, lens hareketi
  • sahne4 : En boy oranı, kırpma, görüş alanı
  • sahne5 : Mercek gölgeleme
  • sahne6 : Yakınlaştırma
  • scene_extensions : Kamera uzantıları
  • sensör_füzyon : Kamera/jiroskop zamanlama farkı

Her sahnenin açıklaması için ayrı bölümlere bakın.

sahne0

Sahne0 testleri belirli bir sahne bilgisi gerektirmez. Ancak jiroskop ve titreşim testleri için telefonun sabit olması gerekir.

test_burst_capture

Tüm yakalama hattının tam boyutlu yakalama hızına ve CPU süresine ayak uydurabildiğini doğrular.

Test edilen API'ler:

Geçiş: Bir dizi tam boyutlu görüntü yakalar ve kamera, zaman aşımını önleyecek kadar hızlıdır.

test_capture_result_dump

Bir yakalama sonucunun manuel yakalamadan döndürüldüğünü test eder ve ardından onu döker.

Test edilen API'ler:

Geçiş: Yakalamayı tamamlar ve yakalama sonuçlarını döker.

test_gyro_bias

Cihaz sabitken jiroskopun kararlı çıkışı olup olmadığını test eder. Veriler ortalama 20 veri noktası olarak çizilmiştir.

Test edilen API'ler:

Başarılı: Jiroskop okumasının deltası zamanla 0,01'den azdır.

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

Kamera zaman damgalarındaki titreşimi ölçer.

Test edilen API'ler:

Geçiş: Çerçeveler arasında en az 30 ms'lik bir delta vardır.

test_jitter_plot.png

test_jitter_plot.png (Küçük y ekseni aralığına dikkat edin. Bu çizimde titreşim aslında küçüktür.)

test_metadata

Meta veri girişlerinin geçerliliğini test eder. Yakalama sonuçlarına ve kamera özellikleri nesnelerine bakar. Bu test, resim içeriği önemli olmadığından auto_capture_request pozlama ve kazanç değerlerini kullanır.

Test edilen API'ler:

Geçiş: Donanım düzeyi, rollingShutterSkew , frameDuration etiketleri, timestampSource , croppingType , blackLevelPattern , pixel_pitch , FoV, hiperfokal mesafe mevcuttur ve geçerli değerlere sahiptir.

test_param_sensitivity_burst

android.sensor.sensitivity parametresinin seri çekimde düzgün şekilde uygulandığını test eder. Yalnızca çıktı meta verilerini inceler.

Test edilen API'ler:

Başarılı: Çıkış verilerinin hata toleransı %0,2'den azdır.

test_read_write

Yakalama meta verilerini tekrar okuyarak cihazın doğru pozlamayı ve kazanç değerlerini yazdığını test eder.

Test edilen API'ler:

Başarılı: Okuma ve yazma değerleri tüm çekimlerde eşleşir.

test_sensor_events

Cihazın, sensör füzyon desteği reklamı yapan cihazlar için sensör olaylarını sorguladığını ve yazdırdığını test eder. Beklenen sensörler ivmeölçer, jiroskop ve manyetometredir. Bu test yalnızca ekran açıkken çalışır, yani cihaz bekleme modunda değildir.

Test edilen API'ler:

Başarılı: Her sensör için olaylar alınır.

test_solid_color_test_pattern

Kameranın sesini kapatmak için düz renk test desenlerinin düzgün şekilde oluşturulduğunu test eder. Kameranın sesini kapatma destekleniyorsa düz renk test desenleri desteklenmelidir. Kameranın sesini kapatma desteklenmiyorsa düz renk test modelleri yalnızca bu özelliğin tanıtılması durumunda test edilir.

RAW görüntüler destekleniyorsa renk ataması da test edilir. Test edilen renkler siyah, beyaz, kırmızı, mavi ve yeşildir. RAW görüntüleri desteklemeyen kameralar için yalnızca siyah test edilir.

Test edilen API'ler:

Başarılı: Desteklenen katı test desenleri doğru renktedir ve görüntüde düşük farklılık vardır.

test_test_pattern

Geçerli her test desenine ilişkin kareleri yakalamak için android.sensor.testPatternMode parametresini test eder ve karelerin düz renkler ve renk çubukları için doğru şekilde oluşturulduğunu kontrol eder. Bu test aşağıdaki adımları içerir:

  1. Desteklenen tüm test modelleri için görüntüleri yakalar.
  2. Düz renk test deseni ve renk çubukları için basit bir doğruluk kontrolü gerçekleştirir.

Test edilen API'ler:

Başarılı: Desteklenen test modelleri doğru şekilde oluşturuldu.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

Doğrusal ton haritasıyla test deseninin RAW'dan YUV'ye dönüştürülmesini test eder. Bu test, tonemap dönüşümü için mükemmel bir görüntü deseni oluşturmak amacıyla android.sensor.testPatternMode = 2 (COLOR_BARS) gerektirir. Doğrusal ton haritası ve ideal görüntü girişi ile boru hattının uygun renk çıktılarına sahip olmasını sağlar ( test_test_patterns dayanır).

Test edilen API'ler:

Geçiş: YUV ve RAW birbirine benzer görünüyor.

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

Görüntü ve hareket sensörü olaylarının aynı zaman alanında olup olmadığını test eder.

Test edilen API'ler:

Geçiş: Hareket zaman damgaları, iki görüntü zaman damgası arasındadır.

test_vibration_restriction

Cihazın titreşiminin beklendiği gibi çalışıp çalışmadığını test eder.

Test edilen API'ler:

Başarılı: Cihaz, kamera ses kısıtlama API'si tarafından sessize alındığında titremez.

sahne 1

sahne1 gri bir grafiktir. Gri grafik, kamera görüş alanının ortadaki %30'unu kapsamalıdır. Merkez bölgede hiçbir özellik bulunmadığından gri grafiğin 3A'ya (otomatik pozlama, otomatik beyaz dengesi, otomatik odaklama) orta düzeyde meydan okuması bekleniyor. Ancak yakalama talebi, 3A'nın yakınsaması için yeterli özellikleri içeren sahnenin tamamını belirtir.

RFoV kameralar WFoV veya RFoV test cihazında test edilebilir. Bir RFoV kamera WFoV test düzeneğinde test edilirse, 3A'nın yakınsamasına yardımcı olmak amacıyla FoV'deki gri grafik için bazı sınırlar sağlamak üzere grafik ⅔ oranında ölçeklendirilir. Kamera test donanımlarının daha ayrıntılı açıklamaları için bkz . Kutuda Kamera ITS .

sahne 1

sahne1: Tam boyutlu grafik (solda). ⅔ ölçekli grafik (sağda).

test_3a

3A'nın orta derecede zorlu bir hedefle yakınsamasını test eder.

Test edilen API'ler:

Başarılı: 3A yakınsar ve döndürülen 3A değerleri geçerlidir.

test_ae_af

3A otomatik pozlama (AE) ve otomatik odaklama (AF) algoritmalarını ayrı ayrı test eder.

Test edilen API'ler:

Başarılı: 3A yakınsar ve döndürülen 3A değerleri yasaldır.

test_ae_precapture_trigger

Ön yakalama tetikleyicisini kullanırken AE durum makinesini test eder. AE devre dışıyken beş manuel isteği yakalar. Son istekte, AE devre dışı olduğundan göz ardı edilmesi gereken bir AE ön yakalama tetikleyicisi var.

Test edilen API'ler:

Geçiş: AE yakınsar.

test_auto_vs_manual

Otomatik ve manuel çekimleri yakalayan testler aynı görünüyor.

Test edilen API'ler:

Başarılı: Her çekim sonucunda bildirilen manuel beyaz dengesi kazanımları ve dönüşümü, kameranın 3A algoritmasından elde edilen otomatik beyaz dengesi estimate eşleşir.

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_black_white

Cihazın tam siyah beyaz görüntüler ürettiğini test eder. İki çekim yapar; birincisi son derece düşük kazançlı ve kısa pozlamayla siyah fotoğrafla sonuçlanır, ikincisi son derece yüksek kazançlı ve uzun pozlamayla beyaz fotoğrafla sonuçlanır.

Test edilen API'ler:

Geçiş: Siyah beyaz görüntüler üretir. Beyaz görüntülerin doygun kanalları, %1'den daha az bir hata payı ile [255, 255, 255] RGB değerlerine sahiptir.

test_black_white_blacktest_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_sameness_manual

Manuel yakalama ayarıyla 50 görüntüden oluşan 5 seri çekim yapar ve hepsinin aynı olup olmadığını kontrol eder. Bu test, farklı şekilde işlenen veya yapaylıklar içeren düzensiz çerçevelerin olup olmadığını belirlemek için kullanılabilir.

Test edilen API'ler:

Başarılı: Görüntüler görsel olarak ve RGB değerlerinde aynıdır.

Başarısız: Her patlamanın başlangıcında RGB ortalama grafiğindeki yükselişi veya düşüşü gösterir

  • first_API_level < 30 için tolerans %3'tür
  • first_API_level >= 30 için tolerans %2'dir

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

CaptureResult nesnelerinde geçerli verilerin geri gelip gelmediğini test eder. Otomatik, manuel ve otomatik yakalama yapar.

Test edilen API'ler:

Başarılı: Meta veriler tüm yakalamalar için geçerlidir ve manuel ayarlar ikinci otomatik yakalamaya sızmaz. Yakalamalar için mercek gölgeleme düzeltmesini çizer.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

RAW akışlarının kırpılabilir olmadığını test eder.

Test edilen API'ler:

Başarılı: YUV görüntüleri ortadan kırpılır, ancak RAW görüntüler için bu geçerli değildir.

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

Mahsul bölgelerinin işe yaradığını gösteren testler. Tam bir görüntü çeker ve 5 farklı bölgenin (köşeler ve merkez) yamalarını oluşturur. 5 bölge için kırpma seti ile görüntüler çeker. Yama ve kırpma görüntüsü değerlerini karşılaştırır.

Test edilen API'ler:

Başarılı: Kırpılan bölgenin görüntüsü, kırpma görüntüsüne karşılık gelen yamayla eşleşir.

test_dng_noise_model

DNG ham model parametrelerinin doğru olduğunu doğrular. Grafik, bir dizi hassasiyette çekilen ham çekimlerdeki gri kartın merkez yamasının ölçülen varyansını gösterir ve bu değerleri, kamera HAL'sindeki DNG gürültü modeli tarafından her hassasiyette beklenen varyansla karşılaştırır ( Yakalama sonucu nesnelerinde döndürülen O,S parametreleri). DNG gürültü modeli hakkında daha fazla ayrıntı için DNG Gürültü Modeli ile ilgili aşağıdaki belgeyi indirin.

Test edilen API'ler:

Başarılı: DNG ham model parametreleri doğrudur. Beklenen RGB değerleri, ölçülen gerçek RGB değerleriyle eşleşiyor.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Pozlama değeri (EV) telafisinin uygulandığını test eder. Test, pozlamayı sekiz adımda artırır ve ölçülen parlaklık ile beklenen parlaklığı karşılaştırır. Beklenen değerler, EV telafisi uygulanmadan görüntünün görüntü parlaklığından hesaplanır ve hesaplanan değerler gerçek görüntü değeri aralığını aşarsa beklenen değer doygunluğa ulaşacaktır. Beklenen değerler ve ölçülen değerler eşleşmezse veya görüntüler beş adım içinde aşırı pozlanırsa test başarısız olur.

Test edilen API'ler:

Başarılı: Görüntüler, beş adımda aşırı pozlama olmadan artan pozlamayı gösterir.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

CONTROL_AE_COMPENSATION_STEP ile oluşturulan bir aralık kullanılarak EV telafisinin uygulandığını test eder. Her telafi değerinde sekiz kare yakalanır.

Test edilen API'ler:

Başarılı: Artan EV telafisi ayarıyla parlaklıktaki artışı yakalar ve her bir EV telafisi ayarı için yakalanan sekiz karenin sabit ışık değerleri vardır.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_maruziyeti

ISO ve pozlama süresi değiştikçe sabit bir pozlamanın elde edildiğini test eder. ISO ve pozlama süresinin birbirini dengeleyecek şekilde seçildiği bir dizi çekim yapar. Sonuçlar aynı parlaklığa sahip olmalıdır ancak sıra ilerledikçe görüntü daha gürültülü hale gelmelidir. Örnek piksel ortalama değerlerinin birbirine yakın olduğunu doğrular. Görüntülerin 0 veya 1'e sabitlenmemesini sağlar (bu da onların düz çizgiler gibi görünmesine neden olur). Test, yapılandırma dosyanızdaki debug bayrağını ayarlayarak RAW görüntülerle de çalıştırılabilir.

Test edilen API'ler:

Başarılı: Görüntüler aynı parlaklığa sahiptir ancak daha yüksek ISO ile daha gürültülü hale gelir. ISO*pozlama değeri test edilen kazanç alanı boyunca sabit olduğunda RGB düzlemleri düzdür.

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

YUV görüntülerini ve cihaz JPEG görüntülerini dönüştüren testler aynı görünüyor. Test, görüntünün ortadaki %10'luk kısmını alır ve RGB değerini hesaplar ve bunların eşleştiğini doğrular.

Test edilen API'ler:

Başarılı: Her görüntü arasındaki ortalama RGB farkı %3'ten azdır.

test_jpeg_fmt=jpg.jpgtest_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

FULL ve LEVEL_3 kameralar için ayarların (pozlama ve kazanç) sağ karede mandallandığını test eder. Çekimler arasında yakalama isteği parametrelerini değiştirerek arka arkaya istekleri kullanarak bir dizi çekim yapar. Görüntülerin beklenen özelliklere sahip olup olmadığını kontrol eder.

Test edilen API'ler:

Başarılı: Görüntüler [2, 3, 6, 8, 10, 12, 13] artırılmış ISO veya pozlamaya sahiptir ve test_latching_plot_means.png dosyasında daha yüksek RGB ortalamalarıyla gösterilir.

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_linearity

Cihaz işlemenin doğrusal piksellere çevrilebileceğini test eder. Cihaz tek tip bir hedefe doğrultulduğunda bir dizi çekim yakalar.

Test edilen API'ler:

Geçiş: R, G, B değerleri artan hassasiyetle birlikte doğrusal olarak artmalıdır.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

3A kilidini ve YUV patlamasını test eder (otomatik ayarı kullanarak). Bu test, MANUAL_SENSOR veya PER_FRAME_CONTROLS özelliği olmayan sınırlı cihazlarda bile başarılı olacak şekilde tasarlanmıştır. Test, kare hızı kontrolü CTS'deyken YUV görüntü tutarlılığını kontrol eder.

Test edilen API'ler:

Başarılı: Yakalamalar tutarlı görünüyor.

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_param_color_correction

android.colorCorrection.* parametrelerinin ayarlandığında uygulandığını test eder. Farklı dönüşüm ve kazanç değerlerine sahip çekimler yapar ve bunların farklı görünüp görünmediğini test eder. Dönüşüm ve kazançlar, çıktının giderek kırmızı veya mavi olmasını sağlayacak şekilde seçilir. Doğrusal bir tonemap kullanır. Ton eşleme, daha sınırlı bir dinamik aralığa sahip bir ortamdaki yüksek dinamik aralıklı görüntülerin görünümüne yaklaşmak amacıyla bir renk kümesini diğerine eşlemek için görüntü işlemede kullanılan bir tekniktir.

Test edilen API'ler:

Geçiş: R ve B değerleri dönüşüme göre artar.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*X ekseni yakalama istekleridir: 0 = birlik, 1=kırmızı güçlendirme, 2= mavi güçlendirme

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 (R artırma)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (B güçlendirme)

test_param_exposure_time

android.sensor.exposureTime parametresinin uygulandığını test eder.

Test edilen API'ler:

Geçiş: Her atış bir önceki atıştan daha parlaktır.

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

android.flash.mode parametresinin uygulandığını test eder. Pozlamayı manuel olarak karanlık tarafta olacak şekilde ayarlar, böylece flaşın patlayıp patlamadığı açıkça görülür ve doğrusal bir ton haritası kullanılır. Flaşın patlayıp patlamadığını doğrulamak için oluşturulan büyük bir degradenin olup olmadığını görmek için döşeme görüntüsünün merkezini kontrol eder.

Test edilen API'ler:

Geçiş: Döşeme görüntüsünün ortasında büyük bir degrade var, bu da flaşın patladığı anlamına geliyor.

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_noise_reduction

android.noiseReduction.mode parametresinin ayarlandığında doğru şekilde uygulandığını test eder. Fotoğraf makinesi loş ışıktayken görüntüler çeker. Yakalanan görüntünün gürültülü olmasını sağlamak için yüksek analog kazanç kullanır. NR kapalı, "hızlı" ve "yüksek kalite" olmak üzere üç görüntü çeker. Ayrıca düşük kazançlı ve NR kapalı bir görüntü yakalar ve bunun varyansını taban çizgisi olarak kullanır. SNR (Sinyal-Gürültü Oranı) ne kadar yüksek olursa görüntü kalitesi o kadar iyi olur.

Test edilen API'ler:

Başarılı: SNR, farklı gürültü azaltma modlarına göre değişir ve aşağıdaki grafikle benzer şekilde davranır.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: KAPALI, 1: HIZLI, 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_sensitivity

android.sensor.sensitivity parametresinin uygulandığını test eder. Test, her çekimde sabit pozlamayla hassasiyeti 5 adımda artırır.

Test edilen API'ler:

Geçiş: RGB, merkezin %10'unun artan hassasiyetle daha parlak hale geldiği anlamına gelir.

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_sensitivity_plot

test_param_sensitivity_plot.png

test_param_shading_mode

android.shading.mode parametresinin uygulandığını test eder.

Test edilen API'ler:

Geçiş: Gölgeleme modları değiştirilir ve mercek gölgelendirme haritaları beklendiği gibi değiştirilir.

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

Android.tonemap.mode parametresinin uygulandığını test eder. Her R, G, B kanalına farklı ton haritası eğrileri uygular ve çıktı görüntülerinin beklendiği gibi değiştirilip değiştirilmediğini kontrol eder. Bu test test1 ve test2 olmak üzere iki testten oluşur.

Test edilen API'ler:

Geçmek:

  • test1: Her iki görüntünün de doğrusal bir ton haritası var, ancak n=1'in eğimi daha dik. G (yeşil) kanalı n=1 görüntüsü için daha parlaktır.
  • test2: Aynı tonemap, ancak farklı uzunluk. Görseller aynı.
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

RAW hassasiyet artışını kontrol eder. Farklı hassasiyete sahip bir dizi RAW ve YUV görüntüsü yakalar, RAW hassasiyet artırma kombinasyonunu gönderir ve çıkış pikseli ortalamasının istek ayarlarıyla eşleşip eşleşmediğini kontrol eder.

Test edilen API'ler:

Geçiş: Güçlendirme arttıkça RAW görüntüler koyulaşırken YUV görüntülerin parlaklığı sabit kalır

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

Artan kazanımlarla bir dizi ham görüntü yakalar ve gürültüyü ölçer. Bir seri çekimde yalnızca ham olarak yakalar.

Test edilen API'ler:

Geçiş: Kazanç arttıkça her atış bir önceki atıştan daha gürültülü olur.

Merkez istatistik ızgara hücresinin varyansını kullanır.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Artan pozlama süresiyle bir dizi ham görüntü yakalar ve piksel değerlerini ölçer.

Test edilen API'ler:

Başarılı: ISO'yu (kazanç) artırmak, pikselleri ışığa karşı daha duyarlı hale getirir, böylece çizim sola doğru hareket eder.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ 1 ms'dir, 10¹ 10 ms'dir, 10⁻¹ 0,1 ms'dir)

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_sensitivity

Artan hassasiyetle bir dizi ham görüntü yakalar ve görüntünün ortasındaki %10'luk gürültüyü (varyansı) ölçer. Her atışın bir öncekinden daha gürültülü olduğunu test eder.

Test edilen API'ler:

Geçiş: Her atışta farklılık artar.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

İsteklerin yeniden işlenmesi için android.noiseReduction.mode uygulandığını test eder. Kamera loş ışıktayken yeniden işlenmiş görüntüleri yakalar. Yakalanan görüntünün gürültülü olmasını sağlamak için yüksek analog kazanç kullanır. NR kapalı, "hızlı" ve "yüksek kalite" için yeniden işlenmiş üç görüntü yakalar. Düşük kazançlı ve NR kapalıyken yeniden işlenmiş bir görüntü yakalar ve bunun varyansını taban çizgisi olarak kullanır.

Test edilen API'ler:

Geçiş: HIZLI >= KAPALI, HQ >= HIZLI, HQ >> KAPALI

Tipik SNR ve NR_MODE grafiği

Tipik SNR ve NR_MODE grafiği

test_tonemap_sequence

Farklı ton haritası eğrilerine sahip bir çekim dizisini test eder. Doğrusal bir ton haritasıyla 3 manuel çekim yapar. Varsayılan ton haritasıyla 3 manuel çekim yapar. Ardışık her çerçeve çifti arasındaki deltayı hesaplar.

Test edilen API'ler:

Geçiş: 3 özdeş çerçeve ve ardından 3 özdeş çerçeveden oluşan farklı bir set vardır.

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

Görüntü yakalama için bildirilen tüm boyut ve formatların çalıştığını test eder. YUV ve JPEG'in image_processing_utils modülü tarafından dönüştürüldüğünde aynı görünmesi için doğrusal bir ton haritasına sahip manuel bir istek kullanır. Resimler varsayılan olarak kaydedilmez ancak debug_mode etkinleştirilerek kaydedilebilir.

Test edilen API'ler:

Geçiş: Tüm görüntü merkezleri, en yüksek çözünürlüklü YUV görüntüsünün %3'üne sahip RGB dönüştürülmüş görüntülerde maksimum RMS (bir sinyalin ortalama kare değeri) farkına sahiptir.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Görüntü yakalama için bildirilen boyutların ve biçimlerin çalışıp çalışmadığını test eder.

Test edilen API'ler:

Başarılı: Test tamamlanır ve istenen görseller döndürülür.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Tek bir kareyi hem YUV hem de JPEG çıktısı olarak yakalamayı test eder. YUV ve JPEG'in image_processing_utils modülü tarafından dönüştürüldüğünde aynı görünmesi için doğrusal bir ton haritasına sahip manuel bir istek kullanır.

Test edilen API'ler:

Başarılı: YUV ve JPEG görüntüleri benzerdir ve %1'den az RMS (sinyalin ortalama karekök değeri) farkına sahiptir.

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

Destekleniyorsa hem RAW/RAW10/RAW12 hem de YUV çıkışı olarak tek bir kareyi yakalamayı testler. Doğrusal ton haritasına sahip manuel bir istek kullandığından ham ve YUV'nin aynı olması beklenir. RGB'ye dönüştürülmüş görüntülerin merkezdeki %10 RGB değerlerini karşılaştırır. android.shading.mode dosyasını günlüğe kaydeder.

Test edilen API'ler:

Başarılı: YUV ve ham görüntüler benzerdir ve %3,5'ten daha az RMS (bir sinyalin ortalama karekök değeri) farkına sahiptir.

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

sahne2_a

scene2_a'nın gri arka planı ve nötr giysisi olan üç yüzü var. Yüzler çok çeşitli cilt tonlarına sahip olacak şekilde seçilmiştir. Yüz algılamanın en iyi şekilde çalışması için grafiğin doğru yönelime sahip olması gerekir.

sahne2_a

sahne2_a

test_auto_flash

Karanlık bir sahnede otomatik flaşın tetiklendiğini test eder. Döşeme görüntüsünün merkezinin büyük bir degradeye sahip olup olmadığını kontrol ederek otomatik flaşın patladığını doğrular. Otomatik flaşın tetiklenmesi için tabletin ve test düzeneğindeki ışıkların kapatılması gerekir. Test ile tablet kapatılır ve Arduino kontrolcüsü ile ışıklar otomatik olarak kapatılabilir. Testin doğru çalışması için sahnenin tamamen karanlık olması gerekir. Bu nedenle, arka tablet açıklığı sahne tableti tarafından tamamen kapatılmalı ve ön açıklık bir açıklık ve DUT telefonuyla kapatılarak dağınık ışığın donanıma girmesini engellenmelidir.

Test edilen API'ler:

Geçiş: Döşeme görüntüsünün merkezinde, otomatik flaşın patladığı anlamına gelen büyük bir gradyan bulunur.

test_otomatik çerçeveleme

Kamera cihazının otomatik çerçeveleme davranışını test eder. Sahnedeki yüzlerin hiçbiri görünmeyecek şekilde büyük bir yakınlaştırma gerçekleştirir, CaptureRequest AUTOFRAMING True olarak ayarlayarak otomatik çerçeveleme modunu etkinleştirir ve durum yakınsadığında (yani, orijinal sahnedeki tüm yüzlerin algılanıp algılanamayacağını doğrular) CaptureResult AUTOFRAMING_STATE AUTOFRAMING_STATE_CONVERGED olarak ayarlanmıştır).

Test edilen API'ler:

Başarılı: Üç yüzün tümü algılanır.

test_display_p3

Testler ColorSpaceProfiles API'yi kullanarak P3 yakalamayı JPEG formatında görüntüler. Yakalanan JPEG'in başlığında uygun bir ICC profiline sahip olduğunu ve görüntünün sRGB gamının dışında renkler içerdiğini test eder.

Test edilen API'ler:

Başarılı: JPEG, Display P3 ICC profilini ve sRGB gamının dışındaki renkleri içerir.

test_efektleri

Desteklenen kamera efektleri için çerçeveyi yakalar ve bunların doğru şekilde oluşturulup oluşturulmadığını kontrol eder. Test yalnızca efektleri OFF ve MONO olarak kontrol eder ancak desteklenen tüm efektler için görüntüleri kaydeder.

Test edilen API'ler:

Geçiş: Efektler OFF iken sahne görüntüsünü ve efektleri MONO olarak ayarlanmış bir monokrom görüntü yakalar.

test_fects_MONO

test_fects_MONO.jpg

test_format_combos

Çıkış formatlarının farklı kombinasyonlarını test eder.

Test edilen API'ler:

Geçiş: Tüm kombinasyonlar başarıyla yakalanır.

test_jpeg_quality

Kameranın JPEG sıkıştırma kalitesini test eder. JPEG niteliklerini android.jpeg.quality aracılığıyla adım adım gerçekleştirin ve Niceleme Tablolarının doğru şekilde değişmesini sağlayın.

Test edilen API'ler:

Geçiş: Niceleme matrisi kalite artışıyla birlikte azalır. (Matris bölme faktörünü temsil eder.)

test_jpeg_quality

Pixel 4 arka kamera luma/chroma DQT matris ortalamaları ve JPEG kalitesi

test_jpeg_quality başarısız oldu

Başarısız test örneği

Çok düşük kaliteli görüntüler için (jpeg kalitesi < 50), nicemleme matrisinde sıkıştırmada bir artış olmadığını unutmayın.

test_num_faces

Yüz algılamayı test eder.

Test edilen API'ler:

Geçiş: Üç yüzü bulur.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_preview_min_frame_rate

Karanlık bir sahnede önizleme kare hızının doğru şekilde azaldığını test eder. Bu testin doğru çalışması için test düzeneğindeki ışıkların kontrolör tarafından veya test operatörü tarafından manuel olarak kapatılması gerekir.

Test edilen API'ler:

Başarılı: Önizleme kare hızı, istenen kare hızı aralığının minimum seviyesindedir ve kareler arasındaki fark, testte belirlenen mutlak toleranstan daha azdır.

test_reprocess_uv_swap

YUV yeniden işlemesinin U ve V düzlemlerini değiştirmediğini test eder. Bu, yeniden işlenmiş görüntü ile yeniden işlenmemiş yakalama arasındaki mutlak farkların (SAD) toplamı hesaplanarak tespit edilir. Yeniden işlenmiş yakalamanın çıkış U ve V düzlemlerinin değiştirilmesi SAD'nin artmasına neden oluyorsa çıktının doğru U ve V düzlemlerine sahip olduğu varsayılır.

Test edilen API'ler:

Geçiş: U ve V düzlemleri değiştirilmez.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

sahne2_b

test_num_faces

Yüz sahnelerinde artan cilt tonu çeşitliliğiyle yüz algılamayı test eder.

Test edilen API'ler:

Geçiş: 3 yüz bulur.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

1920x1440 çözünürlüğü aşmayan en büyük JPEG formatıyla aynı en boy oranına sahip, en büyük ortak YUV ve JPEG formatlarını kullanarak iki görüntü yakalar. jpeg.quality 100'e ayarlar ve çift yüzey isteğini yakalar. Her iki görüntüyü de RGB dizilerine dönüştürür ve iki görüntü arasındaki 3B ortalama karekök (RMS) farkını hesaplar.

Test edilen API'ler:

Başarılı: YUV ve JPEG görüntüleri benzerdir ve %1'den az RMS (sinyalin ortalama karekök değeri) farkına sahiptir.

sahne2_c

test_num_faces

Yüz sahnelerinde artan cilt tonu çeşitliliğiyle yüz algılamayı test eder.

Test edilen API'ler:

Geçiş: 3 yüz bulur.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

CDD'deki 2.2.7.2 Kamera bölümünde belirtildiği gibi S performans sınıfı için JPEG yakalama gecikmesini test eder.

Başarılı: Her iki birincil kamera için ITS aydınlatma koşulları (3000K) altında CTS kamera Performans Testi ile ölçülen 1080p çözünürlük için kamera2 JPEG yakalama gecikmesi < 1000 ms olmalıdır.

test_camera_launch_perf_class

CDD'deki 2.2.7.2 Kamera bölümünde belirtildiği gibi S performans sınıfı için kamera başlatma gecikmesini test eder.

Başarılı: Her iki birincil kamera için ITS aydınlatma koşulları (3000K) altında CTS kamera Performans Testi ile ölçülen kamera2 başlatma gecikmesi (kameradan ilk önizleme karesine kadar açık) < 600 ms OLMALIDIR.

sahne2_d

test_num_faces

Yüz sahnelerinde artan cilt tonu çeşitliliğiyle yüz algılamayı test eder.

Test edilen API'ler:

Geçiş: 3 yüz bulur.

sahne2_e

test_continuous_picture

Yakalama isteği ilk ayarı android.control.afMode = 4 (CONTINUOUS_PICTURE).

Test edilen API'ler:

Geçiş: 3A sistemi, 50 karelik bir yakalamanın sonunda yerleşir.

test_num_faces

Yüz sahnelerinde artan cilt tonu çeşitliliğiyle yüz algılamayı test eder.

Test edilen API'ler:

Geçiş: 3 yüz bulur.

sahne2_f

scene2_f'nin arka planı beyaz ve kıyafetleri beyaz olan üç yüzü vardır. Yüzler çok çeşitli cilt tonlarına ve arka planla yüksek kontrasta sahiptir.

scene2_f.png

sahne2_f

test_num_faces

Yüz sahnelerinde artan cilt tonu çeşitliliğiyle yüz algılamayı test eder.

Test edilen API'ler:

Geçiş: 3 yüz bulur.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

sahne3

Scene3 uses the ISO12233 chart, and most tests use a chart extractor method to find the chart in the scene. For this reason, most of the saved images don't have borders like the images for scenes 1, 2 or 4, but only the chart. The chart must be in the correct orientation for the chart finder to work optimally.

test_3a_consistency

Tests for 3A consistency.

APIs tested:

Pass: 3A converges for exposure, gain, awb (auto white balance), and fd (focus distance) three times within tolerance.

test_edge_enhancement

Tests that the android.edge.mode parameter is applied correctly. Captures non-reprocess images for each edge mode and returns sharpness of the output image and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, and output surface parameter.

Pass: HQ mode (2) sharper than OFF mode (0). FAST mode (1) sharper than OFF mode. HQ mode sharper or equal to FAST mode.

APIs tested:

Impacted camera parameters:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (fast mode)

test_edge_enhancement_edge=2

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

test_flip_mirror_scene_patch.jpg

test_landscape_to_portrait

Tests if the landscape to portrait override functions correctly for landscape-oriented sensors.

APIs tested:

Pass: The test is able to locate a chart with the expected rotation (0 degrees when the landscape to portrait override is disabled, 90 degrees when enabled).

test_landscape_to_portrait

test_landscape_to_portrait.png

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 stabilizes 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 few frames with the lens stationary at optimum focal distance, and the final few 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.

Fail mechanisms:

  • lens_moving: True ( android.hardware.camera2.CaptureResult#LENS_STATE = 1) in test_log.DEBUG is asserted only in frames where sharpness isn't changing.
  • Frames with lens_moving: False ( android.hardware.camera2.CaptureResult#LENS_STATE = 0) in test_log.DEBUG has a sharpness difference compared to the first few frames at optimum focal distance or the last few frames at minimum focus distance.

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

Tests if images are distorted or cropped unexpectedly in the image pipeline. Takes pictures of a circle over all formats. Verifies the circle isn't distorted, the circle doesn't move from the center of image, and the circle doesn't change size incorrectly with different aspect ratios or resolutions.

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.

Fail mechanisms:

  • The circle in the captured image is distorted by the processing pipeline.
  • Lower resolution image is double cropped in the image pipeline creating different FoV between high and low resolution images.
  • The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
  • The circle in the captured image has a reflection in the center and doesn't appear fully filled.

test_multi_camera_alignment

Tests the camera calibration parameters related to camera positioning for multi-camera systems. 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: Circle centers and sizes are as expected in projected images compared to captured images using camera calibration data and focal lengths.

Fail mechanisms:

  • LENS_INTRINSIC_CALIBRATION , LENS_POSE_TRANSLATION , or LENS_POSE_ROTATION are design values and not actual calibration data.
  • The camera system isn't appropriate for the test setup. For example, testing a wide and an ultra-wide camera system with the RFoV test rig. For more information, see Camera ITS-in-a-box FAQ1 .

test_preview_aspect_ratio_and_crop

Similar to the test_aspect_ratio_and_crop test for still captures, this test checks the supported preview formats to ensure the preview frames aren't stretched or cropped inappropriately. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center of the frame, and the circle size doesn't change for a constant format or with different resolutions (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_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:

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

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

Scene5 requires a uniformly lit gray scene. This is accomplished by a diffuser placed over the camera lens. We recommend the following diffuser: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

To prepare the scene, attach a diffuser in front of the camera and point the camera to a lighting source of around 2000 lux. Images captured for scene5 require diffuse lighting with no features evident. The following is a sample image:

scene5

scene5 capture

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_in_sensor_zoom

Tests the behavior of the camera in-sensor zoom feature, which produces cropped RAW images.

With the stream use case set to CROPPED_RAW , the test takes two captures over the zoom range, a full field of view (FoV) RAW image and a cropped RAW image. The test converts the images to RGB arrays, downscales the full-sized cropped RAW image to the size reported by SCALER_RAW_CROP_REGION , and calculates the 3D root mean square (RMS) difference between the two images.

APIs tested:

Pass: The 3D root mean square (RMS) difference between the downscaled cropped RAW image and the full FoV RAW image is less than 1%.

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.

test_low_latency_zoom

Tests the camera low latency zoom behavior. Takes captures over the zoom range with android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) , and checks if the circles in the output images match the zoom ratios in the capture metadata.

APIs tested:

Pass: Relative size of captured circle is accurate against the zoom ratio result metadata.

test_preview_video_zoom_match

Tests that while recording and zooming, video preview and video output display and record the same output. Calculates the size of the circle closest to the center at different zoom ratios and checks whether the size of the circle increases as the zoom ratio increases.

APIs tested:

Pass: Relative size of captured circle is accurate against requested zoom ratio in video and preview.

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png (before zoom)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (before zoom)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (after zoom)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (after zoom)

scene_extensions

The scene_extensions tests are for camera extensions and must use Camera ITS-in-a-Box , as they require precise control of the testing environment.

scene_hdr

The scene_hdr scene consists of a portrait on the left and a low-contrast QR code on the right.

scene_hdr

scene_hdr

test_hdr_extension

Tests the HDR extension . Takes captures with and without the extension enabled, and checks if the extension makes the QR code more detectable.

APIs tested:

Pass: The HDR extension reduces the number of contrast changes needed to detect the QR code or reduces the gradient across the QR code.

scene_night

The scene_night scene consists of a white circle with four smaller circles inside of it, all against a black background. The smaller circle in the top right corner is darker than the others to indicate orientation.

scene_night

scene_night

test_night_extension

Tests the Night extension . Takes captures with and without the extension enabled, and checks for the following:

  • The capture with the Night extension enabled takes longer.
  • The capture with the Night extension enabled is brighter or has scene artifacts with an improved appearance.

APIs tested:

Pass: Compared to a capture without the Night extension enabled, a capture with the Night extension enabled takes at least 0.5 seconds longer. The capture must be at least 10% brighter, or the gray dots in the scene must be 20 pixel values lower than the surrounding circle's 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 .

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.

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

Fail mechanisms:

  • Offset error: The camera-gyroscope offset isn't correctly calibrated to within +/-1 ms.
  • Frame drops: The pipeline isn't fast enough to capture 200 frames consecutively.
  • Socket errors: adb can't reliably connect to the DUT long enough to execute the test.
  • The chart isn't mounted flat. The plot test_sensor_fusion_plot_rotations has frames where the gyroscope and camera rotation vary considerably as the camera rotates through the parts of the chart that aren't flat.
  • The camera isn't mounted flat. The plot test_sensor_fusion_gyro_events shows movement in the X and Y planes. This failure is more common in front-facing cameras as the rear camera often has a raised bump to the rest of the phone body, creating a tilt when mounting the rear of the phone to the mounting plate.

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.

The following are sample videos with and without stabilization.

  • Sample video with stabilization

  • Sample video without stabilization

test_led_snapshot

Tests that the LED snapshots don't saturate or tint the image.

This test adds a lighting controller to the sensor fusion box to control the lights. With the lights set to OFF , the test takes a capture with the AUTO_FLASH mode set to ON . During this capture, the test runs a precapture sequence with the aePrecapture trigger set to START , and sets the capture intent to Preview to take the capture with flash.

Because the capture has a distinctive hotspot due to flash, the test computes the flash image mean of the entire capture and verifies whether the value is within the (68, 102) range. To check if the image is reasonably white-balanced, the test calculates the R/G and B/G ratios and verifies whether the ratios are within 0.95 and 1.05.

APIs tested:

Pass: The R/G and B/G ratios are within 0.95 and 1.05. The flash image mean is within the (68, 102) range.