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_jitter
Kamera zaman damgalarındaki titreşimi ölçer.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Geçiş: Çerçeveler arasında en az 30 ms'lik bir delta vardır.
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:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
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:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
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:
- Desteklenen tüm test modelleri için görüntüleri yakalar.
- Düz renk test deseni ve renk çubukları için basit bir doğruluk kontrolü gerçekleştirir.
Test edilen API'ler:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Başarılı: Desteklenen test modelleri doğru şekilde oluşturuldu.
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:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Geçiş: YUV ve RAW birbirine benzer görünüyor.
test_tonemap_curve_raw_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:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
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:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
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 .
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Geçiş: AE yakınsar.
test_auto_vs_manual
Otomatik ve manuel çekimleri yakalayan testler aynı görünüyor.
Test edilen API'ler:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
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.jpg
test_auto_vs_manual_wb.jpg
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:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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_black.jpg | test_black_white_white.jpg |
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:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
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.jpg
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
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.png
test_crop_region_raw
RAW akışlarının kırpılabilir olmadığını test eder.
Test edilen API'ler:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
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.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Başarılı: Görüntüler, beş adımda aşırı pozlama olmadan artan pozlamayı gösterir.
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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
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.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:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.png
![]() | ![]() | |
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.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.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
![]() | |||
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Geçiş: R, G, B değerleri artan hassasiyetle birlikte doğrusal olarak artmalıdır.
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Başarılı: Yakalamalar tutarlı görünüyor.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
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:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Geçiş: R ve B değerleri dönüşüme göre artar.
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.jpg
test_param_color_correctness_req=1.jpg (R artırma)
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.jpg
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.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
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.png
0: KAPALI, 1: HIZLI, 2: HQ, 3: MIN, 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_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.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
android.shading.mode
parametresinin uygulandığını test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
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.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
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:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
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.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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
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.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:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
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.png
(10⁰ 1 ms'dir, 10¹ 10 ms'dir, 10⁻¹ 0,1 ms'dir)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
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:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Geçiş: Her atışta farklılık artar.
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
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.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
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:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
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.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.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:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
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.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:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
-
android.hardware.graphics.ImageFormat#RAW12
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.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
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:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
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:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
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.jpg
test_format_combos
Çıkış formatlarının farklı kombinasyonlarını test eder.
Test edilen API'ler:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
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.)
Pixel 4 arka kamera luma/chroma DQT matris ortalamaları ve JPEG kalitesi
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:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Geçiş: Üç yüzü bulur.
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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
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:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Geçiş: U ve V düzlemleri değiştirilmez.
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:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Geçiş: 3 yüz bulur.
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:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
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:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Geçiş: 3 yüz bulur.
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:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
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:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
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.
sahne2_f
test_num_faces
Yüz sahnelerinde artan cilt tonu çeşitliliğiyle yüz algılamayı test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Geçiş: 3 yüz bulur.
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:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Pass: 3A 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.jpg
test_edge_enhancement_edge=1.jpg (fast mode)
test_edge_enhancement_edge=2.jpg (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
Tests if the landscape to portrait override functions correctly for landscape-oriented sensors.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
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.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:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
Fail mechanisms:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
is asserted only in frames where sharpness isn't changing. - Frames with
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) intest_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:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
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:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
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:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: 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
, orLENS_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:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: 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:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%.
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5
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 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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Pass: 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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Pass: 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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio in video and preview.
VGA_640x480_key_frame.png (before zoom)
preview_640x480_key_frame.png (before zoom)
VGA_640x480_key_frame.png (after zoom)
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
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:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
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
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:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
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 .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
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:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
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:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
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.