Halaman ini menyediakan daftar lengkap pengujian pada Camera Image Test Suite (ITS), yang merupakan bagian dari Android Compatibility Test Suite (CTS) Verifier. Pengujian ITS adalah pengujian fungsional, yang berarti pengujian ini tidak mengukur kualitas gambar, tetapi semua fungsi kamera yang diiklankan berfungsi seperti yang diharapkan. Dokumen ini memungkinkan developer dan penguji memahami fungsi setiap pengujian dan cara men-debug kegagalan pengujian.
Camera ITS memenuhi pengujian dengan properti kamera, level API, dan
level class performa media (MPC) yang diperlukan. Untuk level API, ITS menggunakan
ro.product.first_api_level
untuk membatasi pengujian yang ditambahkan di level API tertentu yang
menguji pengalaman pengguna yang negatif untuk fungsi di level API yang lebih rendah. ITS menggunakan ro.vendor.api_level
untuk menguji fitur yang ditambahkan dalam level API tertentu yang memerlukan kemampuan hardware baru. Jika
ro.odm.build.media_performance_class
ditentukan untuk
suatu perangkat, ITS memerlukan pengujian tertentu yang akan dijalankan, bergantung pada tingkat MPC.
Pengujian dikelompokkan berdasarkan scene sebagai berikut:
- scene0: Menangkap metadata, jitter, giroskop, getaran
- scene1: Eksposur, sensitivitas, kompensasi EV, YUV vs JPEG/RAW
- scene2: Deteksi wajah, pengujian yang memerlukan scene warna atau kegelapan total
- scene3: Peningkatan tepi, gerakan lensa
- scene4: Rasio aspek, pemangkasan, ruang pandang
- scene5: Bayangan lensa
- scene6: Zoom
- scene_extensions: Ekstensi kamera
- sensor_fusion: Offset pengaturan waktu kamera/giroskop
Lihat masing-masing bagian untuk deskripsi setiap adegan.
adegan0
Pengujian scene0 tidak memerlukan informasi suasana tertentu. Namun, ponsel harus diam untuk pengujian giroskop dan getaran.
test_burst_capture
Memverifikasi bahwa seluruh pipeline perekaman dapat mengimbangi kecepatan pengambilan ukuran penuh dan waktu CPU.
API yang diuji:
Lulus: Mengambil burst gambar ukuran penuh dan kamera cukup cepat untuk menghindari waktu tunggu.
test_capture_result_dump
Menguji apakah hasil pengambilan ditampilkan dari pengambilan manual, lalu membuangnya.
API yang diuji:
Lulus: Menyelesaikan perekaman dan membuang hasil tangkapan.
bias_giroskop pengujian
Menguji apakah giroskop memiliki output yang stabil saat perangkat tidak bergerak. Data diplot sebagai rata-rata 20 titik data.
API yang diuji:
Lulus: Delta pembacaan giroskop kurang dari 0,01 dari waktu ke waktu.
{i>test_gyro_bias_plot<i}.png
jitter_pengujian
Mengukur jitter di stempel 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 md di antara frame.
test_jitter_plot.png (Perhatikan rentang sumbu y yang kecil. {i>Jitter<i} sebenarnya berukuran kecil di plot ini.)
metadata_pengujian
Menguji validitas entri metadata. Melihat hasil pengambilan gambar dan
objek karakteristik kamera. Pengujian ini menggunakan eksposur auto_capture_request
dan nilai perolehan 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: Level hardware, rollingShutterSkew
, tag frameDuration
,
timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV,
jarak hiperfokal ada dan memiliki nilai yang valid.
{i>test_param_sensitivity_burst<i}
Menguji apakah parameter android.sensor.sensitivity
diterapkan dengan benar dalam
burst. Memeriksa metadata output saja.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Data output memiliki toleransi error kurang dari 0,2%.
uji_baca_tulis
Menguji apakah perangkat menulis nilai eksposur dan mendapatkan nilai yang benar 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: Membaca dan menulis nilai yang cocok di semua foto.
peristiwa_sensor_pengujian
Menguji apakah perangkat mengajukan kueri dan mencetak peristiwa sensor untuk perangkat yang mengiklankan dukungan fusion sensor. Sensor yang diharapkan adalah akselerometer, giroskop, dan magnetometer. Pengujian ini hanya berfungsi jika layar aktif, yang berarti perangkat tidak dalam mode standby.
API yang diuji:
Lulus: Peristiwa untuk setiap sensor diterima.
uji_pola_warna_solid
Pengujian bahwa pola pengujian warna solid dibuat dengan benar untuk membisukan kamera. Jika pembisuan kamera didukung, pola pengujian warna solid harus didukung. Jika pembisuan kamera tidak didukung, pola pengujian warna solid hanya diuji jika kemampuannya diiklankan.
Jika gambar RAW didukung, penetapan 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 akan 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 pengujian solid yang didukung adalah warna yang benar dan ada varians rendah pada gambar.
pola_pengujian_pengujian
Menguji parameter android.sensor.testPatternMode
guna mengambil frame untuk setiap
pola pengujian yang valid dan memeriksa apakah frame dibuat dengan benar untuk warna
solid dan batang warna. Pengujian ini mencakup langkah-langkah berikut:
- Mengambil gambar untuk semua pola pengujian yang didukung.
- Melakukan pemeriksaan ketepatan sederhana untuk pola pengujian warna solid dan batang 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 dibuat dengan benar.
tes_test_patterns_2.jpg
kurva_peta_nada_pengujian
Menguji konversi pola pengujian dari RAW ke YUV dengan peta nada linear. Pengujian ini
memerlukan android.sensor.testPatternMode = 2
(Color_BARS) untuk menghasilkan pola gambar yang sempurna
untuk konversi peta nada. Memastikan pipeline memiliki output warna yang tepat
dengan peta nada linear dan input gambar ideal (mengandalkan 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
Lulus: YUV dan RAW terlihat mirip satu sama lain.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
stempel waktu_test_unified
Menguji apakah peristiwa gambar dan sensor gerakan 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 gerakan berada di antara dua stempel waktu gambar.
pembatasan_getaran_pengujian
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 akan bergetar saat dibisukan oleh API pembatasan audio kamera.
adegan1
scene1 adalah diagram abu-abu. Diagram abu-abu harus menutupi 30% bagian tengah ruang pandang kamera. Diagram abu-abu diperkirakan akan sedikit menantang 3A (eksposur otomatis, white balance otomatis, fokus otomatis) karena area tengah tidak memiliki fitur. Namun, permintaan pengambilan menentukan seluruh scene yang menyertakan fitur yang memadai agar 3A dapat dikonvergensi.
Kamera RFoV dapat diuji di rig pengujian WFoV atau RFoV. Jika kamera RFoV diuji di rig pengujian WFoV, diagram akan diskalakan sebesar 2⁄3 untuk memastikan beberapa batas untuk diagram abu-abu di FoV agar dapat membantu 3A dikonvergensi. Untuk deskripsi yang lebih mendetail tentang rig pengujian kamera, lihat Kamera ITS in-a-box.
scene1: Diagram ukuran penuh (kiri). 2⁄3 bagan 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 ditampilkan valid.
tes_a_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 ditampilkan adalah legal.
{i>test_ae_precapture_trigger<i}
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 konvergensi.
pengujian_auto_vs_manual
Pengujian yang mengambil foto otomatis dan manual akan 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: Perolehan dan transformasi white balance manual yang dilaporkan dalam setiap kecocokan hasil
pengambilan gambar dengan white balance otomatis estimate
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
Menguji apakah perangkat menghasilkan gambar hitam putih sepenuhnya. Mengambil dua foto, yang pertama dengan penguatan yang sangat rendah dan eksposur yang singkat, yang menghasilkan foto hitam, dan yang kedua dengan penguatan yang sangat tinggi dan eksposur panjang, yang akan menghasilkan foto putih.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Menghasilkan gambar hitam dan putih. Saluran saturasi gambar putih memiliki nilai RGB [255, 255, 255] dengan margin error kurang dari 1% selisih.
tes_hitam_putih_hitam.jpg | tes_black_white_white.jpg |
{i>test_black_white_plot_means<i}.png
test_burst_sameness_manual (manual)
Mengambil 5 burst dari 50 gambar dengan setelan pengambilan manual dan memeriksa apakah semuanya identik. Pengujian 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 diagram 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 (hanya dalam bahasa Inggris)
{i>test_burst_sameness_plot_means.png<i}
hasil_tangkapan_tes
Menguji apakah data yang valid ditampilkan kembali di objek CaptureResult
. Melakukan pengambilan gambar 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
Pass: Metadata valid untuk semua pengambilan dan setelan manual tidak bocor ke pengambilan otomatis kedua. Menggambarkan koreksi bayangan lensa untuk hasil screenshot.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Menguji apakah streaming RAW tidak dapat dipangkas.
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 tidak gambar RAW.
uji_pangkas_region_raw_comp_raw_pangkas.jpg
test_crop_region_raw_comp_raw_full.jpg
uji_pangkas_wilayah_raw_comp_yuv_pangkas.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_region
Menguji apakah region pangkas berfungsi. Mengambil gambar penuh dan membuat patch 5 region yang berbeda (sudut dan tengah.) Mengambil gambar dengan setelan crop untuk 5 region. Membandingkan nilai patch dan gambar pemangkasan.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: Gambar area yang dipangkas cocok dengan patch yang sesuai dengan gambar pangkas.
model_kerusakan_dng
Memverifikasi bahwa parameter model mentah DNG sudah benar. Plot menggambarkan varian terukur dari patch tengah kartu abu-abu dalam foto mentah yang ditangkap pada rentang sensitivitas, dan membandingkan nilai-nilai ini dengan varian yang diharapkan pada setiap sensitivitas oleh model derau DNG di HAL kamera (berdasarkan parameter O,S yang ditampilkan dalam objek hasil pengambilan gambar). Untuk detail selengkapnya tentang model derau DNG, download 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.
tes_dng_noise_model_plog.png
pengujian_ev_kompensasi_lanjutan
Menguji apakah kompensasi nilai eksposur (EV) diterapkan. Pengujian ini meningkatkan eksposur dalam delapan langkah, dan memeriksa kecerahan yang diukur terhadap kecerahan yang diharapkan. Nilai yang diharapkan dihitung dari kecerahan gambar tanpa kompensasi kendaraan listrik yang diterapkan dan nilai yang diharapkan akan memiliki saturasi jika nilai yang dihitung melebihi rentang nilai gambar sebenarnya. Pengujian akan gagal jika nilai yang diharapkan dan nilai terukur tidak sesuai, atau gambar terekspos secara berlebihan dalam lima langkah.
API yang 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
Lulus: Gambar menunjukkan peningkatan eksposur tanpa eksposur berlebihan dalam lima langkah.
{i>test_ev_compensation_advanced_plot_means<i}.png
dasar_kompensasi_ev_pengujian
Menguji apakah 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.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Lulus: Menangkap peningkatan luma dengan peningkatan setelan kompensasi EV, dan delapan frame yang diambil untuk setiap setelan kompensasi EV memiliki nilai luma yang stabil.
pengujian_ev_kompensasi_dasar.png
uji_eksposur
Menguji apakah eksposur konstan dicapai sebagai ISO dan waktu eksposur bervariasi. Mengambil
serangkaian foto yang memiliki ISO dan waktu eksposur yang dipilih untuk menyeimbangkan satu sama lain.
Hasil harus memiliki kecerahan yang sama, tetapi di atas urutan, gambar akan
lebih berisik. Memverifikasi nilai rata-rata piksel sampel yang berdekatan satu sama lain. Memastikan
gambar tidak dibatasi ke 0 atau 1 (yang akan membuatnya terlihat seperti garis
datar). Pengujian ini juga dapat dijalankan menggunakan gambar RAW dengan menyetel tanda debug
dalam 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 bersifat datar jika nilai ISO*eksposure konstan pada ruang perolehan yang diuji.
plot_paparan_pengujian.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
jpeg_tes
Pengujian yang mengonversi gambar YUV dan gambar JPEG perangkat terlihat sama. Pengujian mengambil 10% bagian tengah gambar dan menghitung nilai RGB, serta memverifikasi bahwa keduanya 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 |
pelekatan_pengujian
Menguji apakah setelan (eksposur dan penguatan) terpasang pada frame yang tepat untuk kamera FULL
dan
LEVEL_3
. Mengambil serangkaian
foto menggunakan permintaan berturut-turut, memvariasikan parameter permintaan
pengambilan di antara pengambilan gambar. 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 sarana RGB yang lebih tinggi pada test_latching_plot_means.png
.
tes_latching_i=00.jpg | tes_latching_i=01.jpg | tes_latching_i=02.jpg | |
tes_latching_i=03.jpg | tes_latching_i=04.jpg | tes_latching_i=05.jpg | |
tes_latching_i=06.jpg | tes_latching_i=07.jpg | test_latching_i=08.jpg | |
tes_latching_i=09.jpg | tes_latching_i=10.jpg | tes_latching_i=11.jpg | |
tes_latching_i=12.jpg |
{i>test_latching_plot_means<i}.png
tes_linearitas
Menguji bahwa pemrosesan perangkat dapat dibalik menjadi piksel linear. Menangkap urutan tembakan 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 linear dengan sensitivitas meningkat.
{i>test_linearity_plot_means<i}.png
{i>test_locked_burst<i}
Menguji penguncian 3A dan burst YUV (menggunakan setelan otomatis). Pengujian ini dirancang agar lulus
bahkan pada perangkat terbatas yang tidak memiliki MANUAL_SENSOR
atau PER_FRAME_CONTROLS
.
Pengujian memeriksa konsistensi gambar YUV saat pemeriksaan kecepatan frame berlangsung di CTS.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Lulus: Tangkapan terlihat konsisten.
tes_terkunci_burst_frame0.jpg
tes_terkunci_burst_frame1.jpg
tes_terkunci_burst_frame2.jpg
test_param_color_correction
Menguji apakah parameter android.colorCorrection.*
diterapkan saat ditetapkan.
Mengambil foto dengan nilai transformasi dan keuntungan yang berbeda, serta menguji apakah keduanya terlihat
berbeda. Transformasi dan keuntungan dipilih untuk membuat output naik
menjadi merah atau biru. Menggunakan peta nada linear. Pemetaan nada adalah teknik
yang digunakan dalam pemrosesan gambar untuk memetakan satu kumpulan warna ke kumpulan warna lainnya untuk memperkirakan
penampilan gambar dengan 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.
{i>test_param_color_correction_plot_means.png<i}
*Sumbu x adalah permintaan pengambilan: 0 = kesatuan, 1=boost merah, 2= boost biru
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)
waktu_paparan_pengujian
Menguji apakah parameter android.sensor.exposureTime
diterapkan.
API yang diuji:
Lulus: Setiap foto lebih terang daripada foto sebelumnya.
test_param_exposure_time_frame0.jpg
{i>test_param_exposure_time_plot.png<i}
mode_flash_parameter_pengujian
Menguji apakah parameter android.flash.mode
diterapkan. Menyetel
eksposur secara manual ke sisi gelap, sehingga jelas apakah flash aktif
atau tidak, dan menggunakan peta nada linear. Memeriksa bagian tengah dengan gambar ubin untuk melihat
apakah ada gradien besar yang dibuat untuk memverifikasi apakah flash aktif.
API yang diuji:
Lulus: Bagian tengah gambar kartu memiliki gradien besar yang berarti flash diaktifkan.
tes_param_flash_mode_1.jpg
uji_param_flash_mode_1_ubin.jpg
tes_param_flash_mode_2.jpg
test_param_flash_mode_2_ubin.jpg
pengurangan_parameter_pengujian
Menguji apakah parameter android.noiseReduction.mode
diterapkan dengan benar
saat ditetapkan. Mengambil gambar dengan kamera yang redup. Menggunakan penguatan analog tinggi untuk
memastikan gambar yang diambil berisik. Merekam tiga gambar, untuk NR nonaktif, "cepat",
dan "kualitas tinggi". Juga mengambil gambar dengan penguatan dan NR nonaktif, dan menggunakan varians ini sebagai dasar pengukuran. Makin tinggi SNR (Rasio Sinyal terhadap Derau), semakin baik kualitas gambarnya.
API yang diuji:
Lulus: SNR bervariasi dengan mode pengurangan derau yang berbeda dan berperilaku mirip seperti grafik di bawah.
{i>test_param_noise_reduction_plot_SNRs<i}.pngS
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
sensitivitas_parameter_pengujian
Menguji apakah parameter android.sensor.sensitivity
diterapkan. Pengujian ini
meningkatkan sensitivitas dalam 5 langkah dengan eksposur tetap untuk setiap foto.
API yang diuji:
Lulus: Rata-rata RGB dari pusat 10% menjadi lebih terang dengan sensitivitas yang ditingkatkan.
{i>test_param_sensitivity_iso=0055.jpg<i}
{i>test_param_sensitivity_iso=1819.jpg<i}
test_param_sensitivity_iso=3583.jpg
{i>test_param_sensitivity_iso=5347.jpg<i}
{i>test_param_sensitivity_iso=7111.jpg<i}
{i>test_param_sensitivity_plot.png<i}
mode_shading_parameter_pengujian
Menguji apakah 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 diubah 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
mode_peta_parameter_pengujian
Menguji apakah parameter android.tonemap.mode diterapkan. Menerapkan kurva peta nada yang berbeda untuk setiap saluran R, G, B, dan memeriksa apakah gambar output dimodifikasi seperti yang diharapkan. Pengujian ini terdiri dari dua pengujian, yaitu test1 dan test2.
API yang 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 nada linear, tetapi n=1 memiliki gradien yang lebih curam. Saluran G (hijau) lebih terang untuk gambar n=1.
- test2: Peta nada sama, tetapi panjangnya berbeda. Gambarnya sama.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
peningkatan_sensitivitas_pengujian_post_raw
Pemeriksaan setelah peningkatan sensitivitas RAW. Mengambil serangkaian gambar RAW dan YUV dengan sensitivitas yang berbeda, memposting kombinasi peningkatan sensitivitas RAW, dan memeriksa apakah rata-rata piksel output cocok dengan setelan 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 akan menjadi lebih gelap seiring peningkatan peningkatan, sementara gambar YUV tetap kecerahannya 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
{i>test_post_raw_sensitivity_boost_yuv_plot_means.png<i}
uji_raw_burst_sensitivity
Menangkap satu set gambar mentah dengan peningkatan penguatan dan pengukuran derau. Menangkap secara mentah saja, 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
Lulus: Setiap shot lebih berisik daripada shot sebelumnya, karena perolehannya makin meningkat.
Menggunakan varian sel petak statistik tengah.
{i>test_raw_burst_sensitivity_variance.png<i}
uji_raw_eksposur
Mengambil satu set gambar mentah dengan waktu eksposur yang meningkat dan mengukur nilai piksel.
API yang diuji:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Lulus: Meningkatkan ISO (peningkatan) membuat piksel lebih sensitif terhadap cahaya, sehingga plot bergerak ke kiri.
test_raw_exposure_s=55.png
(100 adalah 1 md, 101 adalah 10 md, 10-1 adalah 0,1 md)
test_raw_exposure_s=132.png
{i>test_raw_exposure_s<i}=209.png
{i>test_raw_exposure_s<i}=286.png
test_raw_exposure_s=363.png
{i>test_raw_exposure_s<i}=440.png
tes_raw_sensitivitas
Mengambil satu set gambar mentah dengan sensitivitas yang meningkat dan mengukur derau (varian) di 10% bagian tengah gambar. Menguji apakah setiap shot lebih berisik daripada yang 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
Lulus: Varians meningkat di setiap tembakan.
{i>test_raw_sensitivity_variance.png<i}
pengujian_proses ulang_pengurangan_noise
Menguji apakah android.noiseReduction.mode
diterapkan untuk memproses ulang permintaan.
Mengambil gambar yang diproses ulang dengan kamera bercahaya redup. Menggunakan penguatan analog tinggi
untuk memastikan gambar yang diambil berisik. Mengambil tiga gambar yang diproses ulang, untuk NR
nonaktif, "cepat", dan "berkualitas tinggi". Mengambil gambar yang diproses ulang dengan penguatan dan NR
rendah, dan menggunakan varians ini sebagai dasar pengukuran.
API yang diuji:
Lulus: FAST >= OFF, HQ >= FAST, HQ >> OFF
Plot SNR vs NR_MODE standar
urutan_peta_nada_pengujian
Menguji urutan foto dengan kurva peta nada yang berbeda. Mengambil 3 foto manual dengan peta nada linear. Mengambil 3 foto manual dengan peta nada default. Menghitung delta antara setiap pasangan frame yang berurutan.
API yang diuji:
Lulus: Ada 3 frame identik, diikuti oleh kumpulan 3 frame identik yang berbeda.
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
tes_yuv_jpeg_semua
Menguji semua ukuran dan format yang dilaporkan untuk kerja pengambilan gambar. Menggunakan permintaan
manual dengan peta nada linear 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 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 root-mean-square dari sinyal) maksimum dalam gambar yang dikonversi RGB dengan 3% dari gambar YUV resolusi tertinggi.
tes_yuv_jpeg_all.png
tes_yuv_plus_dng
Menguji apakah ukuran dan format yang dilaporkan berfungsi untuk pengambilan gambar.
API yang diuji:
Lulus: Pengujian selesai dan menampilkan gambar yang diminta.
tes_yuv_plus_dng.jpg
tes_yuv_plus_jpeg
Pengujian yang merekam satu frame sebagai output YUV dan JPEG. Menggunakan permintaan
manual dengan peta nada linear sehingga YUV dan JPEG terlihat sama saat
dikonversi oleh modul image_processing_utils
.
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 root-mean-square dari sinyal) kurang dari 1%.
tes_yuv_plus_jpg_jpg.jpg | tes_yuv_plus_jpeg_yuv.jpg |
tes_yuv_plus_raw
Pengujian yang merekam satu frame sebagai output RAW/RAW10/RAW12 dan YUV jika
didukung. Menggunakan permintaan
manual dengan peta nada linear yang sehingga mentah dan YUV diharapkan sama. Membandingkan
nilai RGB 10% pusat gambar yang dikonversi RGB. Logandroid.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
android.hardware.graphics.ImageFormat#RAW12
Lulus: YUV dan gambar mentah serupa dan memiliki perbedaan RMS (nilai root-mean-square dari sinyal) kurang dari 3,5%.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
adegan2_a
scene2_a memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah dipilih untuk memiliki berbagai warna kulit. Diagram harus memiliki orientasi yang benar agar deteksi wajah dapat berfungsi secara optimal.
adegan2_a
uji_auto_flash
Menguji apakah flash otomatis dipicu dalam suasana gelap. Memverifikasi bahwa flash otomatis diaktifkan dengan memeriksa apakah bagian tengah gambar kartu memiliki gradien yang besar. Untuk memicu flash otomatis, tablet dan lampu di rig pengujian harus dimatikan. Tablet dimatikan oleh pengujian, dan lampu dapat dimatikan secara otomatis dengan pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian dapat berfungsi dengan benar. Dengan demikian, bukaan tablet belakang harus sepenuhnya tertutup oleh tablet adegan, dan bukaan depan harus tertutup oleh apertur dan ponsel DUT untuk menghalangi cahaya menyimpang agar tidak masuk ke rig.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Lulus: Bagian tengah gambar kartu memiliki gradien besar yang berarti flash otomatis diaktifkan.
pengujian_autoframing
Menguji perilaku autoframing perangkat kamera. Melakukan zoom besar sehingga
tidak ada wajah di scene yang terlihat, mengaktifkan mode autoframing dengan
menyetel AUTOFRAMING
di CaptureRequest
ke True
, dan memverifikasi apakah semua
wajah di scene asli dapat dideteksi saat status menyatu (yaitu,
saat AUTOFRAMING_STATE
di CaptureResult
disetel ke
AUTOFRAMING_STATE_CONVERGED
).
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Lulus: Ketiga wajah terdeteksi.
uji_tampilan_p3
Menguji
perekaman Display P3
dalam JPEG menggunakan ColorSpaceProfiles
API. Menguji apakah JPEG
yang diambil memiliki
profil ICC
yang sesuai di headernya, dan bahwa gambar berisi warna di luar gamut sRGB.
API yang diuji:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Lulus: JPEG berisi profil ICC Display P3 dan warna di luar gamut sRGB.
efek_tes
Menangkap frame untuk efek kamera yang didukung dan memeriksa apakah efek tersebut dibuat
dengan benar. Pengujian ini 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: Mengambil gambar adegan dengan efek OFF
dan gambar monokrom
dengan efek yang disetel ke MONO
.
efek_tes_MONO.jpg
kombo_format_pengujian
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()
Lulus: Semua kombinasi berhasil dicatat.
{i>test_jpeg_quality<i}
Menguji kualitas kompresi JPEG kamera. Lakukan langkah kualitas JPEG melalui
android.jpeg.quality
dan memastikan Tabel Kuantisasi berubah
dengan benar.
API yang diuji:
Lulus: Matriks kuantisasi menurun seiring peningkatan kualitas. (Matriks mewakili faktor pembagian.)
Rata-rata matriks DQT/luma/kroma kamera belakang Pixel 4 vs kualitas JPEG
Contoh pengujian yang gagal
Perhatikan bahwa untuk gambar berkualitas sangat rendah (jpeg.quality < 50), tidak ada peningkatan kompresi dalam matriks kuantisasi.
jumlah_pengujian
Menguji deteksi wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah.
jumlah_test_faces_fd_mode_1.jpg
rasio_frame_pratinjau_min_pengujian
Menguji apakah kecepatan frame pratinjau berkurang dengan benar dalam suasana gelap. Agar pengujian ini berfungsi dengan benar, lampu di rig pengujian harus dimatikan oleh pengontrol atau secara manual oleh operator pengujian.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Kecepatan frame pratinjau berada dalam rentang minimum kecepatan frame yang diminta, dan variasi antar-frame kurang dari toleransi absolut yang ditetapkan dalam pengujian.
{i>test_reprocess_uv_swap<i}
Menguji bahwa pemrosesan ulang YUV tidak menukar bidang U dan V. Hal ini terdeteksi dengan menghitung jumlah perbedaan absolut (SAD) antara gambar yang diproses ulang dan pengambilan yang tidak diproses ulang. Jika pertukaran bidang U dan V output dari pengambilan gambar yang diproses ulang menyebabkan peningkatan SAD, output diasumsikan memiliki bidang U dan V yang benar.
API yang diuji:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Lulus: Pesawat U dan V tidak ditukar.
{i>test_reprocess_uv_swap.png<i}
adegan2_b
jumlah_pengujian
Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan 3 wajah.
jumlah_test_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Mengambil dua gambar menggunakan format YUV dan JPEG umum terbesar dengan rasio aspek
yang sama dengan format JPEG terbesar yang tidak melebihi resolusi 1920x1440.
Menetapkan jpeg.quality
ke 100 dan menangkap permintaan platform ganda. Mengonversi kedua
gambar ke array RGB dan menghitung perbedaan akar rata-rata persegi (RMS) 3D
antara dua gambar.
API yang 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 RMS (nilai root-mean-square dari sinyal) kurang dari 1%.
adegan2_c
jumlah_pengujian
Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan 3 wajah.
jumlah_test_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Menguji latensi pengambilan JPEG untuk class performa S seperti yang ditentukan di bagian 2.2.7.2 Kamera dalam CDD.
Lulus: HARUS memiliki latensi pengambilan JPEG camera2 < 1000 md untuk resolusi 1080p seperti yang diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000 K) untuk kedua kamera utama.
class_pengujian_kamera_launch_perf
Menguji latensi peluncuran kamera untuk class performa S seperti yang ditentukan bagian 2.2.7.2 Kamera dalam CDD.
Lulus: HARUS memiliki latensi pengaktifan kamera2 (membuka kamera ke frame pratinjau pertama) < 600 md seperti yang diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3.000 K) untuk kedua kamera utama.
adegan2_d
jumlah_pengujian
Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan 3 wajah.
adegan2_e
uji_gambar_berkelanjutan
50 frame resolusi VGA diambil dengan setelan pertama permintaan pengambilan gambar
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API yang 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 berhenti pada akhir pengambilan gambar 50 frame.
jumlah_pengujian
Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan 3 wajah.
adegan2_f
scene2_f memiliki tiga wajah dengan latar belakang putih dan pakaian putih. Wajah memiliki berbagai warna kulit dan kontras tinggi dengan latar belakang.
adegan2_f
jumlah_pengujian
Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan 3 wajah.
jumlah_test_faces_fd_mode_1.jpg
adegan3
Scene3 menggunakan diagram ISO12233, dan sebagian besar pengujian menggunakan metode ekstraktor diagram untuk menemukan diagram di scene. Oleh karena itu, sebagian besar gambar tersimpan tidak memiliki batas seperti gambar untuk scene 1, 2, atau 4, tetapi hanya diagram. Diagram harus memiliki orientasi yang benar agar pencari diagram dapat berfungsi secara optimal.
pengujian_3a_konsistensi
Pengujian 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 konvergensi untuk eksposur, keuntungan, awb (auto white balance), dan fd (jarak fokus) tiga kali sesuai toleransi.
peningkatan_tepi_pengujian
Menguji apakah parameter android.edge.mode
diterapkan dengan benar. Mengambil
gambar yang tidak diproses ulang untuk setiap mode edge dan menampilkan ketajaman gambar
output dan metadata hasil pengambilan. Memproses permintaan pengambilan dengan mode edge, sensitivitas, waktu eksposur, jarak fokus, dan parameter permukaan output tertentu.
Lulus: Mode HQ
(2) lebih tajam daripada mode OFF
(0). Mode FAST
(1) lebih tajam
daripada mode OFF
. Mode HQ
lebih tajam atau sama dengan mode FAST
.
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)
{i>test_flip_mirror<i}
Menguji apakah gambar diorientasikan dengan benar sesuai dengan CDD pasal 7.5.2 Front-Facing Camera [C-1-5].
Gambar yang dicerminkan, dibalik, atau diputar dapat diidentifikasi oleh fitur wajik di dekat bagian tengah.
Lulus: Gambar tidak dibalik, dicerminkan, atau diputar.
{i>test_flip_mirror_scene_patch<i}.jpg
uji_lanskap_ke_potret
Menguji apakah lanskap ke potret menggantikan fungsi dengan benar untuk sensor berorientasi lanskap.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Lulus: Pengujian dapat menemukan diagram dengan rotasi yang diharapkan (0 derajat jika penggantian lanskap ke potret dinonaktifkan, 90 derajat jika diaktifkan).
pengujian_lanskap_ke_potret.png
pelaporan_gerakan_lensa_pengujian
Menguji apakah tanda gerakan lensa dilaporkan dengan benar. Mengambil burst 24 gambar dengan 12 frame pertama pada jarak fokus optimal (seperti yang ditemukan oleh 3A) dan 12 frame terakhir pada jarak fokus minimum. Di sekitar frame 12, lensa bergerak menyebabkan ketajaman turun. Ketajaman akhirnya stabil saat lensa bergerak ke posisi akhir. Tanda gerakan lensa harus ditegaskan di semua frame dengan ketajaman menengah hingga ketajaman dalam beberapa frame pertama dengan lensa tidak bergerak pada jarak fokus optimal, dan beberapa frame terakhir saat lensa diam dalam jarak fokus minimum. Frame persis yang digerakkan lensa tidaklah penting: yang diperiksa adalah tanda gerakan dinyatakan saat lensa bergerak.
API yang diuji:
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
Lulus: Flag gerakan Lens adalah True
dalam frame dengan perubahan ketajaman.
Mekanisme kegagalan:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) dalamtest_log.DEBUG
hanya dinyatakan dalam frame yang ketajamannya tidak berubah.- Frame dengan
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) ditest_log.DEBUG
memiliki perbedaan ketajaman dibandingkan dengan beberapa frame pertama pada jarak fokus optimal atau beberapa frame terakhir pada jarak fokus minimum.
pengujian_proses ulang_edge_peningkatan
Menguji apakah metode pemrosesan ulang yang didukung untuk peningkatan tepi berfungsi dengan baik. Memproses permintaan pengambilan dengan mode edge pemrosesan ulang tertentu dan membandingkan berbagai mode untuk diambil dengan mode edge pemrosesan ulang dinonaktifkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Lulus: Ketajaman untuk berbagai mode tepi sudah benar. HQ
(mode 2) lebih
tajam daripada OFF
(mode 0), dan peningkatan antar-mode yang berbeda serupa.
{i>test_reprocess_edge_enhancement_plot<i}.png
adegan4
Scene4 terdiri dari lingkaran hitam dengan latar belakang putih di dalam persegi.
adegan4
uji_aspect_ratio_dan_pangkas
Menguji apakah gambar terdistorsi atau terpangkas secara tidak terduga dalam pipeline gambar. Mengambil gambar lingkaran di atas semua format. Memverifikasi bahwa lingkaran tidak terdistorsi, lingkaran tidak bergerak dari tengah gambar, dan lingkaran tidak salah berubah ukuran dengan rasio aspek atau resolusi yang berbeda.
API yang diuji:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Lulus: Gambar tidak direntangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV (ruang pandang) maksimum yang mungkin dipertahankan.
Mekanisme kegagalan:
- Kamera tidak sejajar dengan lingkaran yang ditampilkan pada tablet di tengah adegan yang diambil.
- Lingkaran pada gambar yang diambil terdistorsi oleh pipeline pemrosesan.
- Gambar beresolusi lebih rendah akan dipangkas dua kali di pipeline gambar sehingga FoV berbeda antara gambar beresolusi tinggi dan rendah.
- Lingkaran dalam gambar yang diambil dipangkas karena permintaan pengambilan rasio aspek ekstrim yang mengurangi tinggi atau lebar gambar.
- Lingkaran pada gambar yang diambil memiliki refleksi di bagian tengah dan tidak tampak terisi penuh.
pengujian_multi_kamera_perataan
Menguji parameter kalibrasi kamera terkait pemosisian kamera untuk sistem multi-kamera. Dengan sub-kamera fisik multi-kamera, ambil foto dengan salah satu kamera fisik. Mencari pusat lingkaran. Memproyeksikan pusat lingkaran ke koordinat dunia untuk setiap kamera. Membandingkan perbedaan antara pusat lingkaran kamera dalam koordinat dunia. Memproyeksikan ulang koordinat dunia kembali ke koordinat piksel dan membandingkannya dengan yang asli sebagai pemeriksaan validitas. Membandingkan ukuran lingkaran yang memeriksa apakah panjang fokus kamera berbeda atau tidak.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Lulus: Pusat dan ukuran lingkaran sesuai dengan yang diharapkan dalam gambar yang diproyeksikan dibandingkan dengan gambar yang diambil menggunakan data kalibrasi kamera dan panjang fokus.
Mekanisme kegagalan:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, atauLENS_POSE_ROTATION
adalah nilai desain dan bukan data kalibrasi yang sebenarnya.- Sistem kamera tidak sesuai untuk penyiapan pengujian. Misalnya, menguji sistem kamera lebar dan ultrawide dengan rig pengujian RFoV. Untuk informasi selengkapnya, lihat FAQ 1 dalam kotak ITS Kamera.
uji_pratinjau_aspect_ratio_dan_pangkas
Serupa dengan pengujian test_aspect_ratio_and_crop untuk tetap menangkap, pengujian ini memeriksa format pratinjau yang didukung untuk memastikan frame pratinjau tidak direntangkan atau dipangkas dengan tidak tepat. Memverifikasi bahwa rasio aspek lingkaran tidak berubah, gambar yang dipangkas menempatkan lingkaran di tengah frame, dan ukuran lingkaran tidak berubah untuk format yang konstan atau dengan resolusi yang berbeda (pemeriksaan ruang pandang).
API yang diuji:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Gambar tidak direntangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV (ruang pandang) maksimum yang mungkin dipertahankan.
pengujian_pratinjau_stabilisasi_fov
Memeriksa ukuran pratinjau yang didukung untuk memastikan FoV dipangkas dengan tepat.
Pengujian ini merekam dua video, satu dengan stabilisasi pratinjau ON
, dan satu lagi dengan stabilisasi pratinjau OFF
. Frame representatif dipilih dari setiap
video, dan dianalisis untuk memastikan perubahan FoV di kedua video tersebut sesuai
spesifikasi.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Rasio aspek lingkaran tetap sekitar konstan, lokasi tengah lingkaran tetap stabil, dan ukuran lingkaran tidak berubah lebih dari 20%.
test_video_aspect_ratio_and_crop
Merekam video lingkaran di dalam persegi di atas semua format video. Mengekstrak frame kunci, dan memverifikasi rasio aspek lingkaran tidak berubah, gambar yang dipangkas mempertahankan lingkaran di tengah, dan ukuran lingkaran tidak berubah untuk format yang konstan atau dengan resolusi yang berbeda (pemeriksaan ruang pandang).
API yang diuji:
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
Lulus: Frame video tidak direntangkan, bagian tengah frame tidak berbeda lebih dari 3%, dan FoV (ruang pandang) maksimum yang memungkinkan dipertahankan.
adegan5
Scene5 memerlukan adegan abu-abu yang menyala secara seragam. Hal ini dilakukan dengan {i>diffuser<i}
yang ditempatkan di atas lensa kamera. Sebaiknya gunakan diffuser berikut:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Untuk menyiapkan adegan, pasang diffuser di depan kamera dan arahkan kamera ke sumber pencahayaan sekitar 2.000 lux. Gambar yang diambil untuk scene5 memerlukan pencahayaan difusi tanpa fitur yang terlihat. Berikut adalah contoh gambar:
pengambilan scene5
pengujian_keseragaman_lensa_warna_dan_warna
Menguji apakah koreksi bayangan lensa diterapkan dengan tepat, dan warna tampilan seragam monokrom didistribusikan secara merata. Melakukan pengujian ini pada frame YUV dengan 3A otomatis. Bayangan lensa dievaluasi berdasarkan saluran y. Mengukur nilai y rata-rata untuk setiap blok sampel yang ditentukan, dan menentukan lulus atau gagal dengan membandingkan dengan nilai y pusat. Uji keseragaman warna dievaluasi dalam ruang r/g dan b/g.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Lulus: Pada radius gambar yang ditentukan, varians nilai r/g dan b/g harus kurang dari 20% agar lulus pengujian.
adegan6
Scene6 adalah petak lingkaran kecil dengan persegi di satu sudut untuk menunjukkan orientasi. Lingkaran kecil diperlukan untuk menguji fungsi zoom pada rentang yang besar.
adegan6
{i>test_in_sensor_zoom<i}
Menguji perilaku fitur zoom dalam sensor kamera, yang menghasilkan gambar RAW yang dipangkas.
Dengan kasus penggunaan streaming yang ditetapkan ke
CROPPED_RAW
,
pengujian mengambil dua gambar pada rentang zoom, gambar RAW ruang pandang penuh (FoV)
dan gambar RAW yang dipangkas. Pengujian ini mengonversi gambar menjadi array RGB, memperkecil gambar RAW berukuran penuh yang dipangkas menjadi ukuran yang dilaporkan oleh SCALER_RAW_CROP_REGION
, dan menghitung perbedaan root mean square (RMS) 3D antara kedua gambar tersebut.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Lulus: Perbedaan rata-rata persegi rata-rata (RMS) 3D antara gambar RAW yang diperkecil dan gambar RAW FoV penuh kurang dari 1%.
uji_zoom
Menguji perilaku zoom kamera. Mengambil foto pada rentang zoom dan memeriksa apakah lingkaran membesar saat kamera diperbesar.
API yang diuji:
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
Lulus: Ukuran relatif lingkaran yang diambil akurat terhadap rasio zoom yang diminta untuk memastikan kamera di-zoom dengan benar.
test_zoom untuk menemukan kontur lingkaran yang paling dekat dengan pusat.
test_low_Latensi_zoom
Menguji perilaku zoom latensi rendah kamera. Mengambil gambar pada rentang zoom dengan android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
, dan memeriksa apakah lingkaran dalam gambar output cocok dengan rasio zoom dalam metadata pengambilan.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Lulus: Ukuran relatif lingkaran yang diambil akurat terhadap metadata hasil rasio zoom.
uji_pratinjau_video_zoom_match
Mengujinya saat merekam dan melakukan zoom, pratinjau video dan output video akan ditampilkan, serta merekam output yang sama. Menghitung ukuran lingkaran yang paling dekat dengan bagian tengah dengan rasio zoom yang berbeda, dan memeriksa apakah ukuran lingkaran akan bertambah saat rasio zoom bertambah.
API yang diuji:
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
Lulus: Ukuran relatif lingkaran yang diambil akurat terhadap rasio zoom yang diminta dalam video dan pratinjau.
VGA_640x480_key_frame.png (sebelum zoom)
preview_640x480_key_frame.png (sebelum zoom)
VGA_640x480_key_frame.png (setelah zoom)
preview_640x480_key_frame.png (setelah zoom)
ekstensi_adegan
Pengujian scene_extensions
ditujukan untuk ekstensi kamera dan harus menggunakan
Camera ITS-in-a-Box,
karena memerlukan kontrol lingkungan pengujian yang akurat.
scene_hdr
Scene scene_hdr
terdiri dari potret di sebelah kiri dan kode QR
kontras rendah di sebelah kanan.
scene_hdr
{i>test_hdr_extension<i}
Menguji ekstensi HDR. Mengambil rekaman dengan dan tanpa mengaktifkan ekstensi, dan memeriksa apakah ekstensi membuat kode QR lebih mudah terdeteksi.
API yang diuji:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Lulus: Ekstensi HDR mengurangi jumlah perubahan kontras yang diperlukan untuk mendeteksi kode QR atau mengurangi gradien di seluruh kode QR.
scene_night
Scene scene_night
terdiri dari lingkaran putih dengan empat lingkaran lebih kecil
di dalamnya, semuanya dengan latar belakang hitam. Lingkaran yang lebih kecil di
sudut kanan atas lebih gelap daripada lingkaran lainnya untuk menunjukkan orientasi.
scene_night
ekstensi_test_night_extension
Menguji ekstensi Night. Mengambil rekaman dengan dan tanpa mengaktifkan ekstensi, serta memeriksa hal berikut:
- Pengambilan gambar dengan ekstensi Malam yang diaktifkan memerlukan waktu lebih lama.
- Pengambilan gambar dengan ekstensi Night yang diaktifkan menjadi lebih cerah atau memiliki artefak skenario dengan tampilan yang lebih baik.
API yang diuji:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Lulus: Dibandingkan dengan pengambilan gambar tanpa ekstensi Night yang diaktifkan, pengambilan gambar dengan ekstensi Night yang diaktifkan akan memerlukan waktu setidaknya 0,5 detik lebih lama. Pengambilan gambar harus setidaknya 10% lebih terang, atau titik abu-abu pada adegan harus bernilai 20 piksel lebih rendah dari pusat lingkaran di sekitarnya.
sensor_fusion
Uji fusi sensor memerlukan gerakan ponsel tertentu di depan pola
papan catur. Untuk mendapatkan hasil yang optimal, pastikan diagram pengujian dipasang secara datar. Diagram
yang tidak datar akan memengaruhi penghitungan rotasi untuk banyak pengujian.
Pengujian sensor_fusion
dapat diotomatiskan dengan
Sensor Fusion Box.
Gambar papan catur
uji_multi_kamera_frame_sinkronisasi
Pengujian yang membingkai stempel waktu yang diambil oleh kamera logis adalah dalam waktu 10 md dengan menghitung sudut persegi di dalam papan catur untuk menentukan stempel waktu.
API yang diuji:
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()
Teruskan: Sudut antar-gambar dari setiap kamera tidak berubah secara signifikan saat ponsel diputar.
stabilisasi_pratinjau_pengujian
Pengujian yang memutar video pratinjau stabil dengan kecepatan pemutaran kurang dari giroskop.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Rotasi sudut maksimum pada frame kurang dari 70% dari rotasi giroskop.
Berikut adalah contoh video dengan dan tanpa stabilisasi.
Video sampel dengan stabilisasi
Video sampel tanpa stabilisasi
fusi_pengujian_sensor
Menguji perbedaan stempel waktu antara kamera dan giroskop untuk aplikasi AR
dan VR. Ponsel diputar 90 derajat 10 kali di depan
pola kotak-kotak. Gerakan adalah sekitar 2 detik untuk pulang pergi. Pengujian
ini dilewati jika tidak ada giroskop yang disertakan atau jika parameter REALTIME
sumber stempel waktu tidak diaktifkan.
Pengujian test_sensor_fusion
menghasilkan sejumlah plot. Dua plot terpenting
untuk proses debug adalah:
test_sensor_fusion_gyro_events
: Menampilkan peristiwa giroskop untuk ponsel selama pengujian. Pergerakan pada arah x dan y menyiratkan bahwa ponsel tidak dipasang dengan aman pada pelat penyangga, sehingga mengurangi kemungkinan lulus pengujian. Jumlah siklus dalam plot bergantung pada kecepatan tulis untuk menyimpan frame.pengujian_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Menampilkan penyelarasan peristiwa giroskop dan kamera. Plot ini harus menunjukkan gerakan yang cocok antara kamera dan giroskop ke +/-1 md.plot_pengujian_sensor_fusi_plot_rotasi
API yang diuji:
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
Lulus: Offset stempel waktu kamera dan giroskop kurang dari 1 md sesuai dengan CDD pasal 7.3.9 Sensor Fidelitas Tinggi [C-2-14].
Mekanisme kegagalan:
- Error offset: Offset giroskop kamera tidak dikalibrasi dengan benar menjadi dalam +/-1 md.
- Penurunan frame: Pipeline tidak cukup cepat untuk merekam 200 frame secara berurutan.
- Error soket:
adb
tidak dapat terhubung dengan andal ke DUT cukup lama untuk menjalankan pengujian. - Diagram tidak dipasang secara datar. Plot
test_sensor_fusion_plot_rotations
memiliki frame dengan rotasi giroskop dan kamera yang sangat bervariasi saat kamera berputar melalui bagian diagram yang tidak datar. - Kamera tidak dipasang dalam posisi datar. Plot
test_sensor_fusion_gyro_events
menunjukkan gerakan pada bidang X dan Y. Kegagalan ini lebih umum terjadi pada kamera depan karena kamera belakang sering kali memiliki tumpang tindih yang meningkat ke bagian bodi ponsel lainnya, sehingga membuat kemiringan saat memasang bagian belakang ponsel ke pelat penyangga.
uji_stabilisasi_video
Pengujian yang memutar video stabil kurang dari giroskop.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Rotasi sudut maksimum pada frame kurang dari 60% dari rotasi giroskop.
Berikut adalah contoh video dengan dan tanpa stabilisasi.
Video sampel dengan stabilisasi
Video sampel tanpa stabilisasi
snapshot_LED_pengujian
Menguji apakah snapshot LED tidak memenuhi atau mewarnai gambar.
Pengujian ini menambahkan pengontrol pencahayaan ke kotak fusion sensor untuk
mengontrol lampu. Dengan lampu yang disetel ke OFF
, pengujian akan mengambil gambar dengan
mode AUTO_FLASH
yang disetel ke ON
. Selama pengambilan gambar ini, pengujian akan menjalankan
urutan pra-rekaman dengan pemicu aePrecapture
yang ditetapkan ke START
, dan menetapkan
intent perekaman ke Preview
untuk mengambil rekaman dengan flash.
Karena pengambilan gambar memiliki hotspot khusus karena flash, pengujian menghitung rata-rata gambar flash dari seluruh pengambilan dan memverifikasi apakah nilainya berada dalam rentang (68, 102). Untuk memeriksa apakah gambar cukup putih seimbang, pengujian akan menghitung rasio R/G dan B/G dan memverifikasi apakah rasionya berada dalam 0,95 dan 1,05.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Lulus: Rasio R/G dan B/G berada dalam 0,95 dan 1,05. Rata-rata gambar flash berada dalam rentang (68, 102).