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 tes tersebut 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 : Menangkap metadata, jitter, giroskop, getaran
- scene1 : Eksposur, sensitivitas, kompensasi EV, YUV vs JPEG/RAW
- scene2 : Deteksi wajah
- scene3 : Peningkatan tepi, pergerakan lensa
- scene4 : Rasio aspek, pemotongan, bidang pandang
- scene5 : Bayangan lensa
- adegan6 : Zoom
- sensor_fusion : Offset waktu kamera/giroskop
Lihat bagian individu untuk deskripsi setiap adegan.
adegan0
Tes Scene0 tidak memerlukan informasi adegan tertentu. Namun, telepon harus stasioner untuk pengujian giroskop dan getaran.
test_burst_capture
Memverifikasi bahwa seluruh jalur pengambilan dapat mengikuti kecepatan pengambilan ukuran penuh dan waktu CPU.
API yang diuji:
Lulus: Menangkap rentetan gambar ukuran penuh dan kamera cukup cepat untuk menghindari batas waktu.
test_capture_result_dump
Menguji bahwa hasil tangkapan dikembalikan dari tangkapan manual dan kemudian membuangnya.
API yang diuji:
Pass: Menyelesaikan pengambilan 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 yang diuji:
Lulus: Delta pembacaan gyro kurang dari 0,01 dari waktu ke waktu.
test_gyro_bias_plot.png
test_jitter
Mengukur jitter dalam cap waktu kamera.
API yang diuji:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Lulus: Setidaknya ada delta 30 mdtk di antara bingkai.
test_jitter_plot.png (Perhatikan rentang sumbu y yang kecil. Jitter sebenarnya kecil di plot ini.)
test_metadata
Menguji validitas entri metadata. Melihat hasil capture dan karakteristik kamera objek. Tes ini menggunakan eksposur auto_capture_request
dan mendapatkan nilai karena konten gambar tidak penting.
API yang 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: Tingkat perangkat keras, rollingShutterSkew
, tag frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, jarak hyperfocal hadir dan memiliki nilai yang valid.
test_param_sensitivity_burst
Menguji bahwa parameter android.sensor.sensitivity
diterapkan dengan benar dalam burst. Memeriksa metadata keluaran saja.
API yang 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%.
tes_baca_tulis
Menguji apakah perangkat menulis eksposur yang benar dan mendapatkan nilai dengan membaca kembali metadata pengambilan.
API yang 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
Lulus: Nilai baca dan tulis cocok di semua bidikan.
test_sensor_events
Menguji perangkat yang menanyakan dan mencetak peristiwa sensor untuk perangkat yang mengiklankan dukungan fusi sensor. Sensor yang diharapkan adalah accelerometer, gyroscope, dan magnetometer. Tes ini hanya berfungsi jika layar menyala, artinya perangkat tidak dalam mode siaga.
API yang diuji:
Lulus: Acara untuk setiap sensor diterima.
test_solid_color_test_pattern
Menguji bahwa pola uji warna solid dihasilkan dengan benar untuk mematikan kamera. Jika pembisuan kamera didukung, pola uji warna solid harus didukung. Jika pembisuan kamera tidak didukung, pola uji warna solid hanya diuji jika kemampuannya diiklankan.
Jika gambar RAW didukung, penetapan warna juga diuji. Warna yang diuji adalah hitam, putih, merah, biru, dan hijau. Untuk kamera yang tidak mendukung gambar RAW, hanya hitam yang diuji.
API yang 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 solid yang didukung adalah warna yang benar dan ada sedikit perbedaan pada gambar.
test_test_pattern
Menguji parameter android.sensor.testPatternMode
guna menangkap bingkai untuk setiap pola pengujian yang valid dan memeriksa apakah bingkai 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 solid dan bilah warna.
API yang 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
Menguji konversi pola uji dari RAW ke YUV dengan tonemap linier. Pengujian ini membutuhkan android.sensor.testPatternMode = 2
(COLOR_BARS) untuk menghasilkan pola gambar yang sempurna untuk konversi tonemap. Memastikan pipeline memiliki output warna yang tepat dengan tonemap linier dan input gambar yang ideal (bergantung pada test_test_patterns
).
API yang 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 gambar dan sensor gerak berada dalam domain waktu yang sama.
API yang diuji:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Lulus: Stempel waktu gerak berada di antara dua stempel waktu gambar.
test_vibration_restriction
Menguji apakah getaran perangkat berfungsi seperti yang diharapkan.
API yang 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 grafik abu-abu. Bagan abu-abu harus menutupi bagian tengah 30% bidang pandang kamera. Grafik abu-abu diperkirakan akan menantang 3A (pencahayaan otomatis, keseimbangan putih otomatis, fokus otomatis) karena wilayah tengah tidak memiliki fitur. Namun, permintaan pengambilan menentukan seluruh adegan yang mencakup fitur yang cukup untuk 3A untuk berkumpul.
Kamera RFoV dapat diuji di rig uji WFoV atau RFoV. Jika kamera RFoV diuji di rig uji WFoV, bagan diskalakan dengan untuk memastikan beberapa batas bagan abu-abu di FoV untuk membantu konvergensi 3A.
scene1: Bagan ukuran penuh (kiri). grafik berskala (kanan).
tes_3a
Menguji konvergensi 3A dengan target yang cukup menantang.
API yang 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 algoritma eksposur otomatis (AE) dan fokus otomatis (AF) 3A satu per satu.
API yang 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 legal.
test_ae_precapture_trigger
Menguji mesin status AE saat menggunakan pemicu precapture. Menangkap lima permintaan manual dengan AE dinonaktifkan. Permintaan terakhir memiliki pemicu precapture AE, yang harus diabaikan karena AE dinonaktifkan.
API yang 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 yang 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 pengambilan sesuai dengan estimate
white balance otomatis dari algoritma 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
Pengujian bahwa 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 lama, yang menghasilkan foto putih.
API yang diuji:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Menghasilkan gambar hitam putih.
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_kesamaan_manual
Mengambil 5 burst 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 yang 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 burst
- 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
tes_capture_result
Pengujian bahwa data yang valid kembali dalam objek CaptureResult
. Melakukan pengambilan otomatis, manual, dan otomatis.
API yang 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 pengambilan dan pengaturan manual tidak bocor ke pengambilan otomatis kedua. Memplot koreksi bayangan lensa untuk tangkapan.
test_capture_result_plot_lsc_auto_ch0.png
test_channel_saturation
Menguji bahwa saluran RGB jenuh secara merata untuk menghilangkan pewarnaan di wilayah gambar yang jenuh.
API yang 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
Lulus: Saluran jenuh memiliki nilai RGB [255, 255, 255] dengan margin kesalahan kurang dari 1% perbedaan.
test_channel_saturation.jpg
test_crop_region_raw
Menguji bahwa aliran RAW tidak dapat dipotong.
API yang 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
Pengujian bahwa wilayah tanaman bekerja. Mengambil gambar penuh dan membuat tambalan dari 5 wilayah berbeda (sudut dan tengah.) Mengambil gambar dengan set potong untuk 5 wilayah. Membandingkan nilai patch dan crop gambar.
API yang diuji:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: 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 menggambarkan varians terukur dari patch 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 noise 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 yang 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 aktual yang diukur.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Menguji bahwa kompensasi nilai eksposur (EV) diterapkan. Tes meningkatkan eksposur dalam delapan langkah, dan memeriksa kecerahan terukur versus kecerahan yang diharapkan. Nilai yang diharapkan dihitung dari kecerahan gambar 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 yang diuji:
Lulus: Gambar menunjukkan peningkatan eksposur tanpa overexposure dalam lima langkah.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Menguji bahwa kompensasi EV diterapkan menggunakan rentang yang dibuat dengan CONTROL_AE_COMPENSATION_STEP
. Delapan frame ditangkap pada setiap nilai kompensasi.
API yang 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.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Lulus: Menangkap peningkatan luma dengan peningkatan pengaturan kompensasi EV, dan delapan bingkai yang diambil untuk setiap pengaturan kompensasi EV memiliki nilai luma yang stabil.
test_ev_compensation_basic.png
uji_eksposur
Menguji bahwa eksposur konstan dicapai karena ISO dan waktu eksposur bervariasi. Mengambil serangkaian bidikan yang memiliki ISO dan waktu pencahayaan yang dipilih untuk menyeimbangkan satu sama lain. Hasil harus memiliki kecerahan yang sama, tetapi pada urutan gambar akan menjadi lebih berisik. Memverifikasi nilai rata-rata piksel sampel dekat satu sama lain. Memastikan bahwa gambar tidak dijepit ke 0 atau 1 (yang akan membuatnya terlihat seperti garis datar). Pengujian juga dapat dijalankan dengan gambar RAW dengan menyetel tanda debug
di file konfigurasi Anda.
API yang diuji:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Gambar memiliki kecerahan yang sama, tetapi menjadi lebih berisik dengan ISO yang lebih tinggi. Bidang RGB datar ketika nilai ISO*exposure 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 mereka cocok.
API yang 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 bahwa pengaturan (pencahayaan dan penguatan) terkunci pada bingkai kanan untuk kamera FULL
dan LEVEL_3
. Mengambil serangkaian pemotretan menggunakan permintaan back-to-back, memvariasikan parameter permintaan pengambilan di antara pemotretan. Memeriksa apakah gambar memiliki properti yang diharapkan.
API yang diuji:
Lulus: Gambar [2, 3, 6, 8, 10, 12, 13] telah meningkatkan ISO atau eksposur dan muncul dengan rata-rata 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
tes_linier
Menguji bahwa pemrosesan perangkat dapat dibalikkan ke piksel linier. Menangkap urutan bidikan dengan perangkat diarahkan ke target yang seragam.
API yang 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
Menguji kunci 3A dan ledakan YUV (menggunakan pengaturan otomatis). Tes ini dirancang untuk lulus bahkan pada perangkat terbatas yang tidak memiliki MANUAL_SENSOR
atau PER_FRAME_CONTROLS
. Tes memeriksa konsistensi gambar YUV saat pemeriksaan frame rate dalam CTS.
API yang diuji:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass: 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 multi kamera pada perangkat memberikan nilai RGB yang serupa untuk tambalan abu-abu.
API yang 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 bahwa parameter android.colorCorrection.*
diterapkan saat disetel. Mengambil bidikan dengan nilai transformasi dan perolehan yang berbeda, dan menguji bahwa keduanya terlihat berbeda. Transformasi dan gain dipilih untuk membuat output 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 penampilan gambar rentang dinamis tinggi dalam media yang memiliki rentang dinamis yang lebih terbatas.
API yang diuji:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Lulus: Nilai R dan B meningkat sesuai dengan transformasi.
test_param_color_correction_plot_means.png
*Sumbu x adalah permintaan pengambilan: 0 = kesatuan, 1=peningkatan merah, 2=peningkatan biru
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (peningkatan B)
test_param_exposure_time
Menguji bahwa parameter android.sensor.exposureTime
diterapkan.
API yang 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 bahwa parameter android.flash.mode
diterapkan. Secara manual mengatur eksposur ke sisi gelap, sehingga jelas apakah blitz menyala atau tidak, dan menggunakan tonemap linier. Periksa bagian tengah dengan gambar ubin untuk melihat apakah ada gradien besar yang dibuat untuk memverifikasi apakah lampu kilat menyala.
API yang diuji:
Lulus: Bagian tengah gambar ubin memiliki gradien besar yang berarti bahwa lampu kilat 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 bahwa parameter android.noiseReduction.mode
diterapkan dengan benar saat disetel. Mengambil gambar dengan kamera dengan cahaya redup. Menggunakan penguatan analog yang tinggi untuk memastikan gambar yang diambil tidak bising. Menangkap tiga gambar, untuk NR mati, "cepat", dan "kualitas tinggi". Juga menangkap gambar dengan gain rendah dan NR mati, dan menggunakan varians ini sebagai baseline. Semakin tinggi SNR (Signal to Noise Ratio), semakin baik kualitas gambarnya.
API yang diuji:
Lulus: SNR bervariasi dengan mode pengurangan kebisingan yang berbeda dan berperilaku sama seperti grafik di bawah ini.
test_param_noise_reduction_plot_SNRs.png
0: MATI, 1: CEPAT, 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
uji_param_sensitivitas
Menguji bahwa parameter android.sensor.sensitivity
diterapkan. Tes meningkatkan sensitivitas dalam 5 langkah dengan eksposur tetap untuk setiap bidikan.
API yang diuji:
Lulus: RGB berarti pusat 10% menjadi lebih cerah dengan peningkatan sensitivitas.
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 bahwa parameter android.shading.mode
diterapkan.
API yang 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 dialihkan 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 bahwa parameter android.tonemap.mode diterapkan. Menerapkan kurva tonemap 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 yang diuji:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus:
- test1: Kedua gambar memiliki tonemap linier, tetapi n=1 memiliki gradien yang lebih curam. Saluran G (hijau) lebih cerah untuk gambar n=1.
- test2: Tonemap yang sama, tetapi panjangnya berbeda. Gambar adalah sama.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Memeriksa peningkatan sensitivitas RAW pasca. Menangkap satu set gambar RAW dan YUV dengan sensitivitas berbeda, memposting kombinasi peningkatan sensitivitas RAW dan memeriksa apakah rata-rata piksel keluaran sesuai dengan pengaturan permintaan.
API yang 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 peningkatan meningkat sementara gambar YUV tetap konstan dalam kecerahan
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 sekumpulan gambar mentah dengan peningkatan perolehan dan mengukur noise. Menangkap hanya mentah, dalam burst.
API yang 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 daripada bidikan sebelumnya, karena gain meningkat.
Menggunakan varians sel grid statistik tengah.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Menangkap serangkaian gambar mentah dengan meningkatkan waktu pencahayaan dan mengukur nilai piksel.
API yang diuji:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: Meningkatkan ISO (gain) membuat piksel lebih sensitif terhadap cahaya, sehingga plot bergerak ke kiri.
test_raw_exposure_s=55.png
(10⁰ adalah 1 ms, 10¹ adalah 10 ms, 10⁻¹ adalah 0,1 ms)
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_sensitivitas
Menangkap sekumpulan gambar mentah dengan sensitivitas yang meningkat dan mengukur noise (varians) di tengah 10% gambar. Menguji bahwa setiap bidikan lebih berisik daripada bidikan sebelumnya.
API yang 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 bahwa android.noiseReduction.mode
diterapkan untuk memproses ulang permintaan. Menangkap gambar yang diproses ulang dengan kamera yang remang-remang. Menggunakan penguatan analog yang tinggi untuk memastikan gambar yang diambil tidak bising. Menangkap tiga gambar yang diproses ulang, untuk NR mati, "cepat", dan "kualitas tinggi". Menangkap gambar yang diproses ulang dengan penguatan rendah dan NR nonaktif, dan menggunakan varians ini sebagai baseline.
API yang diuji:
Lulus: CEPAT >= MATI, HQ >= CEPAT, HQ >> MATI
Plot SNR vs NR_MODE tipikal
test_tonemap_sequence
Menguji urutan bidikan dengan kurva tonemap yang berbeda. Menangkap 3 bidikan manual dengan tonemap linier. Menangkap 3 bidikan manual dengan tonemap default. Menghitung delta antara setiap pasangan bingkai berurutan.
API yang diuji:
Lulus: Ada 3 bingkai identik diikuti oleh set berbeda dari 3 bingkai 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 tonemap linier sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul its.image. Gambar tidak disimpan secara default, tetapi dapat disimpan dengan mengaktifkan debug_mode
.
API yang diuji:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Lulus: Semua pusat gambar memiliki perbedaan RMS (nilai akar-rata-rata-kuadrat sinyal) maks dalam gambar yang dikonversi RGB dengan 3% 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 yang diuji:
Lulus: Tes selesai dan mengembalikan gambar yang diminta.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Pengujian menangkap satu frame sebagai output YUV dan JPEG. Menggunakan permintaan manual dengan tonemap linier sehingga YUV dan JPEG terlihat sama (bila dikonversi oleh modul its.image
.)
API yang 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 RMS (nilai akar-rata-rata-kuadrat sinyal) kurang dari 1%.
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Pengujian menangkap satu frame sebagai output RAW dan YUV. Menggunakan permintaan manual dengan tonemap linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode
.
API yang 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 RMS (nilai akar-rata-rata-kuadrat dari sinyal) kurang dari 3,5%.
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 tonemap linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode
.
API yang 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 RMS (nilai akar-rata-rata-kuadrat sinyal) kurang dari 3,5%.
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 tonemap linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode
.
API yang 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 RMS (nilai akar rata-rata-kuadrat dari sinyal) kurang dari 3,5%.
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 dipilih untuk memiliki berbagai macam warna kulit.
adegan2_a
tes_efek
Menangkap bingkai untuk efek kamera yang didukung dan memeriksa apakah mereka dihasilkan dengan benar. Tes hanya memeriksa efek OFF
dan MONO
, tetapi menyimpan gambar untuk semua efek yang didukung.
API yang 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_effects_MONO.jpg
test_faces
Menguji deteksi wajah. Gambar disimpan, tetapi informasi kotak dan tengara ditabulasi di test_faces_stdout.txt
.
API yang diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Mendeteksi setidaknya satu wajah dari gambar.
test_format_combos
Menguji berbagai kombinasi format output.
API yang 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.
uji_jpeg_kualitas
Menguji kualitas kompresi JPEG kamera. Langkah kualitas JPEG melalui android.jpeg.quality
dan pastikan Tabel Kuantisasi berubah dengan benar.
API yang diuji:
Lulus: Matriks kuantisasi menurun dengan peningkatan kualitas. (Matriks mewakili faktor pembagian.)
Rata-rata matriks luma/chroma DQT kamera belakang Pixel 4 vs kualitas JPEG
Contoh tes yang gagal
Perhatikan bahwa untuk gambar berkualitas sangat rendah (kualitas jpeg < 50), tidak ada peningkatan kompresi dalam matriks kuantisasi.
test_num_faces
Menguji deteksi wajah.
API yang 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
adegan2_b
test_auto_per_frame_control
Menguji properti PER_FRAME_CONTROL
untuk permintaan pengambilan otomatis.
API yang diuji:
-
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
Lulus: Semua properti PER_FRAME_CONTROL
ada.
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
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang 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
adegan2_c
test_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang 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 pengambilan JPEG untuk kelas kinerja S sebagaimana ditentukan di bagian 2.2.7.2 Kamera di CDD.
Lulus: HARUS memiliki latensi pengambilan JPEG camera2 < 1000ms untuk resolusi 1080p sebagaimana diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000K) untuk kedua kamera utama.
test_camera_launch_perf_class
Menguji latensi peluncuran kamera untuk kelas performa S sebagaimana ditentukan bagian 2.2.7.2 Kamera di CDD.
Lulus: HARUS memiliki latensi pengaktifan kamera2 (kamera terbuka ke bingkai pratinjau pertama) <600 ms sebagaimana diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000K) untuk kedua kamera utama.
adegan2_d
test_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Menemukan 3 wajah.
adegan2_e
test_continuous_picture
50 frame resolusi VGA ditangkap dengan permintaan pengambilan terlebih dahulu pengaturan android.control.afMode = 4 (CONTINUOUS_PICTURE).
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_CAPTURE_INTENT
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Lulus: Sistem 3A menetap di akhir pengambilan 50-bingkai.
test_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang 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 bagan.
tes_3a_konsistensi
Tes untuk konsistensi 3A.
API yang 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
Lulus: 3A menyatu untuk eksposur, penguatan, awb (keseimbangan putih otomatis), dan fd (jarak fokus) tiga kali dalam toleransi.
test_edge_peningkatan
Menguji apakah parameter android.edge.mode
diterapkan dengan benar. Menangkap gambar yang tidak diproses ulang untuk setiap mode tepi dan mengembalikan ketajaman gambar keluaran dan metadata hasil pengambilan. Memproses permintaan pengambilan dengan mode tepi tertentu, sensitivitas, waktu pencahayaan, jarak fokus, dan parameter permukaan keluaran.
Lulus: Mode cepat tidak lebih tajam dari mode HQ (kualitas tinggi).
API yang 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 bagian CDD 7.5.2 Kamera Depan [C-1-5] .
Gambar yang dicerminkan, dibalik, atau diputar dapat diidentifikasi dengan fitur berlian di dekat bagian tengah.
Lulus: Gambar tidak dibalik, dicerminkan, atau diputar.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Menguji apakah bendera pergerakan lensa dilaporkan dengan benar. Menangkap rentetan 24 gambar dengan 12 bingkai pertama pada jarak fokus optimal (seperti yang ditemukan oleh 3A) dan 12 bingkai terakhir pada jarak fokus minimum. Di sekitar frame 12, lensa bergerak menyebabkan ketajaman menurun. Ketajaman akhirnya stabil saat lensa bergerak ke posisi akhir. 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_lens_position
Tests if the focus position is properly reported for moving lenses.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
Pass: Correct focus positions are reported.
test_reprocess_edge_enhancement
Returns sharpness of the output images and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, output surface parameter, and reprocess format.
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.
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.
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.
scene_change
test_scene_change
The scene change makes use of the tablet displaying a face scene and then turns the tablet on and off to create a scene change. The scene reuses scene2_e, but is in a separate scene because of the required tablet control. Additionally, for manual testing, the scene change can be accomplished by waving your hand in front of the camera.
APIs tested:
Pass: The android.control.afSceneChange
flag is asserted with a scene change.
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_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 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.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] .