Halaman ini menyediakan daftar lengkap pengujian di bawah Camera Image Test Suite (ITS), yang merupakan bagian dari Android Compatibility Test Suite (CTS) Verifier. Tes ITS adalah tes fungsional, artinya tidak mengukur kualitas gambar, tetapi semua fungsi kamera yang diiklankan berfungsi seperti yang diharapkan. Dokumen ini memungkinkan pengembang dan penguji memahami apa yang dilakukan masing-masing pengujian dan cara men-debug kegagalan pengujian.
Tes dikelompokkan berdasarkan adegan sebagai berikut:
- scene0 : Tangkap metadata, jitter, giroskop, getaran
- scene1 : Eksposur, sensitivitas, kompensasi EV, YUV vs JPEG/RAW
- scene2 : Deteksi wajah, tes yang membutuhkan scene berwarna atau kegelapan total
- scene3 : Peningkatan tepi, gerakan lensa
- scene4 : Rasio aspek, pemangkasan, bidang pandang
- scene5 : Bayangan lensa
- adegan6 : Zoom
- sensor_fusion : Offset pengaturan waktu kamera/giroskop
Lihat bagian individu untuk deskripsi setiap adegan.
adegan0
Tes Scene0 tidak memerlukan informasi adegan tertentu. Namun, ponsel harus diam untuk pengujian giroskop dan getaran.
test_burst_capture
Memverifikasi bahwa seluruh saluran pengambilan dapat mengikuti kecepatan pengambilan ukuran penuh dan waktu CPU.
API diuji:
Pass: Menangkap rentetan gambar ukuran penuh dan kamera cukup cepat untuk menghindari waktu habis.
test_capture_result_dump
Tes bahwa hasil tangkapan dikembalikan dari tangkapan manual dan kemudian membuangnya.
API diuji:
Lulus: Menyelesaikan tangkapan dan membuang hasil tangkapan.
test_gyro_bias
Menguji apakah gyro memiliki output yang stabil saat perangkat tidak bergerak. Data diplot sebagai rata-rata 20 titik data.
API diuji:
Pass: Delta pembacaan gyro kurang dari 0,01 dari waktu ke waktu.
test_gyro_bias_plot.png
test_jitter
Mengukur jitter dalam stempel waktu kamera.
API diuji:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Lulus: Setidaknya ada delta 30 ms di antara bingkai.
test_jitter_plot.png (Perhatikan rentang sumbu y kecil. Jitter sebenarnya kecil di plot ini.)
test_metadata
Menguji validitas entri metadata. Lihat hasil tangkapan dan karakteristik objek kamera. Tes ini menggunakan eksposur auto_capture_request
dan mendapatkan nilai karena konten gambar tidak penting.
API diuji:
-
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
Lulus: Level perangkat keras, rollingShutterSkew
, tag frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, hyperfocal distance ada dan memiliki nilai yang valid.
test_param_sensitivity_burst
Menguji apakah parameter android.sensor.sensitivity
diterapkan dengan benar dalam burst. Hanya memeriksa metadata keluaran.
API diuji:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Data keluaran memiliki toleransi kesalahan kurang dari 0,2%.
test_read_write
Menguji apakah perangkat menulis eksposur yang benar dan mendapatkan nilai dengan membaca kembali metadata tangkapan.
API diuji:
-
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
Pass: Nilai baca dan tulis cocok di semua bidikan.
test_sensor_events
Menguji kueri perangkat dan mencetak peristiwa sensor untuk perangkat yang mengiklankan dukungan fusi sensor. Sensor yang diharapkan adalah akselerometer, giroskop, dan magnetometer. Tes ini hanya berfungsi jika layar menyala, artinya perangkat tidak dalam mode siaga.
API diuji:
Lulus: Acara untuk setiap sensor diterima.
test_solid_color_test_pattern
Tes bahwa pola tes warna solid dihasilkan dengan benar untuk mematikan kamera. Jika pembisuan kamera didukung, pola pengujian warna solid harus didukung. Jika pembisuan kamera tidak didukung, pola uji warna solid hanya diuji jika kemampuannya diiklankan.
Jika gambar RAW didukung, penentuan warna juga akan diuji. Warna yang diuji adalah hitam, putih, merah, biru, dan hijau. Untuk kamera yang tidak mendukung gambar RAW, hanya warna hitam yang diuji.
API diuji:
-
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
Lulus: Pola uji padat yang didukung adalah warna yang benar dan variasi gambar yang rendah.
test_test_pattern
Menguji parameter android.sensor.testPatternMode
untuk menangkap frame untuk setiap pola pengujian yang valid dan memeriksa apakah frame dibuat dengan benar untuk warna solid dan bilah warna. Tes ini mencakup langkah-langkah berikut:
- Menangkap gambar untuk semua pola pengujian yang didukung.
- Melakukan pemeriksaan kebenaran sederhana untuk pola uji warna padat dan bilah warna.
API diuji:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Lulus: Pola pengujian yang didukung dihasilkan dengan benar.
test_test_patterns_2.jpg
test_tonemap_curve
Tes konversi pola tes dari RAW ke YUV dengan linear tonemap. Pengujian ini memerlukan android.sensor.testPatternMode = 2
(COLOR_BARS) untuk menghasilkan pola gambar yang sempurna untuk konversi peta warna. Memastikan pipeline memiliki output warna yang tepat dengan linear tonemap dan input gambar yang ideal (bergantung pada test_test_patterns
).
API diuji:
-
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
Pass: YUV dan RAW terlihat mirip satu sama lain.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Menguji apakah peristiwa sensor gambar dan gerak berada dalam domain waktu yang sama.
API diuji:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Pass: Stempel waktu gerakan berada di antara dua stempel waktu gambar.
test_vibration_restriction
Menguji apakah getaran perangkat berfungsi seperti yang diharapkan.
API diuji:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Lulus: Perangkat tidak bergetar saat dibisukan oleh API pembatasan audio kamera.
adegan1
scene1 adalah bagan abu-abu. Bagan abu-abu harus menutupi bagian tengah 30% bidang pandang kamera. Bagan abu-abu diharapkan menantang 3A (paparan otomatis, keseimbangan putih otomatis, fokus otomatis) secara moderat karena wilayah tengah tidak memiliki fitur. Namun, permintaan pengambilan menentukan seluruh adegan yang menyertakan fitur yang memadai untuk 3A agar menyatu.
Kamera RFoV dapat diuji di WFoV atau rig uji RFoV. Jika kamera RFoV diuji di rig uji WFoV, bagan diskalakan dengan ⅔ untuk memastikan beberapa batasan bagi bagan abu-abu di FoV untuk membantu konvergensi 3A.
scene1: Bagan ukuran penuh (kiri). ⅔ bagan berskala (kanan).
tes_3a
Menguji konvergensi 3A dengan target yang cukup menantang.
API diuji:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Lulus: 3A konvergen dan nilai 3A yang dikembalikan valid.
test_ae_af
Menguji algoritme eksposur otomatis (AE) dan fokus otomatis (AF) 3A satu per satu.
API diuji:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Lulus: 3A konvergen dan nilai 3A yang dikembalikan adalah legal.
test_ae_precapture_trigger
Menguji mesin status AE saat menggunakan pemicu pratangkap. Menangkap lima permintaan manual dengan AE dinonaktifkan. Permintaan terakhir memiliki pemicu pratangkap AE, yang harus diabaikan karena AE dinonaktifkan.
API diuji:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Lulus: AE konvergen.
test_auto_vs_manual
Pengujian yang menangkap bidikan otomatis dan manual terlihat sama.
API diuji:
-
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
Lulus: Penguatan dan transformasi white balance manual yang dilaporkan di setiap hasil tangkapan cocok dengan estimate
white balance otomatis dari algoritme 3A kamera.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
tes_hitam_putih
Menguji apakah perangkat menghasilkan gambar hitam putih penuh. Mengambil dua jepretan, yang pertama dengan gain sangat rendah dan eksposur pendek, yang menghasilkan foto hitam, dan yang kedua dengan gain sangat tinggi dan eksposur panjang, yang menghasilkan foto putih.
API diuji:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Menghasilkan gambar hitam putih. Saluran jenuh gambar putih memiliki nilai RGB [255, 255, 255] dengan margin kesalahan perbedaan kurang dari 1%.
![]() | ![]() | |
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Mengambil 5 semburan dari 50 gambar dengan pengaturan pengambilan manual dan memeriksa apakah semuanya identik. Tes ini dapat digunakan untuk mengidentifikasi apakah ada frame sporadis yang diproses secara berbeda atau memiliki artefak.
API diuji:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Lulus: Gambar identik secara visual dan dalam nilai RGB.
Gagal: Menampilkan lonjakan atau penurunan grafik rata-rata RGB di awal setiap rentetan
- Toleransi adalah 3% untuk
first_API_level
< 30 - Toleransi adalah 2% untuk
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Menguji apakah data yang valid kembali ke objek CaptureResult
. Melakukan pengambilan otomatis, manual, dan otomatis.
API diuji:
-
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
Lulus: Metadata valid untuk semua tangkapan dan pengaturan manual tidak bocor ke tangkapan otomatis kedua. Merencanakan koreksi naungan lensa untuk tangkapan.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Menguji bahwa aliran RAW tidak dapat dipangkas.
API diuji:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: Gambar YUV dipangkas di tengah tetapi bukan gambar RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Menguji apakah daerah pemotongan berfungsi. Mengambil gambar penuh dan membuat tambalan dari 5 wilayah berbeda (sudut dan tengah.) Mengambil gambar dengan set pemotongan untuk 5 wilayah. Membandingkan patch dan nilai crop image.
API diuji:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: Gambar wilayah yang dipangkas cocok dengan tambalan yang sesuai dengan gambar yang dipangkas.
test_dng_noise_model
Memverifikasi bahwa parameter model mentah DNG sudah benar. Plot tersebut menggambarkan varians terukur dari petak tengah kartu abu-abu dalam bidikan mentah yang ditangkap pada rentang sensitivitas, dan membandingkan nilai ini dengan varians yang diharapkan pada setiap sensitivitas oleh model derau DNG di kamera HAL (berdasarkan Parameter O,S dikembalikan dalam objek hasil tangkapan). Untuk detail lebih lanjut tentang model kebisingan DNG, unduh dokumen berikut tentang Model Kebisingan DNG .
API diuji:
-
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
Lulus: Parameter model mentah DNG sudah benar. Nilai RGB yang diharapkan cocok dengan nilai RGB sebenarnya yang diukur.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Menguji bahwa kompensasi exposure value (EV) diterapkan. Tes ini meningkatkan eksposur dalam delapan langkah, dan memeriksa kecerahan terukur versus kecerahan yang diharapkan. Nilai yang diharapkan dihitung dari kecerahan gambar tanpa kompensasi EV yang diterapkan dan nilai yang diharapkan akan jenuh jika nilai yang dihitung melebihi rentang nilai gambar sebenarnya. Pengujian gagal jika nilai yang diharapkan dan nilai terukur tidak cocok atau gambar terlalu terang dalam lima langkah.
API diuji:
-
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
Pass: Gambar menunjukkan eksposur yang meningkat tanpa overexposing dalam lima langkah.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Menguji apakah kompensasi EV diterapkan menggunakan rentang yang dibuat dengan CONTROL_AE_COMPENSATION_STEP
. Delapan bingkai diambil pada setiap nilai kompensasi.
API diuji:
-
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
Pass: Menangkap peningkatan luma dengan peningkatan pengaturan kompensasi EV, dan delapan frame yang diambil untuk setiap pengaturan kompensasi EV memiliki nilai luma yang stabil.
test_ev_compensation_basic.png
test_exposure
Tes bahwa eksposur konstan dicapai sebagai ISO dan waktu eksposur bervariasi. Mengambil serangkaian bidikan dengan ISO dan waktu pencahayaan yang dipilih untuk menyeimbangkan satu sama lain. Hasil harus memiliki kecerahan yang sama, tetapi gambar akan menjadi lebih berisik. Memverifikasi nilai rata-rata piksel sampel dekat satu sama lain. Pastikan gambar tidak dijepit ke 0 atau 1 (yang akan membuatnya terlihat seperti garis datar). Pengujian juga dapat dijalankan dengan gambar RAW dengan menyetel flag debug
di file konfigurasi Anda.
API diuji:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Gambar memiliki kecerahan yang sama, tetapi menjadi lebih berisik dengan ISO yang lebih tinggi. Bidang RGB datar saat nilai paparan ISO* konstan di atas ruang penguatan yang diuji.
test_exposure_plot_means.png
![]() | ![]() | |
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Pengujian yang mengonversi gambar YUV dan gambar JPEG perangkat terlihat sama. Tes mengambil pusat 10% dari gambar dan menghitung nilai RGB, dan memverifikasi bahwa keduanya cocok.
API diuji:
Lulus: Perbedaan RGB rata-rata antara setiap gambar kurang dari 3%.
![]() | ![]() | |
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Menguji kait pengaturan (pencahayaan dan penguatan) pada bingkai kanan untuk kamera FULL
dan LEVEL_3
. Mengambil serangkaian bidikan menggunakan permintaan back-to-back, memvariasikan parameter permintaan pengambilan di antara bidikan. Periksa apakah gambar memiliki properti yang diharapkan.
API diuji:
Lulus: Gambar [2, 3, 6, 8, 10, 12, 13] telah meningkatkan ISO atau eksposur dan muncul dengan nilai RGB yang lebih tinggi pada test_latching_plot_means.png
.
![]() | ![]() | ![]() | |
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
![]() | |||
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
Menguji bahwa pemrosesan perangkat dapat dibalik ke piksel linier. Menangkap rangkaian bidikan dengan perangkat mengarah ke target yang seragam.
API diuji:
-
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
Lulus: Nilai R, G, B harus meningkat secara linier dengan peningkatan sensitivitas.
test_linearity_plot_means.png
test_locked_burst
Tes 3A lock dan YUV burst (menggunakan pengaturan otomatis). Tes ini dirancang untuk lulus bahkan pada perangkat terbatas yang tidak memiliki MANUAL_SENSOR
atau PER_FRAME_CONTROLS
. Pengujian memeriksa konsistensi gambar YUV sementara pemeriksaan frekuensi gambar dalam CTS.
API diuji:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass: Hasil tangkapan terlihat konsisten.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
Pengujian untuk melihat apakah multikamera pada perangkat memberikan nilai RGB serupa untuk tambalan abu-abu.
API diuji:
-
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
Lulus: Kamera yang berbeda menghasilkan nilai RGB yang serupa untuk tambalan abu-abu yang sama.
test_multi_camera+match_yuv_fl=4.38.jpg
test_param_color_correction
Menguji apakah parameter android.colorCorrection.*
diterapkan saat disetel. Mengambil bidikan dengan nilai transformasi dan perolehan yang berbeda, dan menguji apakah keduanya terlihat berbeda. Transformasi dan gain dipilih untuk membuat keluaran semakin merah atau biru. Menggunakan peta nada linier. Pemetaan nada adalah teknik yang digunakan dalam pemrosesan gambar untuk memetakan satu set warna ke yang lain untuk memperkirakan tampilan gambar rentang dinamis tinggi dalam media yang memiliki rentang dinamis lebih terbatas.
API diuji:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: Nilai R dan B meningkat sesuai dengan transformasi.
test_param_color_correction_plot_means.png
*Sumbu x adalah permintaan tangkap: 0 = unity, 1=red boost, 2= blue boost
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (peningkatan R)
test_param_color_correction_req=2.jpg (peningkatan B)
test_param_exposure_time
Menguji penerapan parameter android.sensor.exposureTime
.
API diuji:
Pass: Setiap bidikan lebih terang dari bidikan sebelumnya.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Menguji apakah parameter android.flash.mode
diterapkan. Secara manual menyetel eksposur ke sisi gelap, sehingga jelas apakah blitz menyala atau tidak, dan menggunakan peta nada linier. Periksa bagian tengah dengan gambar petak untuk melihat apakah ada gradien besar yang dibuat untuk memverifikasi apakah lampu kilat menyala.
API diuji:
Pass: Bagian tengah gambar petak memiliki gradien besar yang berarti blitz ditembakkan.
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
Menguji apakah parameter android.noiseReduction.mode
diterapkan dengan benar saat disetel. Menangkap gambar dengan kamera redup. Menggunakan gain analog tinggi untuk memastikan gambar yang diambil tidak berisik. Menangkap tiga gambar, untuk NR off, "fast", dan "high quality". Juga menangkap gambar dengan gain rendah dan NR nonaktif, dan menggunakan varian ini sebagai garis dasar. Semakin tinggi SNR (Signal to Noise Ratio), semakin baik kualitas gambarnya.
API diuji:
Pass: SNR bervariasi dengan mode pengurangan noise yang berbeda dan berperilaku serupa dengan grafik di bawah ini.
test_param_noise_reduction_plot_SNRs.png
0: MATI, 1: CEPAT, 2: Markas Besar, 3: MENIT, 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
tes_param_sensitivitas
Menguji penerapan parameter android.sensor.sensitivity
. Tes meningkatkan sensitivitas dalam 5 langkah dengan eksposur tetap untuk setiap bidikan.
API diuji:
Lulus: RGB berarti pusat 10% menjadi lebih terang dengan sensitivitas yang meningkat.
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
Menguji apakah parameter android.shading.mode
diterapkan.
API diuji:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Lulus: Mode bayangan diubah dan peta bayangan lensa dimodifikasi seperti yang diharapkan.
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
Menguji apakah parameter android.tonemap.mode diterapkan. Menerapkan kurva peta warna yang berbeda untuk setiap saluran R, G, B, dan memeriksa apakah gambar keluaran dimodifikasi seperti yang diharapkan. Tes ini terdiri dari dua tes, tes1 dan tes2.
API diuji:
-
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
Lulus:
- test1: Kedua gambar memiliki peta warna linier, tetapi n=1 memiliki gradien yang lebih curam. Saluran G (hijau) lebih terang untuk gambar n=1.
- test2: Tonemap yang sama, tetapi panjangnya berbeda. Gambarnya sama.
![]() | ![]() | |
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Memeriksa peningkatan sensitivitas pasca RAW. Menangkap satu set gambar RAW dan YUV dengan sensitivitas berbeda, memposting kombinasi peningkatan sensitivitas RAW dan memeriksa apakah rata-rata piksel keluaran cocok dengan pengaturan permintaan.
API diuji:
-
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
Lulus: Gambar RAW menjadi lebih gelap saat dorongan meningkat sementara kecerahan gambar YUV tetap konstan
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
Menangkap serangkaian gambar mentah dengan perolehan yang meningkat dan mengukur noise. Menangkap hanya mentah, dalam ledakan.
API diuji:
-
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
Pass: Setiap bidikan lebih berisik dari bidikan sebelumnya, karena perolehannya meningkat.
Menggunakan varian dari sel kisi statistik pusat.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Menangkap sekumpulan gambar mentah dengan bertambahnya waktu pencahayaan dan mengukur nilai piksel.
API diuji:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: Menaikkan ISO (gain) membuat piksel lebih sensitif terhadap cahaya, sehingga plot bergerak ke arah kiri.
test_raw_exposure_s=55.png
(10⁰ adalah 1 mdtk, 10¹ adalah 10 mdtk, 10⁻¹ adalah 0,1 mdtk)
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
Menangkap serangkaian gambar mentah dengan sensitivitas yang meningkat dan mengukur noise (varians) di tengah 10% gambar. Menguji bahwa setiap bidikan lebih berisik dari bidikan sebelumnya.
API diuji:
-
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
Pass: Varians meningkat dengan setiap tembakan.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Menguji apakah android.noiseReduction.mode
diterapkan untuk memproses ulang permintaan. Menangkap gambar yang diproses ulang dengan kamera yang remang-remang. Menggunakan penguatan analog tinggi untuk memastikan pengambilan gambar tidak bising. Menangkap tiga gambar yang diproses ulang, untuk NR nonaktif, "cepat", dan "kualitas tinggi". Menangkap gambar yang diproses ulang dengan penguatan rendah dan NR nonaktif, dan menggunakan varian ini sebagai garis dasar.
API diuji:
Lulus: CEPAT >= MATI, HQ >= CEPAT, HQ >> MATI
Plot SNR vs NR_MODE tipikal
test_tonemap_sequence
Menguji urutan bidikan dengan kurva peta nada yang berbeda. Menangkap 3 bidikan manual dengan peta nada linier. Menangkap 3 bidikan manual dengan peta nada default. Menghitung delta di antara setiap pasangan bingkai yang berurutan.
API diuji:
Pass: Ada 3 frame identik diikuti oleh set berbeda dari 3 frame identik.
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
Menguji bahwa semua ukuran dan format yang dilaporkan untuk pengambilan gambar berfungsi. Menggunakan permintaan manual dengan peta warna linier sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul image_processing_utils
. Gambar tidak disimpan secara default, tetapi dapat disimpan dengan mengaktifkan debug_mode
.
API diuji:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Lulus: Semua pusat gambar memiliki perbedaan maksimum RMS (nilai root-mean-square dari sinyal) dalam gambar yang dikonversi RGB dengan 3% dari gambar YUV resolusi tertinggi.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Menguji apakah ukuran dan format yang dilaporkan untuk pengambilan gambar berfungsi.
API diuji:
Lulus: Tes selesai dan mengembalikan gambar yang diminta.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Tes menangkap satu frame sebagai output YUV dan JPEG. Menggunakan permintaan manual dengan peta warna linier sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul image_processing_utils
.
API diuji:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan kurang dari 1% RMS (nilai root-mean-square dari sinyal).
![]() | ![]() | |
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Tes menangkap satu frame sebagai output RAW dan YUV. Menggunakan permintaan manual dengan peta warna linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode
.
API diuji:
-
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
Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan kurang dari 3,5% RMS (nilai root-mean-square dari sinyal).
![]() | ![]() | |
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_yuv_plus_raw10
Pengujian menangkap satu frame sebagai output RAW10 dan YUV. Menggunakan permintaan manual dengan peta warna linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode
.
API diuji:
-
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
Lulus: Gambar RAW10 dan YUV serupa dan memiliki perbedaan kurang dari 3,5% RMS (root-mean-square value of a signal).
![]() | ![]() | |
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
Pengujian menangkap satu frame sebagai output RAW12 dan YUV. Menggunakan permintaan manual dengan peta warna linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode
.
API diuji:
-
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
Lulus: Gambar RAW12 dan YUV serupa dan memiliki perbedaan kurang dari 3,5% RMS (root-mean-square value of a signal).
![]() | ![]() | |
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
adegan2_a
scene2_a memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah-wajah dipilih untuk memiliki berbagai macam warna kulit. Bagan harus memiliki orientasi yang benar agar deteksi wajah dapat bekerja secara optimal.
adegan2_a
test_auto_flash
Menguji apakah flash otomatis dipicu dalam suasana gelap. Memverifikasi apakah lampu kilat otomatis diaktifkan dengan memeriksa bahwa bagian tengah gambar petak memiliki gradien yang besar. Untuk memicu flash otomatis, tablet dan lampu di rig pengujian harus dimatikan. Tablet dimatikan dengan pengujian, dan lampu dapat dimatikan secara otomatis dengan pengontrol Arduino. Adegan harus benar-benar gelap agar tes bekerja dengan benar. Dengan demikian, bukaan tablet belakang harus sepenuhnya tertutup oleh scene tablet, dan bukaan depan harus ditutup oleh bukaan dan telepon DUT untuk memblokir cahaya yang menyimpang memasuki rig.
API diuji:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: Bagian tengah gambar petak memiliki gradien besar yang berarti flash otomatis menyala.
uji_efek
Menangkap bingkai untuk efek kamera yang didukung dan memeriksa apakah dibuat dengan benar. Pengujian ini hanya memeriksa efek OFF
dan MONO
, tetapi menyimpan gambar untuk semua efek yang didukung.
API diuji:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: Menangkap gambar pemandangan dengan efek OFF
dan gambar monokrom dengan efek diatur ke MONO
.
test_efek_MONO.jpg
test_format_combos
Menguji berbagai kombinasi format keluaran.
API diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass: Semua kombinasi berhasil ditangkap.
test_jpeg_quality
Menguji kualitas kompresi kamera JPEG. Langkah kualitas JPEG melalui android.jpeg.quality
dan pastikan Tabel Kuantisasi berubah dengan benar.
API diuji:
Lulus: Matriks kuantisasi menurun dengan peningkatan kualitas. (Matriks mewakili faktor pembagian.)
Rata-rata matriks DQT kamera belakang Pixel 4 luma/chroma vs kualitas JPEG
Contoh tes gagal
Perhatikan bahwa untuk gambar berkualitas sangat rendah (jpeg.quality <50), tidak ada peningkatan kompresi dalam matriks kuantisasi.
test_num_faces
Tes deteksi wajah.
API diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Menemukan tiga wajah.
test_num_faces_fd_mode_1.jpg
scene2_b
test_num_faces
Menguji deteksi wajah dengan keragaman rona kulit yang meningkat dalam adegan wajah.
API diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Menemukan 3 wajah.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Menangkap dua gambar menggunakan format YUV dan JPEG umum terbesar dengan rasio aspek yang sama dengan format JPEG terbesar yang tidak melebihi resolusi 1920x1440. Setel jpeg.quality
ke 100 dan tangkap permintaan permukaan ganda. Mengonversi kedua gambar menjadi larik RGB dan menghitung perbedaan root mean square (RMS) 3D antara kedua gambar.
API diuji:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan kurang dari 1% RMS (nilai root-mean-square dari sinyal).
scene2_c
test_num_faces
Menguji deteksi wajah dengan keragaman rona kulit yang meningkat dalam adegan wajah.
API diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Menemukan 3 wajah.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Menguji latensi penangkapan JPEG untuk kelas performa S seperti yang ditentukan di bagian 2.2.7.2 Kamera di CDD.
Lulus: HARUS memiliki latensi pengambilan JPEG kamera2 < 1000ms untuk resolusi 1080p yang diukur dengan Uji Kinerja kamera CTS dalam kondisi pencahayaan ITS (3000K) untuk kedua kamera utama.
test_camera_launch_perf_class
Menguji latensi peluncuran kamera untuk kelas kinerja S seperti yang ditentukan di bagian 2.2.7.2 Kamera di CDD.
Lulus: HARUS memiliki latensi pengaktifan kamera2 (buka kamera ke bingkai pratinjau pertama) < 600ms yang diukur dengan Uji Kinerja kamera CTS dalam kondisi pencahayaan ITS (3000K) untuk kedua kamera utama.
scene2_d
test_num_faces
Menguji deteksi wajah dengan keragaman rona kulit yang meningkat dalam adegan wajah.
API diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Menemukan 3 wajah.
scene2_e
test_continuous_picture
50 frame beresolusi VGA ditangkap dengan request capture pertama mengatur android.control.afMode = 4 (CONTINUOUS_PICTURE).
API diuji:
-
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
Lulus: Sistem 3A mengendap pada akhir pengambilan 50 bingkai.
test_num_faces
Menguji deteksi wajah dengan keragaman rona kulit yang meningkat dalam adegan wajah.
API diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Menemukan 3 wajah.
adegan3
Scene3 menggunakan bagan ISO12233, dan sebagian besar pengujian menggunakan metode ekstraktor bagan untuk menemukan bagan di tempat kejadian. Untuk alasan ini, sebagian besar gambar yang disimpan tidak memiliki batas seperti gambar untuk adegan 1, 2 atau 4, tetapi hanya grafiknya. Bagan harus dalam orientasi yang benar agar pencari bagan dapat bekerja secara optimal.
test_3a_konsistensi
Tes untuk konsistensi 3A.
API diuji:
-
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 konvergen untuk exposure, gain, awb (auto white balance), dan fd (jarak fokus) tiga kali dalam toleransi.
test_edge_enhancement
Menguji apakah parameter android.edge.mode
diterapkan dengan benar. Menangkap gambar non-proses ulang untuk setiap mode tepi dan mengembalikan ketajaman gambar keluaran dan metadata hasil tangkapan. Memproses permintaan pengambilan dengan mode tepi tertentu, sensitivitas, waktu pencahayaan, jarak fokus, dan parameter permukaan keluaran.
Pass: Mode HQ
(2) lebih tajam dari mode OFF
(0). Mode FAST
(1) lebih tajam dari mode OFF
. Mode HQ
lebih tajam atau sama dengan mode FAST
.
API diuji:
Parameter kamera yang terpengaruh:
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (mode cepat)
test_edge_enhancement_edge=2.jpg (mode kualitas tinggi)
test_flip_mirror
Menguji apakah gambar diorientasikan dengan benar sesuai CDD bagian 7.5.2 Kamera Depan [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: Focal lengths and circles sizes are consistent.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%. ie the FOV changes at most 20%
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization