Bu sayfa, Android Uyumluluk Test Paketi (CTS) Doğrulayıcı'nın bir parçası olan Camera Image Test Suite (ITS) kapsamındaki testlerin kapsamlı bir listesini sunar. ITS testleri işlevsel testlerdir, yani görüntü kalitesini ölçmezler, ancak tanıtı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ında nasıl hata ayıklanacağını anlamalarına olanak tanır.
Testler sahneye göre aşağıdaki gibi gruplandırılmıştır:
- scene0 : Meta verileri, titreşimi, jiroskopu, titreşimi yakalayın
- sahne1 : Pozlama, hassasiyet, EV telafisi, YUV - JPEG/RAW
- sahne2 : Yüz algılama
- scene3 : Kenar iyileştirme, mercek hareketi
- scene4 : En boy oranı, kırpma, görüş alanı
- scene5 : Lens gölgeleme
- sahne6 : Yakınlaştırma
- sensor_fusion : Kamera/jiroskop zamanlama ofseti
Her sahnenin açıklaması için ayrı bölümlere bakın.
sahne0
Scene0 testleri, belirli bir sahne bilgisi gerektirmez. Ancak, jiroskop ve titreşim testi için telefonun sabit olması gerekir.
test_burst_capture
Tüm yakalama işlem hattının, tam boyutlu yakalama hızına ve CPU süresine ayak uydurabileceğini doğrular.
Test edilen API'ler:
Başarılı: Tam boyutlu görüntülerden oluşan bir seri 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 dökümü alır.
Test edilen API'ler:
Pass: Yakalamayı tamamlar ve yakalama sonuçlarını döker.
test_gyro_bias
Cihaz sabitken jiroskopun kararlı çıkışa sahip olup olmadığını test eder. Veriler, ortalama 20 veri noktası olarak çizilir.
Test edilen API'ler:
Başarılı: Cayro okumasının deltası zamanla 0,01'den azdır.
test_gyro_bias_plot.png
test_jitter
Kamera zaman damgalarındaki titremeyi ölçer.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Başarılı: Ç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 seğirme 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, görüntü içeriği önemli olmadığı için 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
Başarılı: Donanım düzeyi, rollingShutterSkew
, frameDuration
etiketleri, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, hyperfocal distance mevcut ve geçerli değerlere sahip.
test_param_sensitivity_burst
android.sensor.sensitivity
parametresinin burst'te doğru ş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ı: Çıktı verilerinin hata toleransı %0,2'den azdır.
test_read_write
Cihazın doğru pozu yazdığını test eder ve yakalama meta verilerini geri okuyarak değerler kazanır.
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
Geçiş: Okuma ve yazma değerleri tüm çekimlerde eşleşir.
test_sensor_events
Cihazın, sensör füzyon desteğini tanıtan 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çıksa, yani cihaz bekleme modunda değilse çalışır.
Test edilen API'ler:
Başarılı: Her sensör için olaylar alınır.
test_solid_color_test_pattern
Düz renk test modellerinin kameranın sessize alınması için uygun şekilde oluşturulduğunu test eder. Kamera sessize alma destekleniyorsa, düz renk test desenleri desteklenmelidir. Kamera sessize alma desteklenmiyorsa, düz renk testi desenleri yalnızca bu özelliğin bildirilmesi 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 sapma vardır.
test_test_pattern
Her geçerli test deseni için çerçeveleri yakalamak üzere android.sensor.testPatternMode
parametresini test eder ve çerçevelerin 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 desenleri için görüntüler yakalar.
- Düz renk testi 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
Geçer: Desteklenen test desenleri doğru şekilde oluşturulur.
test_test_patterns_2.jpg
test_tonemap_curve
Test deseninin RAW'dan YUV'ye dönüşümünü lineer tonemap ile test eder. Bu test, tonemap dönüştürme için mükemmel bir görüntü deseni oluşturmak üzere android.sensor.testPatternMode = 2
(COLOR_BARS) gerektirir. Lineer tonemap ve ideal görüntü girişi ile ardışık düzenin 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
Başarılı: YUV ve RAW birbirine benziyor.
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
Başarılı: Hareket zaman damgaları, iki resim 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'sı 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ölgenin hiçbir özelliği olmadığı için gri grafiğin 3A'yı (otomatik pozlama, otomatik beyaz dengesi, otomatik odaklama) orta düzeyde zorlaması bekleniyor. Ancak, yakalama isteği, 3A'nın birleşmesi için yeterli özellikleri içeren tüm sahneyi belirtir.
RFoV kameralar, WFoV veya RFoV test teçhizatında test edilebilir. Bir RFoV kamera WFoV test teçhizatında test edilirse, 3A'nın yakınsamasına yardımcı olmak için FoV'daki gri grafiğin bazı sınırlarını sağlamak üzere tablo ⅔ oranında ölçeklenir.
sahne1: Tam boyutlu tablo (solda). ⅔ ölçekli tablo (sağda).
test_3a
3A'nın yakınsamasını orta derecede zorlu bir hedefle 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 birleşir 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 birleşir 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 istek, AE devre dışı bırakıldığı için göz ardı edilmesi gereken bir AE ön yakalama tetikleyicisine sahiptir.
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çer: 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 bir yakalama sonucunda bildirilen manuel beyaz dengesi kazançları ve dönüşümü, kameranın 3A algoritmasından otomatik beyaz dengesi estimate
ile eşleşir.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_siyah_beyaz
Cihazın tamamen siyah beyaz görüntüler ürettiğini test eder. İlki son derece düşük kazanç ve kısa pozlama ile siyah bir fotoğrafla sonuçlanır ve ikincisi son derece yüksek kazanç ve uzun pozla beyaz bir 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. Doymuş beyaz görüntü 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 5 seri halinde 50 fotoğraf çeker ve hepsinin aynı olup olmadığını kontrol eder. Bu test, farklı şekilde işlenen ya da kusurları olan tek tük çerçeveler 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ğinde bir ani 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
Geçerli verilerin CaptureResult
nesnelerinde 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 ortalanır, ancak RAW görüntüler olmaz.
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
Kırpma bölgelerinin çalıştığını test eder. Tam bir görüntü çeker ve 5 farklı bölgeden (köşeler ve merkez) yamalar oluşturur. 5 bölge için kırpma ayarlı görüntüler çeker. Yama ve kırpılan görüntü 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ırpılan görüntüye karşılık gelen yamayla eşleşir.
test_dng_noise_model
DNG ham model parametrelerinin doğru olduğunu doğrular. Çizim, bir dizi hassasiyet üzerinden yakalanan ham çekimlerde gri kartın orta parçasının ölçülen varyansını tasvir eder ve bu değerleri, kamera HAL'sindeki DNG gürültü modeli tarafından her bir hassasiyette beklenen varyansla karşılaştırır. Yakalama sonuç 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ğru. Beklenen RGB değerleri, ölçülen gerçek RGB değerleri ile eşleşir.
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ığa karşı beklenen parlaklığı kontrol eder. 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 doyuma ulaşır. Beklenen değerler ve ölçülen değerler eşleşmezse veya görüntüler beş adımda 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ı: Artırılmış EV telafisi ayarıyla ışıktaki artışı yakalar ve her bir EV telafisi ayarı için yakalanan sekiz kare sabit ışık değerlerine sahiptir.
test_ev_compensation_basic.png
test_pozlama
ISO ve pozlama süresi değiştikçe sabit bir pozlamanın elde edildiğini test eder. Birbirini dengelemek için seçilen ISO ve pozlama süresine sahip bir dizi çekim yapar. Sonuçlar aynı parlaklığa sahip olmalıdır, ancak sekansın üzerinde 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, düz çizgiler gibi görünmelerini sağlar). Test, yapılandırma dosyanızda debug
bayrağı ayarlanarak 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ı üzerinde 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ür. Test, görüntünün ortadaki %10'luk bölümü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ğ kareye kilitlendiğini 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:
Geçti: Görüntüler [2, 3, 6, 8, 10, 12, 13] ISO veya pozlamayı artırdı ve test_latching_plot_means.png
daha yüksek RGB ortalamalarıyla görünüyor.
![]() | ![]() | ![]() | |
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 yöneltilmiş olarak bir dizi çekim yapar.
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çti: R, G, B değerleri artan hassasiyetle 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
sahip 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_multi_camera_match
Cihazlardaki çoklu kameraların gri bir yama için benzer RGB değerleri verip vermediğini test eder.
Test edilen API'ler:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#LENS_FOCAL_LENGTH
Başarılı: Farklı kameralar, aynı gri yama için benzer RGB değerleri üretir.
test_multi_camera+match_yuv_fl=4.38.jpg
test_param_color_correction
android.colorCorrection.*
parametrelerinin ayarlandığında uygulanıp uygulanmadığını test eder. Farklı dönüştürme ve kazanç değerleri ile çekimler yapar ve buna uygun olarak farklı göründüklerini test eder. Dönüştürme ve kazanımlar, çıktıyı giderek daha fazla kırmızı veya mavi yapmak için seçilir. Doğrusal bir ton haritası kullanır. Ton eşleme, daha sınırlı bir dinamik aralığa sahip bir ortamda yüksek dinamik aralıklı görüntülerin görünümüne yaklaşmak için 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
Başarılı: 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ı artırma, 2= mavi artırma
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R artışı)
test_param_color_correction_req=2.jpg (B takviyesi)
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 uygulanıp uygulanmadığını test eder. Pozlamayı manuel olarak karanlık tarafta olacak şekilde ayarlar, böylece flaşın patlayıp patlamadığı anlaşılır ve doğrusal bir ton haritası kullanır. Flaşın patlayıp patlamadığını doğrulamak için oluşturulmuş büyük bir degrade olup olmadığını görmek için döşeme görüntüsüyle merkezi kontrol eder.
Test edilen API'ler:
Başarılı: Döşeme görüntüsünün ortasında, flaşın patladığı anlamına gelen büyük bir eğim vardır.
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 uygulandığını test eder. Fotoğraf makinesi loş ışıktayken fotoğraf çeker. Yakalanan görüntünün gürültülü olmasını sağlamak için yüksek bir analog kazanç kullanır. NR kapalı, "hızlı" ve "yüksek kalite" için üç görüntü yakalar. 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 uygulanıp uygulanmadığını test eder. Test, her çekim için sabit pozlama ile hassasiyeti 5 adımda artırır.
Test edilen API'ler:
Geçer: RGB merkez anlamına gelir %10 artan hassasiyetle daha parlak hale 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 uygulanıp uygulanmadığı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
Başarılı: Gölgeleme modları değiştirilir ve mercek gölgeleme 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 uygulanıp uygulanmadığı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.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 daha dik bir eğime sahip. G (yeşil) kanalı, n=1 görüntü için daha parlaktır.
- test2: Aynı ton haritası, ancak farklı uzunluk. Görüntüler aynı.
![]() | ![]() | |
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
RAW sonrası hassasiyet artışını kontrol eder. Farklı hassasiyete sahip bir dizi RAW ve YUV görüntü yakalar, RAW hassasiyet artırma kombinasyonunu yayınlar ve çıkış piksel 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
Başarılı: YUV görüntülerinin parlaklığı sabit kalırken, güçlendirme arttıkça RAW görüntüler daha koyu hale gelir
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çlarla bir dizi ham görüntü yakalar ve gürültüyü ölçer. 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
Pas: Kazanç arttıkça her atış bir önceki atıştan daha gürültülüdür.
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 hassas 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 hassasiyetlere sahip bir dizi ham görüntü yakalar ve görüntünün merkezindeki %10'luk gürültüyü (varyans) ölçer. Her çekimin 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
Pas: Varyans her atışta 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ş ışıkta yeniden işlenmiş görüntüler yakalar. Yakalanan görüntünün gürültülü olmasını sağlamak için yüksek bir analog kazanç kullanır. NR kapalı, "hızlı" ve "yüksek kalite" için yeniden işlenmiş üç görüntü yakalar. Düşük kazanç ve NR kapalı ile 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 - NR_MODE grafiği
test_tonemap_sequence
Farklı ton haritası eğrileriyle bir dizi çekimi 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 boyutların ve biçimlerin ç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. Görüntüler 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
Başarılı: 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 karekök 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ıştığını test eder.
Test edilen API'ler:
Başarılı: Test tamamlanır ve istenen görüntüleri döndürür.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Tek bir kareyi hem YUV hem de JPEG çıktıları 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 daha az RMS (bir 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
Tek bir kareyi hem RAW hem de YUV çıktıları olarak yakalayan testler. Doğrusal ton haritasına sahip manuel bir istek kullanır, bu nedenle RAW ve YUV'nin aynı olması beklenir. RGB dönüştürülmüş görüntülerin merkez %10 RGB değerlerini karşılaştırır. android.shading.mode
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
Başarılı: YUV ve JPEG görüntüleri 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 |
test_yuv_plus_raw10
Tek bir kareyi hem RAW10 hem de YUV çıkışları olarak yakalayan testler. Doğrusal ton haritasına sahip manuel bir istek kullanır, bu nedenle RAW ve YUV'nin aynı olması beklenir. RGB dönüştürülmüş görüntülerin merkez %10 RGB değerlerini karşılaştırır. android.shading.mode
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
Başarılı: RAW10 ve YUV görüntüleri benzerdir ve %3,5'ten daha az RMS (bir sinyalin ortalama karekök değeri) farkına sahiptir.
![]() | ![]() | |
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
Tek bir kareyi hem RAW12 hem de YUV çıkışları olarak yakalayan testler. Doğrusal ton haritasına sahip manuel bir istek kullanır, bu nedenle RAW ve YUV'nin aynı olması beklenir. RGB dönüştürülmüş görüntülerin merkez %10 RGB değerlerini karşılaştırır. android.shading.mode
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#RAW12
Başarılı: RAW12 ve YUV görüntüleri benzerdir ve %3,5'ten daha az RMS (bir sinyalin ortalama karekök değeri) farkına sahiptir.
![]() | ![]() | |
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
sahne2_a
scene2_a'nın gri bir arka plana ve nötr bir giysiye sahip üç yüzü vardır. Yüzler, çok çeşitli cilt tonlarına sahip olacak şekilde seçilir.
sahne2_a
test_auto_flash
Otomatik flaşın karanlık bir sahnede tetiklendiğini test eder. Döşeme görüntüsünün merkezinin büyük bir eğime sahip olduğunu kontrol ederek otomatik flaşın patladığını doğrular. Otomatik flaşı tetiklemek için tablet ve test teçhizatındaki ışıklar kapatılmalıdır. Tablet test ile kapatılır ve Arduino kontrolcüsü ile ışıklar otomatik olarak kapatılabilir. Testin düzgün çalışması için sahne tamamen karanlık olmalıdır. Bu nedenle, arka tablet açıklığı, sahne tableti tarafından tamamen kapatılmalı ve kaçak ışığın donanıma girmesini engellemek için ön açıklık bir açıklık ve DUT telefon ile kapatılmalıdır.
Test edilen API'ler:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Başarılı: Döşeme görüntüsünün ortasında, otomatik flaşın patladığı anlamına gelen büyük bir eğim vardır.
test_efektleri
Desteklenen kamera efektleri için kare yakalar ve bunların doğru 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
Başarılı: Etkileri OFF
olan sahne görüntüsünü ve efektleri MONO
olarak ayarlanmış tek renkli bir görüntüyü yakalar.
test_efektleri_MONO.jpg
test_format_combos
Çıktı biçimlerinin 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()
Başarılı: 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 ve Niceleme Tablolarının doğru şekilde değişmesini sağlar.
Test edilen API'ler:
Başarılı: Niceleme matrisi, kalite artışıyla birlikte azalır. (Matris bölme faktörünü temsil eder.)
Pixel 4 arka kamera luma/chroma DQT matrix ortalamaları ve JPEG kalitesi
Başarısız test örneği
Çok düşük kaliteli görüntüler için (jpeg.quality < 50), niceleme matrisinde sıkıştırmada artış olmadığına dikkat edin.
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
Pas: Üç yüz bulur.
test_num_faces_fd_mode_1.jpg
sahne2_b
test_auto_per_frame_control
Otomatik yakalama istekleri için PER_FRAME_CONTROL
özelliklerini test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Başarılı: PER_FRAME_CONTROL
özelliklerinin tümü mevcut.
test_auto_per_frame_control_frame_1.jpg
test_auto_per_frame_control_frame_10.jpg
test_auto_per_frame_control_frame_29.jpg
test_auto_per_frame_control_plot.png
test_num_faces
Yüz sahnelerinde artan cilt tonu çeşitliliği ile yüz algılamayı test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pas: 3 yüz bulur.
test_num_faces_fd_mode_1.jpg
test_yuv_jpg_capture_sameness
1920x1440 çözünürlüğünü aşmayan en büyük JPEG formatıyla aynı en boy oranına sahip en yaygın YUV ve JPEG formatlarını kullanarak iki görüntü yakalar. jpeg.quality
100 olarak 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 kök ortalama kare (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 daha az RMS (bir sinyalin ortalama karekök değeri) farkına sahiptir.
sahne2_c
test_num_faces
Yüz sahnelerinde artan cilt tonu çeşitliliği ile yüz algılamayı test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pas: 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ında (3000K) CTS kamera Performans Testi ile ölçüldüğü üzere, 1080p çözünürlük için camera2 JPEG yakalama gecikmesinin < 1000ms olması GEREKİ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 PerformanceTest tarafından ölçüldüğü üzere camera2 başlatma gecikmesine (kamerayı ilk önizleme karesine açma) < 600ms sahip OLMALIDIR.
sahne2_d
test_num_faces
Yüz sahnelerinde artan cilt tonu çeşitliliği ile yüz algılamayı test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pas: 3 yüz bulur.
sahne2_e
test_continuous_picture
50 VGA çözünürlüklü çerçeve, 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
Başarılı: 3A sistemi, 50 karelik bir yakalamanın sonunda yerleşir.
test_num_faces
Yüz sahnelerinde artan cilt tonu çeşitliliği ile yüz algılamayı test eder.
Test edilen API'ler:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pas: 3 yüz bulur.
sahne3
Scene3, ISO12233 tablosunu kullanır ve çoğu test, sahnedeki grafiği bulmak için bir grafik çıkarıcı yöntemi kullanır. Bu nedenle, kaydedilen görüntülerin çoğunda sahne 1, 2 veya 4'teki görüntüler gibi kenarlıklar yoktur, sadece tablo vardır.
test_3a_tutarlılık
3A tutarlılığını test eder.
Test edilen API'ler:
-
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
Başarılı: 3A, tolerans dahilinde pozlama, kazanç, awb (otomatik beyaz dengesi) ve fd (odak mesafesi) için üç kez birleşir.
test_edge_enhancement
android.edge.mode
parametresinin doğru uygulandığını test eder. Her bir kenar modu için yeniden işlenmeyen görüntüleri yakalar ve çıktı görüntüsünün ve yakalama sonucu meta verilerinin keskinliğini döndürür. Belirli bir kenar modu, hassasiyet, pozlama süresi, odak mesafesi ve çıktı yüzeyi parametresi ile bir yakalama talebini işler.
Başarılı: HQ
modu (2), OFF
modundan (0) daha keskin. FAST
mod (1) OFF
moddan daha keskin. HQ
modu daha keskin veya FAST
moda eşittir.
Test edilen API'ler:
Etkilenen kamera parametreleri:
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (hızlı mod)
test_edge_enhancement_edge=2.jpg (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: Focal lengths and circles sizes are consistent.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%. ie the FOV changes at most 20%
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. 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.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization