Halaman ini menyediakan daftar lengkap pengujian dalam 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 memastikan bahwa 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.
Pengujian ITS diupdate atau ditambahkan dengan setiap versi Android seperti yang dijelaskan dalam catatan rilis Camera ITS untuk versi Android tersebut. Update didorong oleh bug yang dilaporkan pengguna atau developer. Penambahan didorong oleh bug yang dilaporkan pengguna atau developer dan memvalidasi perilaku yang benar dari fitur framework kamera baru.
Di Android 17 dan yang lebih tinggi, pengujian ITS Kamera dibagi
menjadi dua aktivitas di CTS Verifier untuk memungkinkan eksekusi paralel dan mengurangi
waktu pengujian: satu aktivitas untuk pengujian feature_combination dan sensor_fusion,
dan satu lagi untuk semua pengujian lainnya. Untuk mengetahui informasi selengkapnya, lihat
Mengurangi waktu pengujian.
Camera ITS membatasi pengujian berdasarkan properti kamera yang diperlukan, level API, dan
level media performance class (MPC). Untuk level API, ITS menggunakan
ro.product.first_api_level untuk membatasi pengujian yang ditambahkan di level API tertentu yang
menguji pengalaman pengguna negatif untuk fungsionalitas di level API yang lebih rendah. ITS
menggunakan ro.vendor.api_level untuk membatasi pengujian fitur yang ditambahkan di level API
tertentu yang memerlukan kemampuan hardware baru. Jika
ro.odm.build.media_performance_class ditentukan untuk
perangkat, ITS memerlukan pengujian khusus untuk dijalankan, bergantung pada level MPC.
Pengujian dikelompokkan berdasarkan adegan ke dalam bagian berikut:
Adegan pengujian berbasis tablet
scene0: Mengambil metadata, jitter, giroskop, getaranscene1: Eksposur, sensitivitas, kompensasi nilai eksposur (EV), YUV versus JPEG dan RAWscene2: Deteksi wajah, pengujian yang memerlukan adegan berwarnascene3: Peningkatan kualitas tepi, gerakan lensascene4: Rasio aspek, pemangkasan, ruang pandangscene6: Zoomscene7: Peralihan multi-kamerascene8: Pengukuran area eksposur otomatis (AE) dan white balance otomatis (AWB)scene9: Kompresi JPEGscene_extensions: Ekstensi kamerascene_tele: Peralihan lensa telefotoscene_video: Penurunan frame
Rig Gen2 / adegan pengujian berbasis sensor_fusion
feature_combination: Kombinasi fiturscene_flash: Flash otomatis, kecepatan frame minimumscene_gen2_chart: Pengujian menggunakan diagram kertas Gen2scene_ip: Paritas gambar antara aplikasi kamera default dan Jetpack Camera App (JCA)sensor_fusion: Selisih waktu kamera dan giroskop
Adegan pengujian berbasis penyebar
scene5: Bayangan lensa
Adegan pengujian berbasis tablet gamut lebar
scene_wide_gamut: Profil dan rentang warna gamut lebar
Lihat masing-masing bagian untuk mengetahui deskripsi setiap adegan.
Adegan pengujian berbasis tablet
scene0
Pengujian tidak memerlukan informasi adegan tertentu. Namun, ponsel harus diam untuk pengujian giroskop dan getaran.
test_jitter
Mengukur jitter dalam stempel waktu kamera.
API yang diuji:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Lulus: Ada delta minimal 30 md di antara frame.
Pada gambar berikut, perhatikan rentang sumbu y yang kecil. Jitter sebenarnya kecil dalam plot ini.
Gambar 1. Plot test_jitter.
test_metadata
Menguji validitas entri metadata, dengan melihat hasil pengambilan
dan objek karakteristik kamera. Pengujian ini menggunakan
nilai eksposur dan penguatan auto_capture_request karena konten gambar tidak
penting. Ini adalah pengujian fast-FAIL karena berjalan dalam waktu singkat, memerlukan
penyiapan minimal, dan menandakan sejumlah besar pengujian yang gagal di downstream.
Seluruh suite pengujian tidak boleh dijalankan hingga test_metadata LULUS.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVELandroid.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPEandroid.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERNandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Lulus: Tingkat hardware, tag rollingShutterSkew, frameDuration,
timestampSource, croppingType, blackLevelPattern, pixel_pitch,
ruang pandang (FoV), dan jarak hiperfokal ada dan memiliki nilai yang valid.
test_request_capture_match
Menguji apakah perangkat menulis nilai eksposur dan penguatan yang benar dengan membaca
kembali metadata pengambilan. Ini adalah pengujian fast-FAIL karena memerlukan penyiapan minimal dan menandakan sejumlah besar pengujian yang gagal di downstream.
Seluruh suite pengujian tidak boleh dijalankan hingga test_request_capture_match
LULUS.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Lulus: Nilai metadata permintaan dan pengambilan cocok di semua pengambilan gambar.
test_sensor_events
Untuk perangkat yang mengiklankan dukungan fusi sensor, pengujian ini memeriksa apakah
perangkat mengkueri dan mencetak peristiwa sensor. Sensor yang diharapkan adalah
akselerometer, giroskop, dan magnetometer. Pengujian ini hanya berfungsi jika layar
aktif, yang berarti perangkat tidak dalam mode standby. Ini adalah pengujian GAGAL cepat karena berjalan dalam waktu singkat, memerlukan penyiapan minimal, dan menandakan pengujian fusi sensor gagal di hilir. Pengujian scene sensor_fusion tidak boleh dijalankan
kecuali jika test_sensor_events adalah LULUS atau DILEWATI.
API yang diuji:
Lulus: Peristiwa untuk setiap sensor diterima.
test_solid_color_test_pattern
Menguji apakah pola pengujian warna solid dibuat dengan benar untuk penonaktifan audio kamera. Jika penonaktifan kamera didukung, pola pengujian warna solid harus didukung. Jika penonaktifan audio kamera tidak didukung, pola pengujian warna solid hanya diuji jika kemampuan tersebut diiklankan.
Jika gambar mentah 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 diuji.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATAandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Lulus: Pola pengujian solid yang didukung memiliki warna yang benar dan varians yang rendah dalam gambar.
test_test_pattern
Menguji parameter android.sensor.testPatternMode untuk
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 kebenaran untuk pola pengujian warna solid dan batang warna.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Lulus: Pola pengujian yang didukung dibuat dengan benar.
Gambar 2. Contoh test_test_patterns.
test_tonemap_curve
Menguji konversi pola pengujian dari mentah ke YUV dengan tonemap linear. Pengujian ini
memerlukan android.sensor.testPatternMode = 2 (COLOR_BARS) untuk menghasilkan
pola gambar yang sempurna untuk konversi tonemap. Memverifikasi bahwa pipeline memiliki
output warna yang tepat dengan tonemap linear dan input gambar ideal (bergantung pada
test_test_patterns).
API yang diuji:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: YUV dan RAW terlihat mirip satu sama lain.
Gambar 3. Contoh mentah test_tonemap_curve.
Gambar 4. Contoh YUV test_tonemap_curve.
test_unified_timestamp
Menguji apakah peristiwa sensor gambar dan gerakan berada dalam domain waktu yang sama. Ini adalah
pengujian GAGAL cepat karena berjalan dalam waktu singkat, memerlukan penyiapan minimal, dan
menandakan pengujian fusi sensor gagal di hilir. Pengujian scene sensor_fusion
tidak boleh dijalankan kecuali jika test_unified_timestamp adalah LULUS atau DILEWATI.
API yang diuji:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.hardware.Sensor#TYPE_GYROSCOPE
Lulus: Stempel waktu gerakan berada di antara dua stempel waktu gambar.
test_vibration_restriction
Menguji apakah getaran perangkat berfungsi seperti yang diharapkan.
API yang diuji:
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.os.Vibratorandroid.hardware.camera2.CameraDevice#setCameraAudioRestriction
Lulus: Perangkat tidak bergetar saat dibisukan oleh API pembatasan audio kamera.
scene1_1
scene1 adalah diagram abu-abu. Diagram abu-abu harus mencakup 30% bagian tengah FoV
kamera. Diagram abu-abu diperkirakan akan menantang 3A (AE,
AWB, dan AF) secara moderat karena wilayah tengah tidak memiliki fitur.
Namun, permintaan pengambilan menentukan seluruh scene yang mencakup
fitur yang memadai agar 3A dapat konvergen.
Kamera RFoV dapat diuji di rig pengujian WFoV atau RFoV. Jika kamera RFoV diuji dalam rig pengujian WFoV, diagram akan diskalakan sebesar 2/3 untuk menentukan beberapa batas diagram abu-abu di FoV guna membantu konvergensi 3A. Untuk deskripsi yang lebih mendetail tentang rig pengujian kamera, lihat ITS-in-a-box Kamera.
Gambar 5. Diagram scene1 ukuran penuh (kiri), diagram berskala 2/3 (kanan).
test_ae_precapture_trigger
Menguji mesin status AE saat menggunakan pemicu pra-pengambilan. Mengambil lima permintaan manual dengan AE dinonaktifkan. Permintaan terakhir memiliki pemicu pra-pengambilan AE, yang harus diabaikan karena AE dinonaktifkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Lulus: AE konvergen.
test_auto_vs_manual
Pengujian yang mengambil foto otomatis dan manual terlihat sama.
API yang diuji:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.hardware.camera2.CaptureResult#TONEMAP_MODE
Lulus: Penguatan dan transformasi white balance manual yang dilaporkan di setiap hasil pengambilan gambar cocok dengan estimate white balance otomatis dari algoritma 3A kamera.
Gambar 6. Contoh otomatis test_auto_vs_manual.
Gambar 7. Contoh white balance test_auto_vs_manual.
Gambar 8. Contoh transformasi white balance manual test_auto_vs_manual.
test_black_white
Menguji apakah perangkat menghasilkan gambar hitam putih penuh. Mengambil dua gambar, yang pertama dengan penguatan yang sangat rendah dan eksposur pendek, yang menghasilkan foto hitam, dan yang kedua dengan penguatan yang sangat tinggi dan eksposur panjang, yang menghasilkan foto putih.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Menghasilkan gambar hitam putih. Saluran jenuh gambar putih memiliki nilai RGB [255, 255, 255] dengan margin error kurang dari 1% perbedaan.
Gambar 9. test_black_white, contoh hitam.
Gambar 10. test_black_white, contoh putih.
Gambar 11. test_black_white, contoh plot means.
test_burst_capture
Memverifikasi bahwa seluruh pipeline pengambilan dapat mengimbangi kecepatan pengambilan ukuran penuh dan waktu CPU.
API yang diuji:
Lulus: Mengambil burst gambar ukuran penuh, memeriksa penurunan frame dan kecerahan gambar.
test_burst_sameness_manual
Mengambil 5 burst yang berisi 50 gambar dengan setelan pengambilan manual dan memeriksa apakah semuanya identik. Gunakan pengujian ini untuk mengidentifikasi apakah ada frame sporadis yang diproses secara berbeda atau memiliki artefak.
API yang diuji:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSORandroid.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
Gambar 12. Contoh mean test_burst_sameness_manual.
Gambar 13. test_burst_sameness_manual_plot_means
test_crop_region_raw
Menguji bahwa streaming RAW tidak dapat dipangkas.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CaptureResult#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: Gambar YUV dipangkas di tengah, tetapi gambar RAW tidak.
Gambar 14. Contoh pemangkasan mentah comp test_crop_region_raw.
Gambar 15. Contoh lengkap raw comp test_crop_region_raw.
Gambar 16. Contoh pemangkasan YUV comp test_crop_region_raw.
Gambar 17. Contoh lengkap YUV test_crop_region_raw.
test_crop_regions
Menguji apakah area pangkas berfungsi. Mengambil gambar penuh dan membuat patch dari lima wilayah berbeda (sudut dan tengah). Mengambil gambar dengan pemangkasan yang ditetapkan untuk lima wilayah. Membandingkan nilai gambar patch dan pangkasan.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: Gambar area yang dipangkas cocok dengan patch yang sesuai dengan gambar pangkasan.
test_ev_compensation
Menguji apakah kompensasi nilai eksposur (EV) diterapkan. Ujian ini terdiri dari bagian dasar dan bagian lanjutan.
Bagian dasar menguji apakah kompensasi EV diterapkan menggunakan rentang
yang dibuat dengan CONTROL_AE_COMPENSATION_STEP. Delapan bingkai diambil pada setiap
nilai kompensasi.
Bagian lanjutan meningkatkan eksposur dalam delapan langkah, dan memeriksa kecerahan yang diukur versus kecerahan yang diharapkan. Nilai yang diharapkan dihitung dari kecerahan gambar tanpa kompensasi EV yang diterapkan dan nilai yang diharapkan akan jenuh jika nilai yang dihitung melebihi rentang nilai gambar sebenarnya. Pengujian akan gagal jika nilai yang diharapkan dan nilai yang diukur tidak cocok atau jika gambar mengalami overexposure dalam lima langkah.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATIONandroid.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCKandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.hardware.camera2.CaptureResult#TONEMAP_MODE
Lulus bagian dasar: Gambar menunjukkan peningkatan eksposur tanpa eksposur berlebih dalam lima langkah.
Gambar 18. test_ev_compensation_basic.
Lulus bagian lanjutan: Menangkap peningkatan luma seiring peningkatan setelan kompensasi EV. Delapan frame yang diambil untuk setiap setelan kompensasi EV memiliki nilai luma yang stabil.
Gambar 19. test_ev_compensation_advanced_plot_means.
test_exposure_x_iso
Menguji apakah eksposur konstan tercapai saat ISO dan waktu eksposur bervariasi. Mengambil
serangkaian foto yang memiliki ISO dan waktu eksposur yang dipilih untuk saling menyeimbangkan.
Hasilnya akan memiliki kecerahan yang sama, tetapi seiring berjalannya urutan, gambar akan
menjadi lebih bising. Memverifikasi bahwa nilai rata-rata piksel sampel saling berdekatan. Memastikan
bahwa gambar tidak dibatasi ke 0 atau 1 (yang akan membuatnya terlihat seperti garis
datar). Pengujian juga dapat dijalankan dengan image RAW dengan menetapkan flag debug di
file konfigurasi Anda.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Gambar memiliki kecerahan yang sama, tetapi menjadi lebih bising dengan ISO yang lebih tinggi. Bidang RGB akan datar jika nilai ISO*eksposur konstan di seluruh ruang penguatan yang diuji.
Mekanisme kegagalan: Pada gambar berikut, seiring meningkatnya nilai pengali penguatan (sumbu x), nilai rata-rata bidang RGB yang dinormalisasi (sumbu y) mulai menyimpang dari nilai pengali penguatan rendah.
Gambar 20. test_exposure_plot_means.
Gambar 21. test_exposure_mult=1,00.
Gambar 22. test_exposure_mult=64,00.
test_latching
Menguji apakah setelan (eksposur dan penguatan) terkunci pada frame yang tepat untuk kamera FULL dan
LEVEL_3. Mengambil serangkaian foto menggunakan permintaan berturut-turut,
dengan memvariasikan parameter permintaan pengambilan di antara foto. Memeriksa apakah image
memiliki properti yang diharapkan.
API yang diuji:
Lulus: Gambar [2, 3, 6, 8, 10, 12, 13] memiliki ISO atau eksposur yang lebih tinggi dan muncul dengan rata-rata RGB yang lebih tinggi dalam plot pada gambar berikut.
Gambar 23. Contoh plot test_latching.
Gambar 24. test_latching i=00.
Gambar 25. test_latching i=01.
Gambar 26. test_latching i=02.
Gambar 27. test_latching i=03.
Gambar 28. test_latching i=04.
Gambar 29. test_latching i=05.
Gambar 30. test_latching i=06.
Gambar 31. test_latching i=07.
Gambar 32. test_latching i=08.
Gambar 33. test_latching i=09.
Gambar 34. test_latching i=10.
Gambar 35. test_latching i=11.
Gambar 36. test_latching i=12.
test_linearity
Menguji apakah pemrosesan perangkat dapat dibalik menjadi piksel linear. Mengambil urutan bidikan dengan perangkat yang diarahkan ke target yang seragam.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCKandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: Nilai R, G, B harus meningkat secara linear seiring dengan peningkatan sensitivitas.
Gambar 37. Contoh rata-rata plot test_linearity.
test_locked_burst
Menguji penguncian 3A dan burst YUV (menggunakan setelan otomatis). Pengujian ini dirancang untuk lulus
bahkan pada perangkat terbatas yang tidak memiliki MANUAL_SENSOR atau PER_FRAME_CONTROLS.
Pengujian ini memeriksa konsistensi gambar YUV, sedangkan pemeriksaan kecepatan frame ada di CTS.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Lulus: Pengambilan gambar terlihat konsisten.
Gambar 38. Contoh frame0 test_locked_burst.
Gambar 39. Contoh frame1 test_locked_burst.
Gambar 40. Contoh frame2 test_locked_burst.
scene1_2
scene 1_2 adalah salinan scene 1_1 yang identik secara fungsional, yang menerapkan struktur subscene untuk mengurangi durasi scene 1 yang diperpanjang.
test_param_color_correction
Menguji apakah parameter android.colorCorrection.* diterapkan saat ditetapkan.
Mengambil foto dengan nilai transformasi dan penguatan yang berbeda, serta menguji apakah foto tersebut terlihat
berbeda. Transformasi dan penguatan dipilih untuk membuat output
semakin merah atau biru. Menggunakan tonemap linear.
Pemetaan nuansa adalah teknik yang digunakan dalam pemrosesan gambar untuk memetakan satu set warna ke set warna lain untuk memperkirakan tampilan gambar Rentang Dinamis Tinggi (HDR) dalam media yang memiliki rentang dinamis yang lebih terbatas.
API yang diuji:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Lulus: Nilai R dan B meningkat sesuai dengan transformasi.
Gambar 41. Contoh rata-rata plot test_param_color_correction.
Pada gambar berikut, sumbu x adalah permintaan pengambilan: 0 = unity, 1 = peningkatan merah, dan 2 = peningkatan biru.
Gambar 42. Contoh unity test_param_color_correction req=0.
Gambar 43. Contoh penguatan merah req=1 test_param_color_correctness.
Gambar 44. Contoh penguatan warna biru test_param_color_correction req=2.
test_param_flash_mode
Menguji apakah parameter android.flash.mode diterapkan. Menyetel eksposur secara manual
ke sisi gelap, sehingga terlihat jelas apakah flash diaktifkan
atau tidak, dan menggunakan tonemap linear. Memeriksa bagian tengah dengan gambar ubin untuk melihat
apakah ada gradien besar yang dibuat untuk memverifikasi apakah flash diaktifkan.
API yang diuji:
Lulus: Bagian tengah gambar ubin memiliki gradien besar, yang berarti flash menyala.
Gambar 45. Contoh test_param_flash_mode 1.
Gambar 46. Contoh satu kartu test_param_flash_mode.
Gambar 47. Contoh test_param_flash_mode 2.
Gambar 48. Contoh dua kartu test_param_flash_mode.
test_param_noise_reduction
Menguji apakah parameter android.noiseReduction.mode diterapkan dengan benar
saat ditetapkan. Mengambil gambar dengan kamera dalam kondisi pencahayaan redup. Menggunakan penguatan analog yang tinggi untuk
membantu memastikan gambar yang diambil memiliki noise. Mengambil tiga gambar, untuk NR nonaktif,
cepat, dan berkualitas tinggi. Juga mengambil gambar dengan penguatan rendah dan NR nonaktif, serta
menggunakan varians ini sebagai dasar pengukuran. Makin tinggi rasio sinyal terhadap derau (SNR), makin baik kualitas gambar.
API yang diuji:
Lulus: SNR bervariasi dengan mode pengurangan bising yang berbeda dan berperilaku serupa dengan grafik berikut:
Gambar 49. Contoh SNR plot test_param_noise_reduction.
0: NONAKTIF, 1: CEPAT, 2: HQ, 3: MIN , 4: ZSL
Gambar 50. Contoh test_param_noise_reduction penguatan tinggi nr=0.
Gambar 51. Contoh test_param_noise_reduction penguatan tinggi nr=1.
Gambar 52. Contoh test_param_noise_reduction penguatan tinggi nr=2.
Gambar 53. Contoh test_param_noise_reduction penguatan tinggi nr=3.
Gambar 54. Contoh penguatan rendah test_param_noise_reduction.
test_param_shading_mode
Menguji apakah parameter android.shading.mode diterapkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Lulus: Mode shading dialihkan dan peta shading lensa diubah seperti yang diharapkan.
Gambar 55. Peta bayangan lensa test_param_shading_mode, contoh mode 0 loop 0.
Gambar 56. Peta bayangan lensa test_param_shading_mode, contoh mode 1 loop 0.
Gambar 57. Peta bayangan lensa test_param_shading_mode, contoh mode 2 loop 0.
test_param_tonemap_mode
Menguji apakah parameter android.tonemap.mode diterapkan. Menerapkan kurva pemetaan rona yang berbeda ke setiap saluran R, G, B, dan memeriksa apakah gambar output dimodifikasi seperti yang diharapkan. Pengujian ini terdiri dari dua pengujian, test1 dan test2.
API yang diuji:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus:
test1: Kedua gambar memiliki tonemap linear, tetapin=1memiliki gradien yang lebih curam. Saluran G (hijau) lebih terang untuk gambarn=1.test2: Tonemap yang sama, tetapi panjangnya berbeda. Gambar sama.
Gambar 58. test_param_tonemap_mode dengan n=0.
Gambar 59. test_param_tonemap_mode dengan n=1.
test_post_raw_sensitivity_boost
Memeriksa peningkatan sensitivitas mentah pasca-pemrosesan. Mengambil kumpulan gambar mentah dan YUV dengan sensitivitas berbeda, memposting kombinasi peningkatan sensitivitas mentah, dan memeriksa apakah rata-rata piksel output cocok dengan setelan permintaan.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGEandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOSTandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Gambar RAW menjadi lebih gelap seiring peningkatan boost, sedangkan kecerahan gambar YUV tetap konstan.
Gambar 60. Contoh test_post_raw_sensitivity_boost raw s=3583 boost=0100.
Gambar 61. Contoh test_post_raw_sensitivity_boost raw s=1792 boost=0200.
Gambar 62. Contoh test_post_raw_sensitivity_boost raw s=0896 boost=0400.
Gambar 63. Contoh test_post_raw_sensitivity_boost raw s=0448 boost=0800.
Gambar 64. Contoh test_post_raw_sensitivity_boost raw s=0224 boost=1600.
Gambar 65. Contoh test_post_raw_sensitivity_boost raw s=0112 boost=3199.
Gambar 66. Contoh plot mentah test_post_raw_sensitivity_boost.
Gambar 67. Contoh test_post_raw_sensitivity_boost YUV s=0112 boost=3199.
Gambar 68. Contoh test_post_raw_sensitivity_boost YUV s=0448 boost=0800.
Gambar 69. Contoh test_post_raw_sensitivity_boost YUV s=0896 boost=0400.
Gambar 70. Contoh test_post_raw_sensitivity_boost YUV s=1792 boost=0200.
Gambar 71. Contoh test_post_raw_sensitivity_boost YUV s=3585 boost=0100.
Gambar 72. Contoh test_post_raw_sensitivity_boost_yuv_plot_means.
test_raw_exposure
Mengambil serangkaian gambar mentah dengan waktu eksposur yang meningkat dan mengukur nilai piksel.
API yang diuji:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Lulus: Meningkatkan ISO (gain) membuat piksel lebih sensitif terhadap cahaya, sehingga plot bergerak ke kiri.
Gambar 73. Contoh test_raw_exposure ISO=55.
10⁰ adalah 1 md, 10¹ adalah 10 md, dan 10⁻¹ adalah 0,1 md.
Gambar 74. Contoh test_raw_exposure ISO=132.
Gambar 75. Contoh test_raw_exposure ISO=209.
Gambar 76. Contoh test_raw_exposure ISO=286.
Gambar 77. Contoh test_raw_exposure ISO=363.
Gambar 78. Contoh test_raw_exposure ISO=440.
test_reprocess_noise_reduction
Pengujian bahwa android.noiseReduction.mode diterapkan untuk permintaan pemrosesan ulang.
Mengambil gambar yang diproses ulang dengan kamera yang menyala redup. Menggunakan penguatan analog yang tinggi
untuk memverifikasi bahwa gambar yang diambil memiliki noise. Mengambil tiga gambar yang diproses ulang,
untuk NR nonaktif, cepat, dan berkualitas tinggi. Mengambil gambar yang diproses ulang dengan penguatan rendah
dan NR nonaktif, serta menggunakan variansnya sebagai dasar pengukuran.
API yang diuji:
Lulus: FAST >= OFF, HQ >= FAST, dan HQ >> OFF.
Gambar 79. Contoh plot mode SNR versus NR standar.
test_tonemap_sequence
Menguji urutan bidikan dengan kurva tonemap yang berbeda. Mengambil 3 foto manual dengan tonemap linear. Mengambil 3 foto manual dengan tonemap default. Menghitung delta antara setiap pasangan frame yang berurutan.
API yang diuji:
Lulus: Ada tiga frame yang identik, diikuti dengan tiga frame identik yang berbeda.
Gambar 80. Contoh test_tonemap_sequence i=0.
Gambar 81. Contoh test_tonemap_sequence i=1.
Gambar 82. Contoh test_tonemap_sequence i=2.
Gambar 83. Contoh test_tonemap_sequence i=3.
Gambar 84. Contoh test_tonemap_sequence i=4.
Gambar 85. Contoh test_tonemap_sequence i=5.
test_yuv_jpeg_all
Menguji apakah semua ukuran dan format yang dilaporkan untuk pengambilan gambar berfungsi. Menggunakan permintaan manual dengan tonemap 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_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#JPEG
Lulus: Semua pusat gambar memiliki perbedaan root mean square (RMS) (nilai sinyal) maksimum dalam gambar yang dikonversi RGB dengan 3% gambar YUV resolusi tertinggi.
Gambar 86. Contoh test_yuv_jpeg_all.
test_yuv_plus_dng
Menguji apakah ukuran dan format yang dilaporkan untuk pengambilan gambar berfungsi.
API yang diuji:
Lulus: Pengujian selesai dan menampilkan gambar yang diminta.
Gambar 87. Contoh test_yuv_plus_dng.
scene1_3
scene 1_3 adalah salinan scene 1_1 yang identik secara fungsional, yang menerapkan struktur subscene untuk mengurangi durasi scene 1 yang diperpanjang.
test_capture_result
Menguji apakah data yang valid ditampilkan dalam objek CaptureResult. Pengujian ini
terdiri dari pengambilan otomatis, pengambilan manual, dan pengambilan otomatis kedua.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AF_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAPandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: Metadata valid untuk semua pengambilan dan setelan manual tidak bocor ke pengambilan otomatis kedua. Memetakan koreksi bayangan lensa untuk pengambilan gambar.
Gambar 88. test_capture_result_plot_lsc_auto_ch0.
test_dng_noise_model
Memverifikasi bahwa parameter model mentah DNG sudah benar. Plot ini menggambarkan varians yang diukur dari patch tengah kartu abu-abu dalam bidikan mentah yang diambil pada berbagai sensitivitas, dan membandingkan nilai ini dengan varians yang diharapkan pada setiap sensitivitas oleh model derau DNG di HAL kamera (berdasarkan parameter O,S yang ditampilkan dalam objek hasil pengambilan). Untuk mengetahui detail selengkapnya tentang model derau DNG, download dokumen berikut tentang Model Derau DNG.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Parameter model mentah DNG sudah benar. Nilai RGB yang diharapkan cocok dengan nilai RGB aktual yang diukur.
Gambar 89. test_dng_noise_model_plog.
test_jpeg
Pengujian yang mengonversi gambar YUV dan gambar JPEG perangkat terlihat sama. Pengujian mengambil 10% bagian tengah gambar dan menghitung nilai RGB, serta memverifikasi bahwa nilai tersebut cocok.
API yang diuji:
Lulus: Perbedaan RGB rata-rata antara setiap gambar kurang dari 3%.
Gambar 90. test_jpeg_fmt=jpg.jpg.
Gambar 91. test_jpeg=fmt=yuv.jpg.
test_raw_burst_sensitivity
Mengambil serangkaian gambar mentah dengan penguatan yang meningkat dan mengukur noise. Mengambil foto khusus RAW, dalam burst.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Lulus: Setiap bidikan lebih bising daripada bidikan sebelumnya, karena penguatan meningkat.
Menggunakan varians sel petak statistik pusat.
Gambar 92. test_raw_burst_sensitivity_variance.
test_raw_sensitivity
Mengambil serangkaian gambar mentah dengan sensitivitas yang meningkat dan mengukur derau (varians) di bagian tengah 10% gambar. Menguji bahwa setiap bidikan lebih bising daripada bidikan sebelumnya.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Lulus: Varians meningkat dengan setiap bidikan.
Gambar 93. test_raw_sensitivity_variance.
test_yuv_plus_jpeg
Pengujian yang mengambil satu frame sebagai output YUV dan JPEG. Menggunakan permintaan manual dengan tonemap linear sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul image_processing_utils.
API yang diuji:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#JPEG
Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan RMS (nilai sinyal) kurang dari 1%.
Gambar 94. test_yuv_plus_jpeg dengan format JPEG.
Gambar 95. test_yuv_plus_jpeg dengan format YUV.
test_yuv_plus_raw
Pengujian yang mengambil satu frame sebagai output mentah (mentah 10-bit dan 12-bit) dan YUV jika didukung. Menggunakan permintaan manual dengan tonemap linear sehingga raw dan
YUV diharapkan sama. Membandingkan nilai RGB 10% tengah gambar yang dikonversi RGB. Logsandroid.shading.mode.
API yang diuji:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAPandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_MODEandroid.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#RAW10android.graphics.ImageFormat#RAW12
Lulus: Gambar YUV dan mentah serupa dan memiliki perbedaan RMS (nilai root-mean-square dari sinyal) kurang dari 3,5%.
Gambar 96. test_yuv_plus_raw_shading=1_raw.jpg.
Gambar 97. test_yuv_plus_raw_shading=1_yuv.jpg.
test_sensitivity_priority
Menguji CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
di berbagai setelan ISO untuk mengonfirmasi korelasi antara ISO yang lebih tinggi dan
peningkatan tingkat noise.
API yang diuji:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITYandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_MODEandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ONandroid.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Lulus: ISO yang lebih tinggi menghasilkan peningkatan tingkat derau.
Kriteria pengabaian pengujian
Pengujian test_sensitivity_priority.py akan dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level) 35 atau lebih rendah. - Perangkat tidak memberitahukan
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITYdiCONTROL_AE_AVAILABLE_PRIORITY_MODES.
test_exposure_time_priority
Menguji CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
di berbagai waktu eksposur, memeriksa kecerahan yang stabil dalam rentang
yang dapat dikompensasi oleh ISO.
API yang diuji:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITYandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_MODEandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ONandroid.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Lulus: Kecerahan stabil (dalam batas toleransi) di seluruh waktu eksposur jika ISO berada dalam rentang kompensasinya.
Kriteria pengabaian pengujian
Pengujian test_exposure_time_priority akan dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level) 35 atau lebih rendah. - Perangkat tidak memberitahukan
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITYdiCONTROL_AE_AVAILABLE_PRIORITY_MODES.
scene2_a
scene2_a memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah-wajah
dipilih untuk memiliki berbagai warna kulit. Diagram harus memiliki
orientasi yang benar agar deteksi wajah berfungsi secara optimal.
Gambar 98. Contoh scene2_a.
test_autoframing
Menguji perilaku framing otomatis perangkat kamera. Melakukan zoom besar sehingga
tidak ada wajah dalam adegan yang terlihat, mengaktifkan mode framing otomatis dengan
menyetel AUTOFRAMING di CaptureRequest ke True, dan memverifikasi apakah semua
wajah dalam adegan asli dapat dideteksi saat statusnya konvergen (yaitu, saat AUTOFRAMING_STATE di CaptureResult disetel ke
AUTOFRAMING_STATE_CONVERGED).
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Lulus: Ketiga wajah terdeteksi.
test_display_p3
Menguji pengambilan
Display P3
dalam JPEG menggunakan ColorSpaceProfiles API. Menguji apakah JPEG yang diambil memiliki profil ICC yang sesuai di header-nya, dan apakah gambar berisi warna di luar gamut sRGB.
API yang diuji:
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
Lulus: JPEG berisi profil ICC Display P3 dan warna di luar gamut sRGB.
test_effects
Mengambil frame untuk efek kamera yang didukung dan memeriksa apakah efek tersebut dibuat
dengan benar. Pengujian hanya memeriksa efek OFF dan MONO, tetapi menyimpan gambar untuk
semua efek yang didukung.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTSandroid.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Lulus: Mengambil gambar adegan dengan efek OFF dan gambar monokrom
dengan efek yang ditetapkan ke MONO.
Gambar 99. test_effects_MONO.
test_exposure_keys_consistent
Pengujian ini membandingkan luma rata-rata pengambilan gambar dengan AE yang diaktifkan dengan
pengambilan gambar dengan AE yang dinonaktifkan yang menerapkan parameter eksposur secara manual (sensitivitas,
waktu eksposur, durasi frame, peningkatan sensitivitas pasca-raw) yang diterima dalam
CaptureResult
pengambilan gambar dengan AE yang diaktifkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOSTandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Lulus: Perbedaan relatif dalam luma antara kedua pengambilan gambar kurang dari 4 persen.
test_format_combos
Menguji berbagai kombinasi format output.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAPandroid.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()android.hardware.camera2.CameraCaptureSession#captureBurst()
Lulus: Semua kombinasi berhasil diambil.
test_num_faces
Menguji deteksi wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah.
Gambar 100. Contoh mode deteksi wajah test_num_faces 1.
test_reprocess_uv_swap
Menguji apakah pemrosesan ulang YUV tidak menukar bidang U dan V. Hal ini dideteksi dengan menghitung jumlah perbedaan absolut (SAD) antara gambar yang diproses ulang dan gambar yang tidak diproses ulang. Jika menukar bidang U dan V output dari pengambilan yang diproses ulang menghasilkan peningkatan SAD, output diasumsikan memiliki bidang U dan V yang benar.
API yang diuji:
android.hardware.camera2.CameraDevice#createCaptureSessionandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSINGandroid.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Lulus: Bidang U dan V tidak tertukar.
Gambar 101. Contoh test_reprocess_uv_swap.
scene2_b
scene2_b memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah-wajah
dipilih untuk memiliki berbagai warna kulit. Diagram harus memiliki
orientasi yang benar agar deteksi wajah berfungsi secara optimal.
test_preview_num_faces
Menguji deteksi wajah dalam pratinjau dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah di kotak pembatas wajah.
Gambar 102. Contoh mode deteksi wajah test_num_faces 1.
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 mengambil permintaan platform ganda. Mengonversi kedua
gambar menjadi array RGB dan menghitung perbedaan root mean square (RMS) 3D
antara kedua gambar tersebut.
Selain itu, pengujian ini memverifikasi bahwa output YUV untuk semua kasus penggunaan
aliran yang didukung cukup mirip dengan YUV dengan kasus penggunaan STILL_CAPTURE.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureRequest#JPEG_QUALITYandroid.graphics.ImageFormat#JPEG
Lulus: Gambar YUV dan JPEG untuk kasus penggunaan STILL_CAPTURE memiliki perbedaan RMS (nilai root-mean-square dari sinyal) kurang dari 3%; gambar YUV untuk semua kasus penggunaan yang didukung memiliki perbedaan CIELAB kurang dari 4% dari gambar YUV dengan kasus penggunaan STILL_CAPTURE.
scene2_c
test_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah.
Gambar 103. Contoh mode deteksi wajah test_num_faces.
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 (3000K) untuk kedua kamera utama.
test_camera_launch_perf_class
Menguji latensi peluncuran kamera untuk class performa S seperti yang ditentukan bagian 2.2.7.2 Kamera dalam CDD.
Lulus: HARUS memiliki latensi startup camera2 (buka kamera ke frame pratinjau pertama) < 600 md seperti yang diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000K) untuk kedua kamera utama.
test_default_camera_hdr
Menguji bahwa pengambilan gambar kamera default adalah Ultra HDR untuk class performa 15 seperti yang ditentukan dalam bagian 2.2.7.2 Kamera CDD.
Lulus: Pengambilan paket kamera default HARUS Ultra HDR untuk perangkat class performa 15.
scene2_d
test_preview_num_faces
Menguji deteksi wajah dalam pratinjau dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah di kotak pembatas wajah.
scene2_e
test_continuous_picture
50 frame resolusi VGA diambil dengan setelan pertama permintaan pengambilan
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureResult#CONTROL_AF_STATEandroid.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Lulus: Sistem 3A stabil pada akhir pengambilan 50 frame.
test_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan 3 wajah.
scene2_f
scene2_f memiliki tiga wajah dengan latar belakang putih dan pakaian putih. Wajah-wajah tersebut
memiliki berbagai rona kulit dan kontras tinggi dengan latar belakang.
Gambar 104. Contoh scene2_f.
test_preview_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah di kotak pembatas wajah.
Gambar 105. Contoh test_num_faces_fd_mode_1.
scene2_g
scene2_g memiliki tiga wajah profil dengan latar belakang putih dan pakaian putih.
Wajah-wajah tersebut memiliki berbagai rona kulit dan kontras tinggi dengan latar belakang.
Gambar 106. Contoh scene2_g.
test_preview_num_faces
Menguji deteksi wajah dengan peningkatan keragaman warna kulit dalam adegan wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah di kotak pembatas wajah.
Gambar 107. Contoh test_preview_num_faces.
scene3
scene3 menggunakan diagram ISO12233, dan sebagian besar pengujian menggunakan metode ekstraktor diagram untuk
menemukan diagram dalam tampilan. Oleh karena itu, sebagian besar gambar yang disimpan tidak
memiliki batas seperti gambar untuk adegan 1, 2, atau 4, tetapi hanya diagram. Diagram harus dalam orientasi yang benar agar pencari diagram berfungsi secara optimal.
Di Android 17 dan yang lebih baru, scene3 menggunakan penanda ArUco
untuk deteksi diagram.
Gambar 108. Diagram scene3.
test_edge_enhancement
Menguji apakah parameter android.edge.mode diterapkan dengan benar. Mengambil
gambar non-pemrosesan ulang untuk setiap mode tepi dan menampilkan ketajaman gambar
output dan metadata hasil pengambilan. Memproses permintaan pengambilan dengan mode tepi, sensitivitas, waktu eksposur, jarak fokus, dan parameter platform output tertentu. Di Android 17 dan yang lebih baru, gunakan penanda ArUco
untuk menentukan area diagram yang berisi tepi tajam yang diperlukan.
Lulus: Mode HQ (2) lebih tajam daripada mode OFF (0). FAST mode (1) lebih tajam
daripada mode OFF. Mode HQ lebih tajam atau sama dengan mode FAST.
API yang diuji:
Parameter kamera yang terpengaruh:
EDGE_MODE
Gambar 109. Contoh test_edge_enhancement edge=0.
Gambar 110. Contoh test_edge_enhancement edge=1 (mode cepat).
Gambar 111. Contoh test_edge_enhancement edge=2 (mode kualitas tinggi).
test_flip_mirror
Menguji apakah gambar diorientasikan dengan benar sesuai dengan 7.5.2 Kamera Depan di CDD. Di Android 17 dan yang lebih baru, menggunakan penanda ArUco untuk memvalidasi kehadiran dan orientasi diagram. Gambar yang dicerminkan, dibalik, atau diputar dapat diidentifikasi dengan fitur berlian di dekat bagian tengah.
Lulus: Semua penanda terdeteksi dan sejajar dengan benar. Gambar tidak dibalik, dicerminkan, atau diputar.
Gambar 112. Contoh patch scene test_flip_mirror.
test_imu_drift
Menguji apakah unit pengukuran inersia (IMU) memiliki output yang stabil selama 30 detik saat perangkat tidak bergerak dan mengambil pratinjau definisi tinggi.
API yang diuji:
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_GYROSCOPEandroid.hardware.Sensor#TYPE_ROTATION_VECTOR
Lulus:
- Penyimpangan giroskop kurang dari 0,01 rad selama waktu pengujian.
- Varians pembacaan giroskop kurang dari 1E-7 rad2/dtk2/Hz selama waktu pengujian.
- Penyimpangan vektor rotasi kurang dari 0,01 rad selama waktu pengujian.
- (Belum diwajibkan) Pergeseran giroskop kurang dari 1 derajat per detik.
Gambar 113. Contoh pergeseran giroskop test_imu_drift.
Gambar 114. Contoh pergeseran vektor rotasi test_imu_drift.
test_landscape_to_portrait
Menguji apakah penggantian lanskap ke potret berfungsi dengan benar untuk sensor berorientasi lanskap.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODESandroid.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATIONandroid.hardware.camera2.CameraManager#getCameraCharacteristics
Lulus: Pengujian menemukan diagram dengan rotasi yang diharapkan (0 derajat saat penggantian lanskap ke potret dinonaktifkan, 90 derajat saat diaktifkan).
Gambar 115. Contoh test_landscape_to_portrait.
test_lens_movement_reporting
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 sehingga ketajaman menurun. Ketajaman akhirnya stabil saat lensa bergerak ke posisi akhir.
Flag gerakan lensa harus dinyatakan di semua frame yang ketajamannya berada di antara ketajaman dalam beberapa frame pertama dengan lensa diam pada jarak fokus optimal, dan beberapa frame terakhir dengan lensa diam pada jarak fokus minimum. Frame persis saat lensa bergerak tidaklah penting: yang penting adalah flag gerakan dinyatakan saat lensa bergerak.
Di Android 17 dan yang lebih baru, pengujian ini menggunakan penanda ArUco untuk menentukan area diagram yang berisi tepi tajam yang diperlukan. Metode ini memberikan deteksi yang stabil untuk kamera dari aplikasi Ultra-Wide (UW) hingga tele.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCEandroid.hardware.camera2.CaptureResult#LENS_STATEandroid.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCEandroid.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Lulus: Flag gerakan lensa adalah True dalam frame dengan perubahan ketajaman.
Mekanisme kegagalan:
lens_moving: True(android.hardware.camera2.CaptureResult#LENS_STATE= 1) ditest_log.DEBUGhanya dinyatakan dalam frame yang ketajamannya tidak berubah.- Frame dengan
lens_moving: False(android.hardware.camera2.CaptureResult#LENS_STATE= 0) ditest_log.DEBUGmemiliki perbedaan ketajaman dibandingkan dengan beberapa frame pertama pada jarak fokus optimal atau beberapa frame terakhir pada jarak fokus minimum.
test_reprocess_edge_enhancement
Menguji apakah metode pemrosesan ulang yang didukung untuk peningkatan tepi berfungsi dengan baik. Memproses permintaan pengambilan dengan mode tepi pemrosesan ulang tertentu dan membandingkan berbagai mode untuk pengambilan dengan mode tepi pemrosesan ulang dinonaktifkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#EDGE_MODEandroid.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 antara berbagai mode serupa.
Gambar 116. Contoh plot test_reprocess_edge_enhancement.
scene4
scene4 terdiri dari lingkaran hitam dengan latar belakang putih di dalam persegi.
Pengujian di scene4 dapat sensitif terhadap penyelarasan, jadi mulai Android
15, Anda dapat menggunakan check_alignment.py di
direktori alat untuk mengaktifkan pemeriksaan penyelarasan DUT dan diagram.
Gambar 117. Contoh scene4.
test_30_60fps_preview_fov_match
Menguji apakah video pratinjau 30 FPS dan 60 FPS memiliki FoV yang sama. Pengujian ini merekam dua video, satu dengan 30 FPS dan satu lagi dengan 60 FPS. Frame representatif dipilih dari setiap video dan dianalisis untuk memverifikasi bahwa perubahan FoV dalam kedua video sesuai dengan spesifikasi. Menguji apakah rasio aspek lingkaran tetap konstan, pusat lingkaran tetap stabil, dan radius lingkaran tetap konstan.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Lulus: Gambar tidak diregangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan perubahan rasio aspek maksimum antara video 30 FPS dan 60 FPS tidak lebih dari 7,5%
Mekanisme kegagalan:
- Lingkaran dari video 30 FPS memiliki ukuran yang sangat berbeda dengan video 60 FPS.
- Lingkaran pada gambar yang diambil terdistorsi oleh pipeline pemrosesan.
- Lingkaran dalam gambar yang diambil dipangkas karena permintaan pengambilan rasio aspek ekstrem mengurangi tinggi atau lebar gambar.
- Lingkaran dalam gambar yang diambil memiliki pantulan di tengah dan tidak tampak terisi penuh.
test_aspect_ratio_and_crop
Menguji apakah gambar terdistorsi atau terpotong secara tidak terduga dalam pipeline gambar. Mengambil foto lingkaran dalam semua format. Memverifikasi bahwa lingkaran tidak terdistorsi, lingkaran tidak berpindah dari tengah gambar, dan lingkaran tidak berubah ukuran secara tidak benar dengan rasio aspek atau resolusi yang berbeda.
API yang diuji:
android.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Lulus: Gambar tidak diregangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV maksimum yang memungkinkan dipertahankan.
Mekanisme kegagalan:
- Kamera tidak sejajar dengan lingkaran yang ditampilkan di tablet di tengah tampilan yang diambil.
- Lingkaran pada gambar yang diambil terdistorsi oleh pipeline pemrosesan.
- Gambar beresolusi rendah dipangkas dua kali dalam pipeline gambar, sehingga menciptakan FoV yang berbeda antara gambar beresolusi tinggi dan rendah.
- Lingkaran dalam gambar yang diambil dipangkas karena permintaan pengambilan rasio aspek ekstrem mengurangi tinggi atau lebar gambar.
- Lingkaran dalam gambar yang diambil memiliki pantulan di tengah dan tidak tampak terisi penuh.
test_multi_camera_alignment
Menguji parameter kalibrasi kamera yang terkait dengan penempatan kamera untuk sistem multi-kamera. Menggunakan subkamera fisik multikamera, mengambil gambar dengan salah satu kamera fisik. Menemukan 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 koordinat asli sebagai pemeriksaan validitas. Membandingkan ukuran lingkaran untuk memeriksa apakah panjang fokal kamera berbeda.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.hardware.camera2.CameraCharacteristics#LENS_DISTORTIONandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATIONandroid.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATIONandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Lulus: Pusat dan ukuran lingkaran sesuai harapan dalam gambar yang diproyeksikan dibandingkan dengan gambar yang diambil menggunakan data kalibrasi kamera dan panjang fokal.
Mekanisme kegagalan:
LENS_INTRINSIC_CALIBRATION,LENS_POSE_TRANSLATION, danLENS_POSE_ROTATIONadalah nilai desain dan bukan data kalibrasi yang sebenarnya.- Sistem kamera tidak sesuai untuk penyiapan pengujian, misalnya, menguji sistem kamera lebar dan ultra-lebar dengan rig pengujian RFoV. Untuk informasi selengkapnya, lihat FAQ ITS-in-a-box Kamera P1.
test_preview_aspect_ratio_and_crop
Serupa dengan pengujian test_aspect_ratio_and_crop
untuk pengambilan gambar diam, pengujian ini memeriksa format pratinjau yang didukung untuk memverifikasi bahwa
frame pratinjau tidak diregangkan atau dipangkas secara tidak tepat. Memastikan bahwa
rasio aspek lingkaran tidak berubah, gambar yang dipangkas mempertahankan lingkaran di
tengah bingkai, dan ukuran lingkaran tidak berubah untuk format konstan atau
dengan resolusi yang berbeda (pemeriksaan FoV).
API yang diuji:
android.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATIONandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Lulus: Gambar tidak diregangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV maksimum yang memungkinkan dipertahankan.
test_preview_stabilization_fov
Memeriksa ukuran pratinjau yang didukung untuk membantu 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 memverifikasi bahwa perubahan FoV dalam kedua video tersebut sesuai dengan spesifikasi.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Lulus: Rasio aspek lingkaran tetap konstan, lokasi tengah lingkaran tetap stabil, dan ukuran lingkaran tidak berubah lebih dari 20%.
test_video_aspect_ratio_and_crop
Mengambil video lingkaran di dalam persegi dalam semua format video. Mengekstrak keyframe, dan memverifikasi bahwa rasio aspek lingkaran tidak berubah, gambar yang dipangkas mempertahankan lingkaran di tengah, dan ukuran lingkaran tidak berubah untuk format konstan atau dengan resolusi yang berbeda (pemeriksaan FoV).
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
Lulus: Frame video tidak diregangkan, pusat frame tidak berbeda lebih dari 3%, dan FoV maksimum yang memungkinkan dipertahankan.
scene6
scene6 adalah petak penanda ArUco yang dapat diidentifikasi secara unik.
Pengujian di scene6 dapat sensitif terhadap penyelarasan, jadi mulai versi
15, Anda dapat menggunakan check_alignment.py di
direktori alat untuk mengaktifkan pemeriksaan penyelarasan DUT dan diagram.
Gambar 118. Contoh scene6.
test_in_sensor_zoom
Menguji perilaku fitur zoom dalam sensor kamera, yang menghasilkan gambar mentah yang dipangkas.
Dengan kasus penggunaan streaming yang ditetapkan ke
CROPPED_RAW,
pengujian akan mengambil dua gambar dalam rentang zoom, yaitu gambar mentah FoV penuh
dan gambar mentah yang dipangkas. Pengujian ini mengonversi gambar menjadi array RGB, menurunkan skala gambar mentah yang dipangkas berukuran penuh ke ukuran yang dilaporkan oleh SCALER_RAW_CROP_REGION, dan menghitung perbedaan RMS 3D antara kedua gambar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAWandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Lulus: Perbedaan RMS 3D antara gambar mentah yang dipangkas dan diskalakan ke bawah dengan gambar mentah FoV penuh kurang dari nilai minimum yang ditetapkan dalam pengujian.
test_zoom
Menguji perilaku zoom kamera dari lensa ultrawide ke lensa lebar. Mengambil gambar dalam rentang zoom dan memeriksa apakah penanda ArUco menjadi lebih besar saat kamera memperbesar. Pengujian ini juga memeriksa apakah posisi penanda tengah berubah secara dapat diprediksi pada setiap pengambilan gambar. Jarak dari pusat penanda tengah ke pusat gambar dapat berubah pada kecepatan konstan sehubungan dengan rasio zoom hingga peralihan kamera fisik, atau dapat berubah secara monoton ke arah lokasi penanda yang sama setelah peralihan kamera fisik. Aplikasi Kamera Jetpack (JCA) harus diinstal di perangkat sebelum pengujian.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif penanda ArUco yang diambil akurat terhadap rasio zoom yang diminta untuk memverifikasi bahwa kamera melakukan zoom dengan benar, dan jarak penanda ke pusat gambar berubah sesuai dengan kriteria yang dinyatakan dalam deskripsi pengujian.
Gambar 119. test_zoom untuk menemukan kontur penanda ArUco yang paling dekat dengan pusat.
test_low_latency_zoom
Menguji perilaku zoom latensi rendah kamera. Mengambil gambar dalam rentang zoom
dengan android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM), dan memeriksa
apakah penanda dalam gambar output cocok dengan rasio zoom dalam metadata
pengambilan gambar. Sesi pengambilan gambar kamera yang sama digunakan untuk menggabungkan 3A dan
mengambil gambar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDESandroid.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Lulus: Ukuran relatif penanda yang diambil akurat terhadap metadata hasil rasio zoom.
test_preview_video_zoom_match
Menguji bahwa saat merekam dan melakukan zoom, pratinjau video dan output video menampilkan dan merekam output yang sama. Menghitung ukuran penanda yang paling dekat dengan pusat pada rasio zoom yang berbeda dan memeriksa apakah ukuran penanda bertambah seiring dengan meningkatnya rasio zoom.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif penanda yang diambil akurat terhadap rasio zoom yang diminta dalam video dan pratinjau.
Gambar 120. HD_1280x720_key_frame.png (sebelum zoom).
Gambar 121. preview_1280x720_key_frame.png (sebelum zoom).
Gambar 122. HD_1280x720_key_frame.png (setelah zoom).
Gambar 123. preview_1280x720_key_frame.png (setelah zoom).
test_preview_zoom
Menguji apakah rasio zoom setiap frame pratinjau cocok dengan metadata pengambilan yang sesuai dari lensa ultrawide ke lensa lebar. Pengujian ini mengambil frame pratinjau di seluruh rentang zoom dan menemukan penanda ArUco yang paling dekat dengan pusat. Pengujian kemudian memeriksa apakah posisi penanda tengah berubah secara dapat diprediksi pada setiap pengambilan gambar. Jarak dari pusat penanda tengah ke pusat gambar dapat berubah pada kecepatan konstan sehubungan dengan rasio zoom hingga peralihan kamera fisik, atau dapat berubah secara monoton ke arah lokasi penanda yang sama setelah peralihan kamera fisik.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif penanda ArUco yang dipilih akurat untuk rasio zoom yang dilaporkan dari hasil pengambilan yang sesuai untuk semua frame pratinjau. Jarak relatif penanda yang dipilih dari pusat gambar akurat untuk rasio zoom yang dilaporkan dari hasil pengambilan yang sesuai dari semua frame pratinjau.
Gambar 124. Gambar test_preview_zoom yang menampilkan penanda yang dipilih yang paling dekat dengan pusat
test_session_characteristics_zoom
Menguji rentang rasio zoom untuk semua konfigurasi sesi yang didukung yang tercantum dalam
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.
Untuk setiap konfigurasi tersebut, jika
CameraDeviceSetup#isSessionConfigurationSupported
menampilkan true, pengujian akan memverifikasi bahwa rentang rasio zoom yang ditampilkan di
CameraDeviceSetup#getSessionCharacteristics
dapat dicapai.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSIONandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Lulus: Rasio zoom minimum dan maksimum dapat dicapai untuk setiap
SessionConfiguration yang didukung yang tercantum dalam
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.
scene7
scene7 adalah bingkai persegi panjang yang dibagi menjadi empat kuadran yang sama, masing-masing diisi
dengan warna yang berbeda. Di tengah persegi panjang terdapat diagram tepi miring
untuk pemeriksaan ketajaman. Empat penanda ArUco disejajarkan dengan empat sudut luar
persegi panjang untuk membantu mendapatkan koordinat akurat dari bingkai
persegi panjang utama pada berbagai rasio zoom.
Gambar 125. scene7.
test_multi_camera_switch
Pengujian ini memverifikasi bahwa selama perekaman pratinjau pada berbagai rasio zoom, peralihan antara lensa ultrawide (UW) dan wide (W) menghasilkan nilai RGB yang serupa.
Pengujian ini menggunakan rasio zoom yang berbeda dalam rentang yang telah ditentukan untuk melakukan perekaman pratinjau dinamis dan mengidentifikasi titik perubahan kamera fisik. Titik ini menandai peralihan dari lensa UW ke lensa W.
Frame yang diambil pada dan sebelum titik persilangan dianalisis untuk eksposur otomatis (AE), white balance otomatis (AWB), dan fokus otomatis (AF).
Pemeriksaan AE memverifikasi bahwa perubahan luma berada dalam rentang yang diharapkan untuk gambar lensa UW dan W. Pemeriksaan AWB memverifikasi bahwa rasio merah-hijau dan biru-hijau berada dalam nilai minimum untuk gambar lensa UW dan W. Pemeriksaan AF mengevaluasi nilai estimasi ketajaman berdasarkan magnitudo gradien rata-rata antara gambar lensa UW dan W.
Saat menjalankan pengujian ini, jika efek Moire mengganggu hasil, gunakan tablet beresolusi lebih tinggi dari daftar tablet yang disetujui Camera ITS.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Agar lulus pengujian, pemeriksaan AE dan AWB harus lulus. Hasil pemeriksaan AF hanya digunakan untuk tujuan logging. Berikut adalah kriteria untuk setiap pemeriksaan:
- Pemeriksaan AE: Perubahan luma (nilai Y) antara gambar lensa UW dan W harus
kurang dari 4% untuk semua patch warna jika perangkat mendukung
ae_regionsdanawb_regions. Jika hanyaae_regionsyang didukung, hanya nilai patch warna abu-abu yang harus memenuhi kriteria. - Pemeriksaan AWB: Perbedaan antara nilai merah-hijau dan biru-hijau untuk
gambar lensa UW dan W harus kurang dari 3% untuk patch warna abu-abu dan
harus kurang dari 10% untuk patch warna lainnya jika perangkat mendukung
ae_regionsdanawb_regions. - Pemeriksaan AF: Ketajaman gambar untuk pengambilan gambar lensa W harus lebih tinggi daripada ketajaman dengan pengambilan gambar UW.
Gambar 126. Patch abu-abu yang diambil dengan lensa UW.
Gambar 127. Patch abu-abu diambil dengan lensa W.
scene8
scene8 adalah bingkai persegi panjang yang dibagi menjadi empat bagian yang sama, masing-masing berisi
potret yang diambil dengan eksposur berbeda atau dilapisi dengan nuansa warna
berbeda (nuansa biru, eksposur yang ditingkatkan, eksposur yang dikurangi, nuansa kuning).
Empat penanda ArUco disejajarkan dengan empat sudut luar persegi panjang
untuk mendapatkan koordinat akurat dari bingkai persegi panjang utama.
Gambar 128. Contoh scene8.
test_ae_awb_regions
Menguji apakah nilai RGB dan luma berbeda saat perekaman pratinjau di wilayah AE dan AWB yang berbeda.
Pengujian ini merekam rekaman pratinjau berdurasi 8 detik, yang melakukan pengukuran AE dan AWB pada setiap kuadran selama masing-masing 2 detik. Pengujian kemudian mengekstrak frame dari rekaman pratinjau setiap region, dan menggunakan frame yang diekstrak untuk melakukan pemeriksaan AE dan AWB berikut:
- Pemeriksaan AE: Memverifikasi bahwa frame yang mengukur region dengan eksposur yang menurun memiliki nilai luma yang meningkat lebih dari 1% daripada frame yang mengukur region dengan eksposur yang meningkat. Tindakan ini memverifikasi bahwa gambar dicerahkan saat mengukur area gelap.
- Pemeriksaan AWB: Memverifikasi bahwa rasio merah terhadap biru (dari nilai RGB rata-rata gambar) dalam frame dengan region pengukuran biru lebih dari 2% lebih tinggi daripada frame dengan region pengukuran kuning. Hal ini memverifikasi bahwa gambar memiliki nilai RGB yang seimbang saat mengukur wilayah kuning (hangat) atau biru (dingin).
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONSandroid.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AEandroid.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Lulus: Pemeriksaan AE dan AWB lulus.
Gambar 129. Pengukuran bingkai di area gelap dengan eksposur yang ditingkatkan.
Gambar 130. Pengukuran bingkai di area yang lebih terang dengan eksposur yang dikurangi.
Mekanisme kegagalan:
Deteksi akurat keempat penanda ArUco sangat penting untuk pengujian ini. Jika deteksi awal gagal, sistem akan mencoba deteksi kedua menggunakan versi hitam putih gambar. Gambar hitam putih berikut mewakili langkah pemrosesan sekunder:
Gambar 131. Penanda ArUco tidak sejajar.
test_color_correction_mode_cct
Menguji COLOR_CORRECTION_MODE
di berbagai color temperature dan tint warna, memverifikasi perubahan rasio RGB
terhadap scene pengambilan, scene8.
API yang diuji:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATUREandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATUREandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINTandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINTandroid.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGEandroid.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCTandroid.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
Lulus: Rasio RGB menunjukkan peningkatan atau penurunan yang diantisipasi relatif terhadap suhu dan tint warna yang dipilih.
Kriteria pengabaian pengujian
Pengujian test_color_correction_mode_cct akan dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level) 35 atau lebih rendah. - Perangkat tidak memberitahukan
COLOR_CORRECTION_MODE_CCTdiCOLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.
scene9
scene9 terdiri dari ribuan lingkaran dengan ukuran dan warna acak untuk membuat
pemandangan dengan pengulangan yang sangat rendah untuk menekankan algoritma kompresi JPEG.
Gambar 132. Contoh scene9.
test_jpeg_high_entropy
Menguji apakah kompresi JPEG kamera berfungsi di scene9 dengan entropi tinggi dan
faktor kualitas JPEG ditetapkan ke 100%. Faktor zoom ditingkatkan untuk memverifikasi bahwa
tampilan yang ditampilkan di tablet memenuhi FoV kamera.
API yang diuji:
Lulus: File JPEG dikompresi dengan benar, ditulis, dan dibaca kembali dari disk.
test_jpeg_quality
Menguji kualitas kompresi JPEG kamera. Langkah kualitas JPEG melalui
android.jpeg.quality dan memverifikasi bahwa tabel kuantisasi berubah
dengan benar.
API yang diuji:
Lulus: Matriks kuantisasi menurun seiring peningkatan kualitas. (Matriks mewakili faktor pembagian.)
Gambar 133. Rata-rata matriks DQT luma dan chroma kamera belakang Pixel 4 versus kualitas JPEG.
Gambar 134. Contoh pengujian yang gagal.
scene_extensions
Pengujian scene_extensions ditujukan untuk ekstensi kamera dan harus menggunakan
Camera ITS-in-a-Box,
karena memerlukan kontrol yang akurat atas lingkungan pengujian. Selain itu,
semua kebocoran cahaya harus dikontrol. Hal ini mungkin memerlukan penutupan rig pengujian,
DUT, dan tablet dengan kain penutup serta menghilangkan kebocoran cahaya dari
layar depan DUT.
scene_hdr
Adegan scene_hdr terdiri dari potret di sebelah kiri dan kode QR kontras rendah
di sebelah kanan.
Gambar 135. Contoh scene_hdr.
test_hdr_extension
Menguji ekstensi HDR. Mengambil gambar dengan dan tanpa mengaktifkan ekstensi, serta memeriksa apakah ekstensi membuat kode QR lebih mudah dideteksi.
API yang diuji:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.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_low_light
Adegan scene_low_light terdiri dari petak persegi dengan berbagai nuansa warna abu-abu dengan latar belakang hitam dan petak persegi tersebut dibatasi oleh garis batas merah. Kotak-kotak disusun dalam orientasi kurva Hilbert.
Gambar 136. Contoh scene_low_light.
test_night_extension
Menguji ekstensi Night. Mengambil tangkapan dengan ekstensi yang diaktifkan, dan melakukan hal berikut:
- Mendeteksi keberadaan 20 kotak
- Menghitung luma yang dibatasi oleh setiap persegi
- Menghitung nilai luma rata-rata dari 6 kotak pertama sesuai dengan orientasi petak kurva Hilbert
- Menghitung perbedaan nilai luma dari kotak yang berurutan (misalnya, kotak2 - kotak1) hingga kotak 5 dan 6 (kotak6 - kotak5), dan menemukan rata-rata dari lima perbedaan yang dihitung.
Untuk perangkat yang menjalankan Android 16 atau yang lebih tinggi, permintaan pengambilan mencakup region terukur yang sesuai dengan persegi panjang yang membatasi petak persegi. Penambahan ini mengubah kriteria kelulusan nilai minimum.
API yang diuji:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
Lulus:
- Untuk perangkat yang menjalankan Android 16 atau yang lebih tinggi, nilai luma rata-rata dari 6 kotak pertama harus minimal 80, dan perbedaan rata-rata nilai luma dari kotak berturut-turut hingga kotak 5 dan 6 harus minimal 18,75.
- Untuk perangkat yang menjalankan Android 15 dan yang lebih rendah, nilai luma rata-rata dari 6 kotak pertama harus minimal 85, dan perbedaan rata-rata dalam nilai luma kotak berturut-turut hingga kotak 5 dan 6 harus minimal 17.
Plot luminans berikut menunjukkan tampilan hasil pengujian yang lulus.
Gambar 137. Contoh pengujian lulus untuk pemandangan malam dengan pencahayaan rendah.
test_low_light_boost_extension
Menguji mode AE Peningkatan Cahaya Redup. Jika Camera2 mendukung mode AE peningkatan kualitas cahaya rendah, pengujian ini akan dilakukan untuk Camera2. Jika ekstensi kamera mode malam didukung dan ekstensi mendukung mode AE pengoptimalan cahaya rendah, pengujian ini juga dilakukan untuk ekstensi kamera mode malam. Pengujian ini menyetel mode AE ke pengoptimalan cahaya redup, mengambil frame dari pratinjau, dan melakukan hal berikut:
- Mendeteksi keberadaan 20 kotak
- Menghitung luma yang dibatasi oleh setiap kotak
- Menghitung nilai luma rata-rata dari 6 kotak pertama sesuai dengan orientasi petak kurva Hilbert
- Menghitung perbedaan nilai luma dari kotak yang berurutan (misalnya, kotak2 - kotak1) hingga kotak 5 dan 6 (kotak6 - kotak5), dan menemukan rata-rata dari lima perbedaan yang dihitung.
Untuk perangkat yang menjalankan Android 16 atau yang lebih tinggi, permintaan pengambilan mencakup region terukur yang sesuai dengan persegi panjang yang membatasi petak persegi. Penambahan ini mengubah kriteria kelulusan nilai minimum.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_MODESandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITYandroid.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Lulus:
Untuk perangkat yang menjalankan Android 16 atau yang lebih tinggi, nilai luma rata-rata dari 6 kotak pertama harus minimal 54, dan perbedaan rata-rata dalam nilai luma kotak berturut-turut hingga kotak 5 dan 6 harus minimal 17.
Untuk perangkat yang menjalankan Android 15 dan yang lebih rendah, nilai luma rata-rata dari 6 kotak pertama harus minimal 70, dan perbedaan rata-rata dalam nilai luma kotak berturut-turut hingga kotak 5 dan 6 harus minimal 18.
scene_tele
Persyaratan utama untuk pengujian scene_tele adalah jarak diagram harus minimal sama dengan jarak fokus minimum lensa telefoto. Karena jarak fokus minimum ini dapat berbeda antarperangkat, Anda harus mengonfigurasi penyiapan agar sesuai dengan kamera telefoto tertentu.
Gambar 138. Penyiapan scene_tele berdasarkan jarak fokus kamera lebar dan telefoto.
Untuk mengetahui informasi selengkapnya tentang penyiapan hardware pengujian, lihat Penyiapan rig ekstensi tele.
scene6_tele
Adegan scene6_tele terdiri dari petak penanda ArUco dengan latar belakang
putih.
Jika pengambilan gambar scene6_tele terlihat terlalu terang di
rig modular, lepaskan
pelat depan
rig modular.
Lepaskan rig pengujian WFoV dari ekstensi dan lepaskan dudukan ponsel.
Gambar 139. Lepaskan rig pengujian WFoV dari ekstensi dan lepaskan dudukan ponsel.
Gambar 140. Lepaskan pelat depan.
test_zoom_tele
Menguji perilaku zoom kamera dari lensa lebar ke lensa telefoto. Pengujian
ini identik dengan test_zoom, tetapi menguji perilaku zoom
kamera dari lensa lebar ke lensa telefoto.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif penanda ArUco yang diambil akurat terhadap rasio zoom yang diminta untuk memverifikasi bahwa kamera melakukan zoom dengan benar, dan jarak penanda ke pusat gambar berubah sesuai dengan kriteria yang tercantum dalam test_zoom.
test_preview_zoom_tele
Menguji perilaku zoom kamera untuk frame pratinjau dari lensa lebar ke
lensa telefoto. Pengujian ini sama dengan
test_preview_zoom, tetapi menguji perilaku zoom kamera
untuk frame pratinjau dari lensa lebar ke lensa telefoto.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif penanda ArUco yang diambil akurat terhadap rasio zoom yang diminta untuk memverifikasi bahwa kamera melakukan zoom dengan benar, dan jarak penanda ke pusat gambar berubah sesuai dengan kriteria yang tercantum dalam test_preview_zoom.
scene7_tele
scene7_tele identik dengan scene7, tetapi disiapkan untuk pengujian lensa telefoto. Bingkai ini berbentuk persegi panjang yang dibagi menjadi empat kuadran yang sama, masing-masing diisi
dengan warna yang berbeda. Di tengah persegi panjang terdapat diagram tepi miring
untuk pemeriksaan ketajaman. Empat penanda ArUco disejajarkan dengan empat sudut luar
persegi panjang untuk membantu mendapatkan koordinat akurat dari bingkai
persegi panjang utama pada berbagai rasio zoom.
test_multi_camera_switch_tele
Pengujian ini memverifikasi bahwa selama perekaman pratinjau pada berbagai rasio zoom, peralihan antara lensa lebar (W) dan telefoto (tele) menghasilkan nilai RGB yang serupa.
Pengujian ini menggunakan rasio zoom yang berbeda dalam rentang yang telah ditentukan untuk melakukan perekaman pratinjau dinamis dan mengidentifikasi titik perubahan kamera fisik. Titik ini menandai peralihan dari lensa W ke lensa telefoto.
Frame yang diambil pada dan sebelum titik persilangan dianalisis untuk AE, AWB, dan AF.
Pemeriksaan AE memverifikasi bahwa perubahan luma berada dalam rentang yang diharapkan untuk gambar lensa W dan telefoto. Pemeriksaan AWB memverifikasi bahwa rasio merah-hijau dan biru-hijau berada dalam nilai minimum untuk gambar lensa W dan telefoto. Pemeriksaan AF mengevaluasi nilai estimasi ketajaman berdasarkan magnitudo gradien rata-rata antara gambar lensa W dan telefoto.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Agar lulus pengujian, pemeriksaan AE, AWB, dan AF harus lulus semua. Berikut adalah kriteria untuk setiap pemeriksaan:
- Pemeriksaan AE: Perubahan luma antara gambar lensa W dan telefoto harus kurang dari 4%.
- Pemeriksaan AWB: Di ruang warna LAB, delta C antara merah-hijau dan biru-hijau untuk wide dan telefoto tidak boleh melebihi 10.
- Pemeriksaan AF: Ketajaman gambar lensa telefoto harus lebih tinggi daripada lensa W.
scene_video
scene_video adalah adegan video yang terdiri dari empat lingkaran berwarna berbeda yang bergerak maju mundur dengan kecepatan frame yang berbeda dengan latar belakang putih.
Gambar 141. Contoh scene_video.
test_preview_frame_drop
Menguji apakah kecepatan frame pratinjau yang diminta dipertahankan dengan scene dinamis. Pengujian ini berjalan di semua kamera yang terekspos ke aplikasi pihak ketiga.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGESandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGEandroid.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Kecepatan frame pratinjau berada pada kecepatan frame maksimum yang diminta, dan variasi rata-rata antara frame berturut-turut kurang dari toleransi relatif yang ditetapkan dalam pengujian.
Rig Gen2 / adegan pengujian berbasis sensor_fusion
feature_combination
Pengujian feature_combination memverifikasi bahwa fitur berfungsi dengan benar saat
beberapa fitur kamera diaktifkan secara bersamaan. Pengujian ini menggunakan gambar papan catur yang sama dengan yang digunakan dalam scene fusi sensor.
test_feature_combination
Menguji semua kombinasi dari berbagai kombinasi streaming, mode stabilisasi video, rentang FPS target, video HDR 10-bit, dan Ultra HDR yang didukung oleh perangkat kamera.
Untuk Android 16 dan yang lebih tinggi, pengujian akan menjalankan semua kombinasi
fitur yang didukung, dan mencatat hasilnya ke dalam file proto. Pernyataan kegagalan
hanya dipanggil untuk kombinasi fitur yang
isSessionConfigurationSupported menampilkan True.
API yang diuji:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Lulus: Untuk setiap kombinasi fitur yang didukung:
- Streaming pratinjau akan distabilkan jika stabilisasi pratinjau diaktifkan.
- Kecepatan frame pratinjau berada dalam
AE_TARGET_FPS_RANGEyang dikonfigurasi. - Ruang warna streaming pratinjau yang direkam cocok dengan yang ditetapkan.
- Pengambilan gambar Ultra HDR memiliki peta penguatan yang valid.
scene_flash
Pengujian scene_flash memerlukan adegan gelap di kotak fusi sensor.
Di Android 17 dan yang lebih tinggi, pengujian scene_flash
dapat dilakukan menggunakan
rig Gen2.
test_auto_flash
Menguji apakah flash otomatis dipicu dalam suasana gelap untuk kamera belakang dan kamera depan. Untuk kamera depan, flash otomatis menggunakan layar untuk menerangi pemandangan, bukan unit flash fisik. Pengujian ini memverifikasi bahwa flash otomatis diaktifkan dengan memeriksa apakah bagian tengah gambar ubin lebih terang dengan flash otomatis diaktifkan. Untuk memicu flash otomatis, lampu di rig pengujian harus dimatikan. Lampu dapat dimatikan secara otomatis dengan pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian berfungsi dengan benar. Aplikasi Kamera Jetpack (JCA) harus diinstal di perangkat sebelum pengujian. Flash otomatis untuk kamera belakang bergantung pada status AE yang akan dipicu, tetapi flash otomatis untuk kamera depan tidak bergantung pada AE dan selalu dipicu.
Di Android 17 dan yang lebih baru, uji tingkat zoom non-1x untuk memverifikasi fungsionalitas yang benar di semua rentang zoom yang didukung.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureRequest#FLASH_MODE
Lulus: Bagian tengah gambar kotak dengan flash otomatis diaktifkan lebih terang daripada gambar adegan asli untuk semua kamera.
test_flash_strength
Menguji apakah kontrol kekuatan flash dalam mode
SINGLE
diimplementasikan dengan benar.
Memverifikasi bahwa jika perangkat mendukung kontrol kekuatan flash selama penggunaan kamera
dalam mode SINGLE, kekuatan flash akan berubah dengan tingkat kekuatan
yang diminta berbeda. Memastikan bahwa kontrol kekuatan flash berfungsi dengan berbagai
AE_MODES.
Misalnya, jika mode eksposur otomatis adalah ON atau OFF, tingkat kekuatan flash
akan berpengaruh pada kecerahan, dan jika modenya adalah ON_AUTO_FLASH, tingkat kekuatan
flash tidak akan berpengaruh pada kecerahan.
Untuk melakukan pengujian, lampu di rig pengujian harus dimatikan. Lampu dapat dimatikan secara otomatis dengan pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian berfungsi dengan benar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Lulus:
Jika mode eksposur otomatis adalah ON atau OFF, kecerahan patch gambar
akan meningkat seiring dengan meningkatnya tingkat kekuatan flash dari tanpa flash menjadi
FLASH_SINGLE_STRENGTH_MAX_LEVEL.
Jika mode eksposur otomatis adalah ON_AUTO_FLASH, perbedaan kecerahan
patch gambar berada dalam batas toleransi saat tingkat kekuatan flash meningkat dari
tanpa flash ke FLASH_SINGLE_STRENGTH_MAX_LEVEL.
test_led_snapshot
Menguji apakah snapshot LED tidak menjenuhkan atau memberi tint pada gambar.
Pengujian ini menambahkan pengontrol pencahayaan ke Sensor Fusion Box untuk
mengontrol lampu. Dengan lampu yang disetel ke OFF, pengujian akan mengambil gambar dengan
mode AUTO_FLASH yang disetel ke ON. Selama pengambilan ini, pengujian akan menjalankan
urutan pra-pengambilan dengan pemicu aePrecapture yang ditetapkan ke START, dan menetapkan
intent pengambilan ke Preview untuk mengambil gambar dengan flash.
Karena pengambilan memiliki hotspot yang khas karena flash, pengujian menghitung rata-rata gambar flash dari seluruh pengambilan dan memverifikasi apakah nilainya berada dalam rentang (68, 102). Untuk memeriksa apakah gambar memiliki keseimbangan putih yang wajar, pengujian akan menghitung rasio merah-hijau dan biru-hijau serta memverifikasi apakah rasio tersebut berada dalam rentang 0,95 dan 1,05.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#FLASH_MODE
Lulus: Rasio merah-hijau dan biru-hijau berada dalam rentang 0,95 dan 1,05. Rata-rata gambar flash berada dalam rentang (68, 102).
test_night_mode_indicator
Menguji fungsi indikator mode malam, fitur yang menunjukkan apakah kamera beroperasi dalam kondisi cahaya redup dan akan mendapatkan manfaat dari pengambilan gambar diam ekstensi Kamera Mode Malam. Fitur ini hanya tersedia di perangkat yang mendukung ekstensi Kamera Mode Malam.
Pengujian ini memeriksa apakah indikator mode malam mencerminkan kondisi pencahayaan dengan benar selama pratinjau kamera. Pengujian ini melakukan langkah-langkah berikut:
- Inisialisasi: Pengujian melakukan inisialisasi
ItsSessiondan mengambil properti kamera. Sistem ini juga membuat koneksi dengan pengontrol pencahayaan. - Kondisi Lewati: Pengujian dilewati jika perangkat tidak mendukung level API yang diperlukan atau fitur indikator mode malam.
- Sesi Camera2:
- Pengujian memulai sesi pengambilan pratinjau menggunakan sesi
Camera2. - Lampu diaktifkan dan frame pratinjau diambil.
- Pengujian ini memverifikasi bahwa indikator mode malam berada dalam status
OFF. - Lampu dimatikan dan frame pratinjau diambil.
- Pengujian ini memverifikasi bahwa indikator mode malam berada dalam status
ON.
- Pengujian memulai sesi pengambilan pratinjau menggunakan sesi
- Sesi ekstensi kamera:
- Pengujian ini mengulangi prosedur yang sama seperti untuk sesi
Camera2, tetapi menggunakan sesiCameraExtensiondengan ekstensiEXTENSION_NIGHT.
- Pengujian ini mengulangi prosedur yang sama seperti untuk sesi
- Pembersihan: Pengujian menutup
ItsSessiondan merilis pengontrol pencahayaan.
API yang diuji:
Lulus:
- Saat lampu menyala, indikator mode malam akan berada dalam status
OFF. - Saat lampu mati, indikator mode malam harus dalam status
ON. - Berlaku untuk sesi
Camera2danCameraExtension.
test_preview_min_frame_rate
Menguji apakah kecepatan frame pratinjau menurun dengan benar dalam adegan 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_RANGESandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGEandroid.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Kecepatan frame pratinjau berada pada kecepatan frame minimum yang diminta, dan variasi antar-frame kurang dari toleransi absolut yang ditetapkan dalam pengujian.
test_torch_strength
Menguji apakah kontrol kekuatan flash dalam mode
TORCH
diimplementasikan dengan benar.
Memverifikasi bahwa jika perangkat mendukung kontrol kekuatan flash selama penggunaan kamera
dalam mode TORCH, kekuatan senter akan berubah dengan tingkat kekuatan
yang diminta berbeda. Memastikan bahwa kontrol kekuatan flash berfungsi dengan berbagai
AE_MODES.
Misalnya, jika mode eksposur otomatis adalah ON atau OFF, tingkat kekuatan flash
akan berpengaruh pada kecerahan, dan jika modenya adalah ON_AUTO_FLASH, tingkat kekuatan
flash tidak akan berpengaruh pada kecerahan.
Memastikan bahwa kekuatan senter tetap sama selama durasi burst, yang menyimulasikan sesi perekaman video. Untuk melakukan pengujian, lampu di
rig pengujian harus dimatikan. Lampu dapat dimatikan secara otomatis dengan
pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian berfungsi
dengan benar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Lulus:
Jika mode eksposur otomatis adalah ON atau OFF, kecerahan patch burst gambar akan meningkat seiring meningkatnya tingkat kekuatan flash dari tanpa flash ke FLASH_TORCH_STRENGTH_MAX_LEVEL.
Jika mode eksposur otomatis adalah ON_AUTO_FLASH, perbedaan kecerahan patch burst gambar berada dalam batas toleransi seiring meningkatnya tingkat kekuatan flash dari tanpa flash ke FLASH_TORCH_STRENGTH_MAX_LEVEL.
scene_gen2_chart
Di Android 17 dan yang lebih baru, scene_gen2_chart menggunakan
diagram kertas Gen2.
Diagram pengujian ini terdiri dari sampel wajah, kode QR, patch skala abu-abu, bintang Siemens, diagram warna, dan kotak miring.
Gambar 142. Contoh sampel diagram Gen2.
test_tonemap_sequence
Pengujian ini mengevaluasi kurva pemetaan nuansa default perangkat terhadap kurva linear dan dua kurva eksponensial (satu dengan titik seragam dan yang lainnya dengan titik tidak seragam). Untuk hasil yang lulus, kecerahan kurva default harus melebihi kecerahan kurva linear dan eksponensial. Selain itu, kurva linear harus lebih terang daripada kurva eksponensial, dan kedua kurva eksponensial harus memiliki tingkat kecerahan yang serupa.
Pengujian ini juga memverifikasi akurasi kurva default perangkat. Hal ini dilakukan dengan mengekstrak kurva default, memasukkannya kembali, lalu membandingkan kecerahan gambar yang dihasilkan dengan gambar kurva default asli.
Gambar 143. Menguji plot urutan tonemap.
API yang diuji:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: Perbedaan kecerahan antara kurva default dan linear lebih dari 15%, sedangkan perbedaan antara dua kurva eksponensial kurang dari 8%.
test_multi_camera_switch
Pengujian ini memverifikasi konsistensi warna dan eksposur selama transisi zoom dinamis. Pengujian ini memverifikasi bahwa peralihan antara lensa Ultrawide (UW) dan Wide (W) selama perekaman pratinjau mempertahankan nilai CIELAB yang hampir identik, sehingga mencegah pergeseran yang terlihat dalam pengalaman pengguna.
Eksekusi uji ini menjalankan perekaman pratinjau dinamis di seluruh rentang zoom yang telah ditentukan untuk memicu titik "persilangan" kamera fisik, tempat lensa ultra lebar beralih ke lensa lebar. Pengujian ini mengidentifikasi frame yang tepat saat peralihan lensa terjadi. Frame yang langsung mendahului dan mengikuti titik persilangan ini diambil dan dianalisis untuk stabilitas dalam eksposur otomatis (AE), dan white balance otomatis (AWB).
Pemeriksaan AE mengonfirmasi bahwa fluktuasi Luma tetap berada dalam rentang yang dapat diterima selama peralihan lensa. Pemeriksaan AWB memverifikasi bahwa rasio merah-hijau dan biru-hijau tetap berada dalam batas netralitas warna yang ditentukan.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Agar lulus pengujian, pemeriksaan AE dan AWB berikut harus lulus:
- Pemeriksaan AE: Perubahan luma (nilai Y) antara gambar lensa UW dan W harus
kurang dari 4% untuk semua patch warna jika perangkat mendukung
ae_regionsdanawb_regions. Jika hanyaae_regionsyang didukung, hanya nilai patch warna abu-abu yang harus memenuhi kriteria. - Pemeriksaan AWB: Perbedaan antara nilai merah-hijau dan biru-hijau untuk
gambar lensa UW dan W harus kurang dari 3% untuk patch warna abu-abu dan
harus kurang dari 10% untuk patch warna lainnya jika perangkat mendukung
ae_regionsdanawb_regions.
Gambar 144. Patch abu-abu yang diambil dengan lensa UW.
Gambar 145. Patch abu-abu diambil dengan lensa W.
scene_ip
Di Android 16 dan yang lebih baru, scene scene_ip memungkinkan pemeriksaan paritas gambar antara
aplikasi kamera default dan aplikasi kamera Jetpack (JCA) untuk mengidentifikasi perbedaan
utama antara gambar yang diambil. JCA mereplikasi pengambilan gambar aplikasi media sosial dan memberikan gambar dasar yang kemudian diproses dan disempurnakan oleh aplikasi media sosial.
Persyaratan penyiapan hardware
Penyiapan hardware berikut diperlukan untuk pengujian scene_ip:
- Pengujian dijalankan di ITS-in-a-box kamera Gen2.
- Pengontrol pencahayaan dan servo yang merupakan bagian dari rig Gen2 digunakan untuk mengontrol lingkungan pengujian.
- Diagram fitur pengujian ditempatkan di dalam rig Gen2.
Gambar 146. Contoh Gen2chart_sample.
Kriteria pengabaian pengujian
Pengujian scene_ip akan dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level) 35 atau lebih rendah. - Perangkat tersebut bukan perangkat ponsel dengan perangkat kamera utama depan dan belakang (misalnya, tablet atau TV).
test_default_jca_ip
Mengambil gambar diagram fitur pengujian dalam kondisi pencahayaan terkontrol menggunakan aplikasi kamera default dan JCA, serta melakukan pemeriksaan berikut:
FoV: Memeriksa apakah aplikasi kamera default dan pengambilan JCA memiliki FoV yang sama. Pemeriksaan ini menggunakan fitur Kode QR tengah yang diekstrak dari gambar diagram yang diambil.
Kecerahan: Memeriksa apakah perbedaan kecerahan yang diukur antara aplikasi kamera default dan JCA tidak melebihi 10. Pemeriksaan ini menggunakan patch rentang dinamis untuk pengukuran kecerahan.
White balance: Memeriksa apakah perbedaan white balance antara aplikasi kamera default dan JCA tidak melebihi 4. Pemeriksaan ini menggunakan patch rentang dinamis untuk pengukuran kecerahan.
Rendering warna: Memeriksa apakah perbedaan rendering warna antara aplikasi kamera default dan JCA tidak melebihi 6.
Lulus: Pengujian lulus pemeriksaan FoV, kecerahan, dan white balance. Di Android
16, pengujian ini tidak diwajibkan (NOT_YET_MANDATED). Untuk Android
17 dan yang lebih tinggi, pemeriksaan paritas FoV, kecerahan, dan white balance
diwajibkan. Pemeriksaan rendering warna tidak diwajibkan
(NOT_YET_MANDATED) di Android 17.
test_jca_jpegr_ip
Memverifikasi bahwa perbedaan white balance antara snapshot pratinjau JCA JPEG_R dan gambar yang diambil tidak melebihi 4.
API yang diuji:
Lulus: Perbedaan white balance antara snapshot pratinjau JCA dan gambar JPEG_R yang diambil berada dalam batas (defaultnya adalah 4).
sensor_fusion
Pengujian fusi sensor memerlukan gerakan ponsel tertentu di depan pola papan catur
dan penanda ArUco. Untuk hasil yang optimal, pastikan diagram pengujian
dipasang rata. Diagram yang tidak datar akan memengaruhi penghitungan rotasi untuk banyak pengujian. Diagram harus mengisi bagian belakang kotak fusi sensor dengan mencetak
pada ukuran 17x17 inci. (43x43 cm). Pengujian sensor_fusion dapat diotomatiskan
dengan Kotak Sensor Fusion.
Gambar 147. Diagram penggabungan sensor.
Gambar 148. Diagram fusi sensor yang mengisi bagian belakang kotak sekring fusi sensor.
test_lens_intrinsic_calibration
Menguji apakah pusat optik intrinsik lensa berubah saat lensa bergerak karena stabilisasi gambar optik (OIS). Jika sampel intrinsik lensa didukung, uji apakah pusat optik sampel intrinsik lensa berubah saat lensa bergerak karena OIS.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
Lulus: Pusat optik intrinsik lensa berubah sebesar 1 piksel atau lebih. Jika sampel intrinsik lensa didukung, pusat optik sampel intrinsik lensa akan berubah sebesar 1 piksel atau lebih.
Gambar berikut adalah contoh plot test_lens_intrinsic_calibration
yang menunjukkan perubahan titik utama dalam piksel untuk setiap frame:
Gambar 149. Contoh plot test_lens_intrinsic_calibration yang menunjukkan perubahan titik utama dalam piksel untuk setiap frame.
test_multi_camera_frame_sync
Menguji apakah stempel waktu frame yang diambil oleh kamera logis berada dalam rentang 10 md dengan menghitung sudut kotak dalam papan catur untuk menentukan stempel waktu.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPEandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAandroid.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Lulus: Sudut antara gambar dari setiap kamera tidak berubah secara signifikan saat ponsel diputar.
test_preview_distortion
Menguji apakah distorsi dikoreksi di setiap frame pratinjau yang diambil pada berbagai tingkat zoom. Untuk setiap frame pratinjau, pengujian menghitung titik ideal berdasarkan intrinsik dan ekstrinsik kamera.
Dalam contoh gambar, titik ideal ditampilkan dalam warna hijau; titik sebenarnya ditampilkan dalam warna merah. Error distorsi dihitung berdasarkan jarak piksel RMS antara titik sebenarnya dan titik ideal. Sorotan hijau dan merah pada gambar digunakan untuk mendeteksi area error distorsi secara visual.
Gambar 150. Gambar papan catur dengan titik ideal berwarna hijau dan titik aktual berwarna merah.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Error distorsi yang dinormalisasi dari setiap frame pratinjau kurang dari nilai minimum yang ditetapkan dalam pengujian.
test_preview_stabilization
Pengujian yang menstabilkan video pratinjau berputar lebih sedikit daripada giroskop.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Lulus: Rotasi sudut maksimum pada frame kurang dari 70% rotasi giroskop.
Berikut adalah video sampel dengan dan tanpa stabilisasi:
Gambar 151. Contoh video dengan stabilisasi.
Gambar 152. Video sampel tanpa stabilisasi.
test_sensor_fusion
Menguji perbedaan stempel waktu antara kamera dan giroskop untuk aplikasi AR
dan VR. Ponsel diputar 90 derajat sebanyak 10 kali di depan
pola papan catur. Gerakan memerlukan waktu sekitar 2 detik pulang pergi. Pengujian
ini akan 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. Gerakan ke arah x dan y menunjukkan bahwa ponsel tidak terpasang dengan aman pada pelat pemasangan, sehingga mengurangi kemungkinan pengujian berhasil. Jumlah siklus dalam plot bergantung pada kecepatan tulis untuk menyimpan frame.
Gambar 153. Contoh peristiwa giroskop test_sensor_fusion.
test_sensor_fusion_plot_rotations: Menampilkan penyelarasan peristiwa giroskop dan kamera. Plot ini harus menunjukkan gerakan yang cocok antara kamera dan giroskop hingga +/-1 md.
Gambar 154. Contoh rotasi plot test_sensor_fusion.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LENS_FACINGandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIMEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Lulus: Offset stempel waktu kamera dan giroskop kurang dari 1 md sesuai dengan 7.3.9 Sensor High Fidelity di CDD.
Mekanisme kegagalan:
- Error offset: Offset giroskop kamera tidak dikalibrasi dengan benar dalam rentang +/-1 md.
- Penurunan frame: Pipeline tidak cukup cepat untuk menangkap 200 frame secara berturut-turut.
- Error soket:
adbtidak dapat terhubung dengan andal ke DUT dalam waktu yang cukup lama untuk menjalankan pengujian. - Diagram tidak dipasang rata. Plot
test_sensor_fusion_plot_rotationsmemiliki frame tempat rotasi giroskop dan kamera sangat bervariasi saat kamera berputar melalui bagian diagram yang tidak datar. - Kamera tidak dipasang dengan rata. Plot
test_sensor_fusion_gyro_eventsmenunjukkan gerakan di bidang X dan Y. Kegagalan ini lebih sering terjadi pada kamera depan karena kamera belakang sering kali memiliki tonjolan yang lebih tinggi dibandingkan bagian bodi ponsel lainnya, sehingga menimbulkan kemiringan saat memasang bagian belakang ponsel ke pelat pemasangan.
test_video_stabilization
Tidak digunakan lagi: Pengujian ini tidak digunakan lagi mulai Android 17. Untuk Android 17 dan yang lebih baru, pengujian ini digantikan oleh test_video_stabilization_jca.
Pengujian bahwa video yang distabilkan berputar lebih sedikit daripada giroskop.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Lulus: Rotasi sudut maksimum pada frame kurang dari 60% rotasi giroskop.
Berikut adalah video sampel dengan dan tanpa stabilisasi.
Gambar 155. Contoh video dengan stabilisasi.
Gambar 156. Video sampel tanpa stabilisasi.
test_video_stabilization_jca
Pengujian yang menstabilkan video yang diambil menggunakan JCA berputar lebih sedikit daripada giroskop. JCA harus diinstal di perangkat sebelum pengujian.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.CamcorderProfileandroid.media.MediaRecorder
Lulus: Rotasi sudut maksimum pada frame yang diekstrak dari video yang diambil menggunakan JCA kurang dari 70% rotasi giroskop 4).
Adegan pengujian berbasis penyebar
scene5
scene5 memerlukan scene abu-abu dengan pencahayaan yang seragam. Hal ini dilakukan dengan diffuser
yang ditempatkan di atas lensa kamera. Sebaiknya gunakan diffuser berikut:
http://www.edmundoptics.com/optics/windows-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. Pengambilan Gambar untuk
scene5 memerlukan pencahayaan menyebar tanpa fitur yang terlihat. Berikut adalah
contoh gambar:
Gambar 157. Contoh pengambilan scene5.
Karena tidak ada tablet atau pengontrol yang diperlukan untuk scene ini, pengujian menggunakan
testbed TEST_BED_MANUAL. Sebagai contoh, lihat
File config.yml pengujian manual.
File config.yml default tidak menyertakan TEST_BED_MANUAL, tetapi Anda dapat
mengubah file untuk menyertakannya.
test_lens_shading_and_color_uniformity
Menguji apakah koreksi bayangan lensa diterapkan dengan tepat, dan warna tampilan monokrom yang seragam 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 membandingkannya dengan nilai y tengah. Pengujian keseragaman warna dievaluasi dalam ruang merah-hijau dan biru-hijau.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Lulus: Pada radius gambar yang ditentukan, varians nilai merah-hijau dan biru-hijau harus kurang dari 20% agar lulus pengujian.
Mekanisme kegagalan:
- Vinyet berlebihan pada gambar
- Artefak batas hitam pada gambar
Gambar 158. test_lens_shading_and_color_uniformity_y_plane.
Gambar 159. test_lens_shading_and_color_uniformity_color_uniformity.
Gambar 160. test_lens_shading_and_color_uniformity_lens_shading_result.
Adegan pengujian berbasis tablet gamut lebar
scene_wide_gamut
scene_wide_gamut adalah bingkai persegi panjang yang dibagi menjadi empat kuadran yang sama,
masing-masing diisi dengan warna yang berbeda. Hal ini mengharuskan tablet menampilkan
diagram dalam gamut lebar, dan DUT mengambil foto gamut lebar dari
layar.
Pengujian ini memverifikasi bahwa gambar yang diambil mematuhi profil warna dan rentang warna yang benar.
test_display_p3
Menguji pengambilan Display P3 dalam JPEG menggunakan ColorSpaceProfiles API. Menguji
apakah JPEG yang diambil memiliki profil ICC yang sesuai di header-nya, dan
apakah gambar berisi persentil warna tertentu di luar gamut sRGB.
API yang diuji:
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
Lulus: JPEG berisi profil ICC Display P3 dan lebih dari 1 persen warna di luar gamut sRGB.
Gambar 161. Contoh test_display_p3.