Halaman ini menyediakan daftar lengkap pengujian dalam Camera Image Test Suite (ITS), yang merupakan bagian dari Verifikasi Compatibility Test Suite (CTS) Android. Pengujian ITS adalah pengujian fungsional, yang berarti tidak mengukur kualitas gambar, tetapi memastikan 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.
ITS Kamera membatasi pengujian berdasarkan properti kamera yang diperlukan, level API, dan tingkat class performa media (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 fungsi di level API yang lebih rendah. ITS
menggunakan ro.vendor.api_level
untuk membatasi pengujian fitur yang ditambahkan di tingkat API tertentu yang memerlukan kemampuan hardware baru. Jika
ro.odm.build.media_performance_class
ditentukan untuk
perangkat, ITS memerlukan pengujian tertentu untuk dijalankan, bergantung pada tingkat MPC.
Pengujian dikelompokkan berdasarkan adegan sebagai berikut:
scene0
: Merekam 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, bidang pandangscene5
: Shading lensascene6
: Zoomscene7
: Tombol akses multi-kamerascene8
: Pengukuran area eksposur otomatis (AE) dan white balance otomatis (AWB)scene9
: Kompresi JPEGscene_extensions
: Ekstensi kamerascene_tele
: Pengalihan lensa telefotoscene_flash
: Autoflash, kecepatan frame minimumscene_video
: Frame menurunsensor_fusion
: Perbedaan waktu kamera dan giroskopfeature_combination
: Kombinasi fiturscene_ip
: Kesamaan gambar antara aplikasi kamera default dan Aplikasi Kamera Jetpack (JCA)
Lihat bagian masing-masing untuk mengetahui deskripsi setiap adegan.
scene0
Pengujian tidak memerlukan informasi adegan tertentu. Namun, ponsel harus tetap diam untuk pengujian giroskop dan getaran.
test_jitter
Mengukur jitter dalam stempel waktu kamera.
API yang diuji:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Lulus: Terdapat perbedaan minimal 30 md antar-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 gain auto_capture_request
karena konten gambar tidak penting.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Lulus: Tingkat hardware, tag rollingShutterSkew
, frameDuration
,
timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
,
bidang pandang (FoV), dan jarak hiperfokal ada dan memiliki nilai yang valid.
test_request_capture_match
Menguji apakah perangkat menulis nilai eksposur dan gain yang benar dengan membaca kembali metadata pengambilan.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Lulus: Nilai metadata permintaan dan pengambilan cocok di semua bidikan.
test_sensor_events
Untuk perangkat yang mengiklankan dukungan sensor fusion, pengujian ini memeriksa apakah perangkat membuat kueri 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.
API yang diuji:
Lulus: Peristiwa untuk setiap sensor diterima.
test_solid_color_test_pattern
Menguji apakah pola pengujian warna solid dibuat dengan benar untuk membisukan kamera. Jika peredaman mikrofon didukung, pola pengujian warna solid harus didukung. Jika peredaman mikrofon kamera tidak didukung, pola uji warna solid hanya diuji jika kemampuan tersebut diiklankan.
Jika gambar mentah didukung, penetapan warna juga diuji. Warna yang diuji adalah hitam, putih, merah, biru, dan hijau. Untuk kamera yang tidak mendukung gambar mentah, hanya warna hitam yang diuji.
API yang diuji:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Lulus: Pola pengujian solid yang didukung memiliki warna yang benar dan varians rendah dalam gambar.
test_test_pattern
Menguji parameter android.sensor.testPatternMode
untuk
merekam 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:
- Merekam gambar untuk semua pola pengujian yang didukung.
- Melakukan pemeriksaan kebenaran untuk pola uji warna solid dan batang warna.
API yang diuji:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Lulus: Pola pengujian yang didukung dibuat dengan benar.
Contoh Gambar 2. test_test_patterns.
test_tonemap_curve
Menguji konversi pola pengujian dari raw ke YUV dengan pemetaan nada linear. Pengujian ini
memerlukan android.sensor.testPatternMode = 2
(COLOR_BARS
) untuk membuat pola gambar yang sempurna untuk konversi tonemap. Memverifikasi bahwa pipeline memiliki
output warna yang tepat dengan pemetaan tonal linear dan input gambar yang ideal (mengandalkan
test_test_patterns
).
API yang diuji:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: YUV dan RAW terlihat mirip satu sama lain.
Contoh mentah Gambar 3. test_tonemap_curve.
Contoh YUV Gambar 4. test_tonemap_curve.
test_unified_timestamp
Menguji apakah peristiwa sensor gambar dan gerakan berada dalam domain waktu yang sama.
API yang diuji:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Lulus: Stempel waktu gerakan berada di antara dua stempel waktu gambar.
test_vibration_restriction
Menguji apakah getaran perangkat berfungsi seperti yang diharapkan.
API yang diuji:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Lulus: Perangkat tidak bergetar saat dinonaktifkan oleh API pembatasan audio kamera.
scene1_1
scene1
adalah diagram abu-abu. Bagan abu-abu harus mencakup 30% FoV kamera di tengah. Diagram abu-abu diperkirakan akan menantang 3A (AE, AWB, dan AF) secara sedang karena wilayah tengah tidak memiliki fitur.
Namun, permintaan pengambilan menentukan seluruh adegan yang mencakup
fitur yang memadai agar 3A dapat berkonvergensi.
Kamera RFoV dapat diuji di rig pengujian WFoV atau RFoV. Jika kamera RFoV diuji di platform pengujian WFoV, diagram akan diskalakan dengan 2/3 untuk menentukan beberapa batas diagram abu-abu dalam FoV guna membantu konvergensi 3A. Untuk deskripsi yang lebih mendetail tentang perlengkapan pengujian kamera, lihat ITS dalam kotak untuk kamera.
Gambar 5. Diagram scene1 ukuran penuh (kiri), diagram yang diskalakan 2/3 (kanan).
test_ae_precapture_trigger
Menguji mesin status AE saat menggunakan pemicu pra-pengambilan gambar. Merekam lima permintaan manual dengan AE dinonaktifkan. Permintaan terakhir memiliki pemicu pra-pengambilan gambar AE, yang harus diabaikan karena AE dinonaktifkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Lulus: AE menyatu.
test_auto_vs_manual
Pengujian yang merekam foto otomatis dan manual terlihat sama.
API yang diuji:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Lulus: Perolehan 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 gain sangat rendah dan eksposur pendek, yang menghasilkan foto hitam, dan yang kedua dengan gain sangat tinggi dan eksposur panjang, yang menghasilkan foto putih.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.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 mean.
test_burst_capture
Memverifikasi bahwa seluruh pipeline pengambilan dapat mengimbangi kecepatan pengambilan ukuran penuh dan waktu CPU.
API yang diuji:
Lulus: Merekam serangkaian gambar berukuran penuh, memeriksa penurunan frame dan kecerahan gambar.
test_burst_sameness_manual
Mengambil 5 burst dari 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_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Lulus: Gambar identik secara visual dan dalam nilai RGB.
Gagal: Menampilkan lonjakan atau penurunan diagram rata-rata RGB di awal setiap burst
- Toleransi adalah 3% untuk
first_API_level
< 30 - Toleransi adalah 2% untuk
first_API_level
>= 30
Gambar 12. Contoh rata-rata test_burst_sameness_manual.
Gambar 13. test_burst_sameness_manual_plot_means
test_crop_region_raw
Menguji apakah aliran RAW tidak dapat dipangkas.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: Gambar YUV dipangkas di tengah, tetapi tidak dengan gambar RAW.
Gambar 14. Contoh pemangkasan mentah gabungan test_crop_region_raw.
Gambar 15. test_crop_region_raw comp raw full example.
Gambar 16. Contoh pemangkasan YUV komposisi test_crop_region_raw.
Gambar 17. Contoh lengkap YUV test_crop_region_raw.
test_crop_regions
Menguji apakah area pangkas berfungsi. Mengambil gambar lengkap dan membuat patch dari lima region yang berbeda (sudut dan tengah). Mengambil gambar dengan setelan pangkas untuk lima area. Membandingkan nilai gambar patch dan pangkas.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Lulus: Gambar area yang dipangkas cocok dengan patch yang sesuai dengan gambar pangkas.
test_ev_compensation
Menguji bahwa kompensasi nilai eksposur (EV) diterapkan. Ujian ini terdiri dari bagian dasar dan bagian lanjutan.
Bagian dasar menguji bahwa kompensasi EV diterapkan menggunakan rentang
yang dibuat dengan CONTROL_AE_COMPENSATION_STEP
. Delapan frame 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 yang tidak menerapkan kompensasi EV dan nilai yang diharapkan akan mencapai titik 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 terlalu terang dalam lima langkah.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Lulus bagian dasar: Gambar menunjukkan peningkatan eksposur tanpa terlalu terang dalam lima langkah.
Gambar 18. test_ev_compensation_basic.
Lulus bagian lanjutan: Merekam peningkatan luma saat setelan kompensasi EV meningkat. 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
Pengujian yang mencapai eksposur konstan saat ISO dan waktu eksposur bervariasi. Mengambil serangkaian foto dengan ISO dan waktu pencahayaan yang dipilih untuk saling menyeimbangkan.
Hasilnya harus memiliki kecerahan yang sama, tetapi selama urutan gambar harus menjadi lebih berisik. Memverifikasi bahwa nilai rata-rata piksel sampel berdekatan satu sama lain. Memastikan
bahwa gambar tidak diklem ke 0 atau 1 (yang akan membuatnya terlihat seperti garis
datar). Pengujian juga dapat dijalankan dengan gambar RAW dengan menyetel tanda debug
di
file konfigurasi Anda.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Gambar memiliki kecerahan yang sama, tetapi menjadi lebih bernoise dengan ISO yang lebih tinggi. Bidang RGB datar jika nilai ISO*eksposur konstan di seluruh ruang penguatan yang diuji.
Mekanisme kegagalan: Pada gambar berikut, saat nilai pengganda gain (sumbu x) meningkat, nilai rata-rata bidang RGB yang dinormalisasi (sumbu y) mulai menyimpang dari nilai pengganda gain yang rendah.
Gambar 20. test_exposure_plot_means.
Gambar 21. test_exposure_mult=1.00.
Gambar 22. test_exposure_mult=64.00.
test_latching
Menguji bahwa setelan (eksposur dan gain) terkunci pada frame kanan untuk kamera FULL
dan
LEVEL_3
. Mengambil serangkaian foto menggunakan permintaan berurutan,
dengan memvariasikan parameter permintaan pengambilan gambar di antara foto. Memeriksa apakah gambar 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 nilai RGB yang lebih tinggi dalam plot pada gambar berikut.
Plot test_latching Gambar 23. berarti contoh.
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.
Figure 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
Pengujian bahwa pemrosesan perangkat dapat dibalik ke piksel linear. Mengambil serangkaian gambar dengan perangkat diarahkan ke target yang seragam.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: Nilai R, G, B harus meningkat secara linear dengan peningkatan sensitivitas.
Gambar 37. Plot test_linearity berarti contoh.
test_locked_burst
Menguji kunci 3A dan burst YUV (menggunakan setelan otomatis). Pengujian ini dirancang untuk lulus
bahkan di perangkat terbatas yang tidak memiliki MANUAL_SENSOR
atau PER_FRAME_CONTROLS
.
Pengujian ini memeriksa konsistensi gambar YUV saat pemeriksaan kecepatan frame berada di CTS.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Lulus: Hasil pengambilan gambar terlihat konsisten.
Contoh frame0 Gambar 38. 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 subadegan 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 gain yang berbeda, serta menguji bahwa foto tersebut terlihat berbeda sesuai dengan nilai tersebut. Transformasi dan perolehan dipilih untuk membuat output semakin merah atau biru. Menggunakan pemetaan nada linier.
Pemetaan tone adalah teknik yang digunakan dalam pemrosesan gambar untuk memetakan satu set warna ke set warna lainnya guna memperkirakan tampilan gambar rentang dinamis tinggi dalam media yang memiliki rentang dinamis yang lebih terbatas.
API yang diuji:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Lulus: Nilai R dan B ditingkatkan sesuai dengan transformasi.
Gambar 41. Contoh plot test_param_color_correction.
Pada gambar berikut, sumbu x adalah permintaan pengambilan: 0 = kesatuan, 1 = peningkatan merah, dan 2 = peningkatan biru.
Gambar 42. test_param_color_correction req=0 contoh kesatuan.
Gambar 43. test_param_color_correctness req=1 contoh peningkatan merah.
Gambar 44. test_param_color_correction req=2 contoh peningkatan biru.
test_param_flash_mode
Menguji apakah parameter android.flash.mode
diterapkan. Menyetel eksposur secara manual agar berada di sisi gelap, sehingga jelas apakah flash diaktifkan atau tidak, dan menggunakan pemetaan nada linear. Memeriksa bagian tengah dengan gambar kartu untuk melihat
apakah ada gradien besar yang dibuat untuk memverifikasi apakah flash diaktifkan.
API yang diuji:
Lulus: Bagian tengah gambar kartu memiliki gradien besar, yang berarti flash menyala.
Contoh Gambar 45. 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. Merekam gambar dengan kamera yang remang-remang. Menggunakan gain analog tinggi untuk membantu memastikan gambar yang diambil memiliki noise. Merekam tiga gambar, untuk NR nonaktif, cepat, dan berkualitas tinggi. Juga mengambil gambar dengan gain rendah dan NR nonaktif, serta menggunakan
varians ini sebagai dasar. Makin tinggi rasio sinyal terhadap derau (SNR), makin baik kualitas gambar.
API yang diuji:
Lulus: SNR bervariasi dengan mode peredam bising yang berbeda dan berperilaku serupa dengan grafik berikut:
Gambar 49. Plot test_param_noise_reduction contoh SNR.
0: NONAKTIF, 1: CEPAT, 2: HQ, 3: MIN , 4: ZSL
Gambar 50. test_param_noise_reduction high gain nr=0 example.
Contoh Gambar 51. test_param_noise_reduction high gain nr=1.
Gambar 52. test_param_noise_reduction high gain nr=2 example.
Gambar 53. test_param_noise_reduction high gain nr=3 example.
Gambar 54. Contoh test_param_noise_reduction dengan gain rendah.
test_param_shading_mode
Menguji apakah parameter android.shading.mode
diterapkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Lulus: Mode shading diubah dan peta shading lensa dimodifikasi seperti yang diharapkan.
Gambar 55. Peta shading lensa test_param_shading_mode, contoh loop 0 mode 0.
Gambar 56. test_param_shading_mode lens shading map, contoh loop 0 mode 1.
Gambar 57. Peta shading lensa test_param_shading_mode, contoh loop 0 mode 2.
test_param_tonemap_mode
Menguji apakah parameter android.tonemap.mode
diterapkan. Menerapkan kurva pemetaan nada 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_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass:
test1
: Kedua gambar memiliki pemetaan nada linear, tetapin=1
memiliki gradien yang lebih curam. Saluran G (hijau) lebih terang untuk gambarn=1
.test2
: Tonemap yang sama, tetapi panjangnya berbeda. Gambarnya 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 postingan. Mengambil serangkaian gambar mentah dan YUV dengan sensitivitas yang 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_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Gambar mentah menjadi lebih gelap saat peningkatan dilakukan, sementara kecerahan gambar YUV tetap konstan.
Gambar 60. test_post_raw_sensitivity_boost raw s=3583 boost=0100 example.
Gambar 61. test_post_raw_sensitivity_boost raw s=1792 boost=0200 example.
Gambar 62. test_post_raw_sensitivity_boost raw s=0896 boost=0400 example.
Gambar 63. test_post_raw_sensitivity_boost raw s=0448 boost=0800 example.
Gambar 64. test_post_raw_sensitivity_boost raw s=0224 boost=1600 example.
Gambar 65. test_post_raw_sensitivity_boost raw s=0112 boost=3199 example.
Gambar 66. test_post_raw_sensitivity_boost raw plot means example.
Gambar 67. test_post_raw_sensitivity_boost YUV s=0112 boost=3199 example.
Gambar 68. test_post_raw_sensitivity_boost YUV s=0448 boost=0800 example.
Gambar 69. test_post_raw_sensitivity_boost YUV s=0896 boost=0400 example.
Gambar 70. test_post_raw_sensitivity_boost YUV s=1792 boost=0200 example.
Gambar 71. test_post_raw_sensitivity_boost YUV s=3585 boost=0100 example.
Gambar 72. test_post_raw_sensitivity_boost_yuv_plot_means
test_raw_exposure
Merekam serangkaian gambar mentah dengan waktu pencahayaan yang meningkat dan mengukur nilai piksel.
API yang diuji:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Lulus: Meningkatkan ISO (penguatan) membuat piksel lebih sensitif terhadap cahaya, sehingga plot bergerak ke kiri.
Gambar 73. Contoh test_raw_exposure ISO=55.
10⁰ adalah 1 ms, 10¹ adalah 10 ms, dan 10⁻¹ adalah 0,1 ms.
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 yang diterapkan android.noiseReduction.mode
untuk permintaan pemrosesan ulang.
Merekam gambar yang diproses ulang dengan kamera yang remang-remang. Menggunakan gain analog tinggi
untuk memverifikasi bahwa gambar yang diambil memiliki noise. Merekam tiga gambar yang diproses ulang,
untuk NR nonaktif, cepat, dan berkualitas tinggi. Merekam gambar yang diproses ulang dengan gain rendah
dan NR nonaktif, serta menggunakan varians ini sebagai dasar.
API yang diuji:
Lulus: FAST >= OFF, HQ >= FAST, dan HQ >> OFF.
Gambar 79. Contoh plot SNR versus mode NR umum.
test_tonemap_sequence
Menguji urutan gambar dengan kurva pemetaan nada yang berbeda. Mengambil 3 foto manual dengan pemetaan nada linear. Merekam 3 foto manual dengan pemetaan nada default. Menghitung delta antara setiap pasangan frame berturut-turut.
API yang diuji:
Lulus: Ada tiga frame identik yang diikuti oleh tiga frame identik lainnya yang berbeda.
Contoh Gambar 80. test_tonemap_sequence i=0.
Gambar 81. Contoh test_tonemap_sequence i=1.
Gambar 82. Contoh test_tonemap_sequence i=2.
Gambar 83. test_tonemap_sequence i=3 contoh.
Gambar 84. test_tonemap_sequence i=4 contoh.
Gambar 85. Contoh test_tonemap_sequence i=5.
test_yuv_jpeg_all
Menguji semua ukuran dan format yang dilaporkan untuk pengambilan gambar berfungsi. Menggunakan permintaan
manual dengan pemetaan nada linear sehingga YUV dan JPEG terlihat sama saat
dikonversi oleh modul image_processing_utils
. Gambar tidak disimpan secara default, tetapi dapat disimpan dengan mengaktifkan debug_mode
.
API yang diuji:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Lulus: Semua pusat gambar memiliki perbedaan akar rataan kuadrat (RMS) (nilai sinyal) maksimum dalam gambar yang dikonversi RGB dengan 3% gambar YUV beresolusi 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.
Contoh Gambar 87. test_yuv_plus_dng.
scene1_3
scene 1_3
adalah salinan scene 1_1
yang identik secara fungsional, yang menerapkan struktur subadegan untuk mengurangi durasi scene 1
yang diperpanjang.
test_capture_result
Menguji bahwa data yang valid ditampilkan dalam objek CaptureResult
. Pengujian ini terdiri dari pengambilan foto otomatis, pengambilan foto manual, dan pengambilan foto otomatis kedua.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Lulus: Metadata valid untuk semua pengambilan gambar dan setelan manual tidak bocor ke pengambilan gambar otomatis kedua. Membuat plot koreksi shading 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 menggambarkan varians terukur dari patch tengah kartu abu-abu dalam pengambilan gambar 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 gambar). 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_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Lulus: Parameter model mentah DNG sudah benar. Nilai RGB yang diharapkan cocok dengan nilai RGB sebenarnya yang diukur.
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, lalu 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
Merekam serangkaian gambar mentah dengan peningkatan gain dan mengukur noise. Merekam hanya raw, dalam burst.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Lulus: Setiap bidikan lebih bernoise daripada bidikan sebelumnya, karena gain meningkat.
Menggunakan varians sel petak statistik tengah.
Gambar 92. test_raw_burst_sensitivity_variance.
test_raw_sensitivity
Mengambil serangkaian gambar mentah dengan sensitivitas yang meningkat dan mengukur derau (varians) di 10% bagian tengah gambar. Menguji bahwa setiap gambar lebih bernoise daripada gambar sebelumnya.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Lulus: Varians meningkat dengan setiap pengambilan gambar.
Gambar 93. test_raw_sensitivity_variance.
test_yuv_plus_jpeg
Pengujian yang merekam satu frame sebagai output YUV dan JPEG. Menggunakan permintaan
manual dengan pemetaan nada linear sehingga YUV dan JPEG terlihat sama saat
dikonversi oleh modul image_processing_utils
.
API yang diuji:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan RMS (nilai 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 merekam satu frame sebagai output mentah (mentah 10-bit dan 12-bit) dan YUV jika didukung. Menggunakan permintaan manual dengan pemetaan nada linear sehingga raw dan YUV diharapkan sama. Membandingkan nilai RGB 10% tengah gambar yang dikonversi RGB. Logandroid.shading.mode
.
API yang diuji:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
Lulus: Gambar YUV dan raw serupa dan memiliki perbedaan RMS (nilai root-mean-square 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
Uji CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
di berbagai setelan ISO untuk mengonfirmasi korelasi antara ISO yang lebih tinggi dan
peningkatan tingkat derau.
API yang diuji:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Lulus: ISO yang lebih tinggi menghasilkan tingkat derau yang lebih tinggi.
Kriteria lewati pengujian
Pengujian test_sensitivity_priority.py
dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level
) 35 atau yang lebih rendah. - Perangkat tidak mengiklankan
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
diCONTROL_AE_AVAILABLE_PRIORITY_MODES
.
test_exposure_time_priority
Pengujian CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
di berbagai waktu eksposur, memeriksa kecerahan yang stabil dalam rentang
tempat ISO dapat mengompensasi.
API yang diuji:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Lulus: Kecerahan stabil (dalam toleransi) di seluruh waktu eksposur jika ISO berada dalam rentang kompensasinya.
Kriteria lewati pengujian
Pengujian test_exposure_time_priority
dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level
) 35 atau yang lebih rendah. - Perangkat tidak mengiklankan
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
diCONTROL_AE_AVAILABLE_PRIORITY_MODES
.
scene2_a
scene2_a
memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah dipilih agar memiliki beragam warna kulit. Diagram harus memiliki orientasi yang benar agar deteksi wajah berfungsi secara optimal.
Gambar 98. Contoh scene2_a.
test_autoframing
Menguji perilaku pembingkaian otomatis perangkat kamera. Melakukan zoom besar sehingga
tidak ada wajah dalam adegan yang terlihat, mengaktifkan mode pembingkaian otomatis dengan
menetapkan AUTOFRAMING
di CaptureRequest
ke True
, dan memverifikasi apakah semua
wajah dalam adegan asli dapat dideteksi saat statusnya menyatu (yaitu, saat AUTOFRAMING_STATE
di CaptureResult
ditetapkan ke
AUTOFRAMING_STATE_CONVERGED
).
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Lulus: Ketiga wajah terdeteksi.
test_display_p3
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.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Lulus: JPEG berisi profil ICC Display P3 dan warna di luar gamut sRGB.
test_effects
Merekam 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_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: Mengambil gambar adegan dengan efek OFF
dan gambar monokromatik
dengan efek yang disetel ke MONO
.
Figure 99. test_effects_MONO.
test_exposure_keys_consistent
Pengujian ini membandingkan luma rata-rata pengambilan gambar yang mendukung AE dengan pengambilan gambar yang tidak mendukung AE yang menerapkan parameter eksposur secara manual (sensitivitas, waktu eksposur, durasi frame, peningkatan sensitivitas pasca-raw) yang diterima dalam CaptureResult
pengambilan gambar yang mendukung AE.
API yang diuji:
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Lulus: Perbedaan luma relatif 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_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Lulus: Semua kombinasi berhasil direkam.
test_num_faces
Menguji deteksi wajah.
API yang diuji:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah.
Contoh mode deteksi wajah Gambar 100. test_num_faces 1.
test_reprocess_uv_swap
Pengujian bahwa pemrosesan ulang YUV tidak menukar bidang U dan V. Hal ini dideteksi dengan menghitung jumlah perbedaan absolut (SAD) antara gambar yang diproses ulang dan hasil pengambilan gambar yang tidak diproses ulang. Jika menukar bidang U dan V output rekaman yang diproses ulang menghasilkan peningkatan SAD, maka output diasumsikan memiliki bidang U dan V yang benar.
API yang diuji:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Lulus: Bidang U dan V tidak ditukar.
Gambar 101. Contoh test_reprocess_uv_swap.
scene2_b
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_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah dalam 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 seperti format JPEG terbesar yang tidak melebihi resolusi 1920x1440.
Menetapkan jpeg.quality
ke 100 dan merekam permintaan platform ganda. Mengonversi kedua gambar menjadi array RGB dan menghitung perbedaan root mean square (RMS) 3D antara kedua gambar.
Selain itu, pengujian ini memverifikasi bahwa output YUV untuk semua kasus penggunaan streaming yang didukung cukup mirip dengan YUV dengan kasus penggunaan STILL_CAPTURE
.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Lulus: Gambar YUV dan JPEG untuk kasus penggunaan STILL_CAPTURE
memiliki perbedaan RMS (nilai root-mean-square sinyal) kurang dari 3%; gambar YUV untuk semua kasus penggunaan yang didukung memiliki perbedaan RMS kurang dari 10% 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_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah.
Contoh mode deteksi wajah Gambar 103. test_num_faces.
test_jpeg_capture_perf_class
Menguji latensi pengambilan JPEG untuk class performa S sebagaimana ditentukan dalam bagian 2.2.7.2 Kamera di CDD.
Lulus: HARUS memiliki latensi pengambilan gambar JPEG camera2 < 1000 md untuk resolusi 1080p sebagaimana diukur oleh CTS camera PerformanceTest dalam kondisi pencahayaan ITS (3000 K) untuk kedua kamera utama.
test_camera_launch_perf_class
Menguji latensi peluncuran kamera untuk class performa S seperti yang ditentukan di bagian 2.2.7.2 Kamera dalam CDD.
Lulus: HARUS memiliki latensi startup camera2 (buka kamera ke frame pratinjau pertama) < 600 md yang diukur dengan PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000 K) untuk kedua kamera utama.
test_default_camera_hdr
Menguji bahwa pengambilan gambar kamera default adalah Ultra HDR untuk class performa 15 sebagaimana ditentukan dalam bagian 2.2.7.2 Kamera CDD.
Lulus: Perekaman paket kamera default HARUS berupa Ultra HDR untuk perangkat kelas 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_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah dalam kotak pembatas wajah.
scene2_e
test_continuous_picture
50 frame resolusi VGA direkam dengan setelan permintaan pengambilan pertama
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Lulus: Sistem 3A diselesaikan 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_FACES
android.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 memiliki berbagai warna 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_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah dalam 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 memiliki berbagai warna kulit dan kontras tinggi dengan latar belakang.
Contoh Gambar 106. 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_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Lulus: Menemukan tiga wajah dengan penanda wajah dalam kotak pembatas wajah.
Contoh Gambar 107. test_preview_num_faces.
scene3
scene3
menggunakan diagram ISO12233, dan sebagian besar pengujian menggunakan metode ekstraktor diagram untuk menemukan diagram dalam adegan. Oleh karena itu, sebagian besar gambar tersimpan tidak memiliki batas seperti gambar untuk adegan 1, 2, atau 4, tetapi hanya diagram. Diagram
harus berada dalam orientasi yang benar agar pencari diagram berfungsi secara optimal.
test_edge_enhancement
Menguji apakah parameter android.edge.mode
diterapkan dengan benar. Merekam gambar yang tidak diproses ulang untuk setiap mode tepi dan menampilkan ketajaman gambar output dan metadata hasil pengambilan gambar. Memproses permintaan pengambilan gambar dengan parameter mode tepi, sensitivitas, waktu pencahayaan, jarak fokus, dan permukaan output tertentu.
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 108. Contoh test_edge_enhancement edge=0.
Gambar 109. Contoh test_edge_enhancement edge=1 (mode cepat).
Gambar 110. 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 dalam CDD.
Gambar yang dicerminkan, dibalik, atau diputar dapat diidentifikasi dengan fitur berlian di dekat bagian tengah.
Lulus: Gambar tidak dibalik, dicerminkan, atau diputar.
Contoh patch adegan test_flip_mirror Gambar 111..
test_imu_drift
Menguji apakah unit pengukuran inersia (IMU) memiliki output yang stabil selama 30 detik saat perangkat tidak bergerak dan merekam pratinjau definisi tinggi.
API yang diuji:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass:
- Penyimpangan giroskop kurang dari 0,01 rad selama waktu pengujian.
- Varians pembacaan giroskop kurang dari 1E-7 rad2/s2/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.
Contoh penyimpangan giroskop Gambar 112. test_imu_drift.
Gambar 113. Contoh penyimpangan 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_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Lulus: Pengujian menemukan diagram dengan rotasi yang diharapkan (0 derajat saat penggantian lanskap ke potret dinonaktifkan, 90 derajat saat diaktifkan).
Contoh Gambar 114. test_landscape_to_portrait.
test_lens_movement_reporting
Menguji apakah tanda pergerakan lensa dilaporkan dengan benar. Merekam 24 gambar beruntun 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 ditegaskan di semua frame yang ketajamannya berada di antara ketajaman di beberapa frame pertama dengan lensa yang tetap diam pada jarak fokus optimal, dan beberapa frame terakhir dengan lensa yang tetap diam pada jarak fokus minimum. Frame yang tepat saat lensa bergerak tidaklah penting: yang penting adalah bahwa tanda gerakan ditegaskan saat lensa bergerak.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Lulus: Bendera gerakan lensa adalah True
dalam frame dengan perubahan ketajaman.
Mekanisme kegagalan:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) ditest_log.DEBUG
hanya ditegaskan dalam frame yang ketajamannya tidak berubah.- Frame dengan
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) ditest_log.DEBUG
memiliki perbedaan ketajaman dibandingkan dengan beberapa frame pertama pada jarak fokus optimal atau beberapa frame terakhir pada jarak fokus minimum.
test_reprocess_edge_enhancement
Menguji apakah metode pemrosesan ulang yang didukung untuk peningkatan kualitas tepi berfungsi dengan benar. Memproses permintaan pengambilan dengan mode edge pemrosesan ulang tertentu dan membandingkan mode yang berbeda untuk pengambilan dengan mode edge pemrosesan ulang dinonaktifkan.
API yang diuji:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Lulus: Ketajaman untuk berbagai mode tepi sudah benar. HQ
(mode 2) lebih tajam daripada OFF
(mode 0), dan peningkatan antara mode yang berbeda serupa.
Gambar 115. Contoh plot test_reprocess_edge_enhancement.
scene4
scene4
terdiri dari lingkaran hitam di latar belakang putih di dalam persegi.
Pengujian di scene4 dapat sensitif terhadap perataan, jadi mulai Android 15, Anda dapat menggunakan check_alignment.py
di direktori alat untuk mengaktifkan pemeriksaan perataan DUT dan diagram.
Gambar 116. contoh scene4.
test_30_60fps_preview_fov_match
Menguji apakah video pratinjau 30 FPS dan 60 FPS memiliki FoV yang sama. Pengujian merekam dua video, satu dengan 30 FPS dan yang lainnya dengan 60 FPS. Frame representatif dipilih dari setiap video dan dianalisis untuk memverifikasi bahwa perubahan FoV dalam kedua video tersebut sesuai dengan spesifikasi. Menguji bahwa rasio aspek lingkaran tetap konstan, pusat lingkaran tetap stabil, dan jari-jari lingkaran tetap konstan.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Lulus: Gambar tidak diregangkan, pusat 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 sangat berbeda ukurannya dengan video 60 FPS.
- Lingkaran dalam gambar yang diambil terdistorsi oleh pipeline pemrosesan.
- Lingkaran dalam gambar yang diambil dipangkas karena permintaan pengambilan gambar dengan 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 di semua format. Memverifikasi bahwa lingkaran tidak terdistorsi, lingkaran tidak bergerak 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_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Lulus: Gambar tidak diregangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV maksimum yang mungkin dipertahankan.
Mekanisme kegagalan:
- Kamera tidak sejajar dengan lingkaran yang ditampilkan di tablet di tengah adegan yang direkam.
- Lingkaran dalam 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 gambar dengan 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 pemosisian kamera untuk sistem multi-kamera. Menggunakan subkamera fisik multi-kamera, 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 dengan memeriksa apakah panjang fokus kamera berbeda.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Lulus: Pusat dan ukuran lingkaran sesuai yang diharapkan dalam gambar yang diproyeksikan dibandingkan dengan gambar yang diambil menggunakan data kalibrasi kamera dan panjang fokus.
Mekanisme kegagalan:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, danLENS_POSE_ROTATION
adalah nilai desain dan bukan data kalibrasi sebenarnya.- Sistem kamera tidak sesuai untuk konfigurasi pengujian, misalnya, menguji sistem kamera lebar dan ultra-lebar dengan platform pengujian RFoV. Untuk mengetahui informasi selengkapnya, lihat FAQ ITS-in-a-box Kamera Q1.
test_preview_aspect_ratio_and_crop
Mirip dengan pengujian test_aspect_ratio_and_crop
untuk pengambilan gambar diam, pengujian ini memeriksa format pratinjau yang didukung untuk memverifikasi bahwa
frame pratinjau tidak direntangkan atau dipangkas secara tidak tepat. Memverifikasi bahwa rasio aspek lingkaran tidak berubah, gambar yang dipangkas mempertahankan lingkaran di tengah frame, dan ukuran lingkaran tidak berubah untuk format konstan atau dengan resolusi yang berbeda (pemeriksaan FoV).
API yang diuji:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Gambar tidak diregangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV maksimum yang mungkin 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 spesifikasi.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Rasio aspek lingkaran tetap hampir konstan, lokasi tengah lingkaran tetap stabil, dan ukuran lingkaran tidak berubah lebih dari 20%.
test_video_aspect_ratio_and_crop
Merekam video lingkaran di dalam persegi dalam semua format video. Mengekstrak frame utama, dan memverifikasi 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#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Frame video tidak diregangkan, bagian tengah frame tidak berbeda lebih dari 3%, dan FoV maksimum yang mungkin dipertahankan.
scene5
scene5
memerlukan adegan abu-abu yang diterangi secara merata. Hal ini dilakukan dengan diffuser yang dipasang di atas lensa kamera. Sebaiknya gunakan diffuser berikut:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Untuk menyiapkan adegan, pasang diffuser di depan kamera dan arahkan kamera ke sumber cahaya sekitar 2000 lux. Gambar yang diambil untuk
scene5
memerlukan pencahayaan difus tanpa fitur yang terlihat. Berikut adalah
contoh gambar:
Gambar 117. Contoh pengambilan scene5.
test_lens_shading_and_color_uniformity
Menguji bahwa koreksi shading lensa diterapkan dengan tepat, dan warna adegan seragam monokrom didistribusikan secara merata. Melakukan pengujian ini pada frame YUV dengan 3A otomatis. Shading lensa dievaluasi berdasarkan saluran y. Mengukur nilai y rata-rata untuk setiap blok sampel yang ditentukan, dan menentukan lulus atau gagal dengan membandingkan nilai y tengah. Uji keseragaman warna dievaluasi dalam ruang merah-hijau dan biru-hijau.
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Lulus: Pada radius gambar yang ditentukan, varians nilai merah-hijau dan biru-hijau harus kurang dari 20% agar lulus pengujian.
scene6
scene6
adalah petak penanda ArUco yang dapat diidentifikasi secara unik.
Pengujian di scene6
dapat sensitif terhadap perataan, jadi mulai dari
15, Anda dapat menggunakan check_alignment.py
di
direktori alat untuk mengaktifkan pemeriksaan perataan 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 mengambil dua pengambilan gambar dalam rentang zoom, 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_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Lulus: Perbedaan RMS 3D antara gambar mentah yang diperkecil dan dipangkas 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 di seluruh rentang zoom dan memeriksa apakah penanda ArUco menjadi lebih besar saat kamera melakukan zoom in. Pengujian ini juga memeriksa apakah posisi penanda tengah berubah secara dapat diprediksi di setiap pengambilan. 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 Jetpack Camera (JCA) harus diinstal di perangkat sebelum pengujian.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif 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. Sesi pengambilan gambar kamera yang sama digunakan untuk menyatukan 3A dan mengambil gambar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Lulus: Ukuran relatif penanda yang diambil akurat terhadap metadata hasil rasio zoom.
test_preview_video_zoom_match
Pengujian yang 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 bertambahnya rasio zoom.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif 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 rasio zoom setiap frame pratinjau agar cocok dengan metadata pengambilan yang sesuai dari lensa ultrawide ke lensa lebar. Pengujian mengambil frame pratinjau di seluruh rentang zoom dan menemukan penanda ArUco yang paling dekat dengan pusat. Kemudian, pengujian akan memeriksa apakah posisi penanda tengah berubah secara dapat diprediksi selama setiap pengambilan. 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_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif penanda ArUco yang dipilih akurat untuk rasio zoom yang dilaporkan dari hasil pengambilan gambar yang sesuai untuk semua frame pratinjau. Jarak relatif penanda yang dipilih dari tengah gambar akurat untuk rasio zoom yang dilaporkan dari hasil pengambilan gambar yang sesuai dari semua frame pratinjau.
Gambar Gambar 124. test_preview_zoom yang menampilkan penanda terpilih yang paling dekat dengan bagian tengah
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 memverifikasi bahwa rentang rasio zoom yang ditampilkan di
CameraDeviceSetup#getSessionCharacteristics
dapat dicapai.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Lulus: Rasio zoom minimum dan maksimum dapat dicapai untuk setiap
SessionConfiguration
yang didukung dan tercantum dalam
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
scene7
adalah bingkai persegi panjang yang dibagi menjadi empat kuadran yang sama, yang 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 yang 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 rasio zoom yang bervariasi, 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 saat kamera fisik berubah. Titik ini menandai persilangan dari lensa UW ke 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 batas untuk gambar lensa UW dan W. Pemeriksaan AF mengevaluasi nilai estimasi ketajaman berdasarkan besarnya 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 ITS Kamera.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Agar pengujian lulus, pemeriksaan AE dan AWB harus lulus. Hasil pemeriksaan AF hanya digunakan untuk tujuan pembuatan log. 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_regions
danawb_regions
. Jika hanyaae_regions
yang didukung, maka 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_regions
danawb_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 yang diambil dengan lensa W.
scene8
scene8
adalah bingkai persegi panjang yang dibagi menjadi empat area yang sama, yang masing-masing berisi
potret yang diambil dengan eksposur berbeda atau ditimpa dengan warna berbeda
shade (shade biru, peningkatan eksposur, penurunan eksposur, shade 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 bahwa nilai RGB dan luma berbeda saat merekam pratinjau di berbagai wilayah AE dan AWB.
Pengujian merekam rekaman pratinjau 8 detik, melakukan pengukuran AE dan AWB pada setiap kuadran selama 2 detik. Kemudian, pengujian mengekstrak frame dari rekaman pratinjau setiap wilayah, dan menggunakan frame yang diekstrak untuk melakukan pemeriksaan AE dan AWB berikut:
- Pemeriksaan AE: Memverifikasi bahwa frame yang mengukur wilayah dengan penurunan eksposur memiliki nilai luma yang meningkat lebih dari 1% daripada frame yang mengukur wilayah dengan peningkatan eksposur. Hal ini memverifikasi bahwa gambar akan diterangkan saat mengukur area gelap.
- Pemeriksaan AWB: Memverifikasi bahwa rasio merah terhadap biru (dari nilai RGB rata-rata gambar) dalam frame dengan wilayah pengukuran biru lebih tinggi lebih dari 2% daripada frame dengan wilayah pengukuran kuning. Hal ini memverifikasi bahwa gambar memiliki nilai RGB yang seimbang saat mengukur area kuning (hangat) atau biru (dingin).
API yang diuji:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Lulus: Pemeriksaan AE dan AWB lulus.
Gambar 129. Pengukuran bingkai di area gelap dengan peningkatan eksposur.
Gambar 130. Pengukuran frame di area yang lebih terang dengan penurunan eksposur.
Mekanisme kegagalan:
Deteksi akurat keempat penanda ArUco sangat penting untuk pengujian ini. Jika deteksi awal gagal, sistem akan mencoba melakukan deteksi kedua menggunakan versi hitam putih gambar. Gambar skala abu-abu berikut mewakili langkah pemrosesan sekunder:
Gambar 131. Ketidakselarasan penanda ArUco.
test_color_correction_mode_cct
Menguji COLOR_CORRECTION_MODE
di berbagai suhu warna dan warna, memverifikasi perubahan rasio RGB
terhadap adegan pengambilan, scene8.
API yang diuji:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE
android.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
Lulus: Rasio RGB menunjukkan peningkatan atau penurunan yang diantisipasi relatif terhadap suhu dan warna yang dipilih.
Kriteria lewati pengujian
Pengujian test_color_correction_mode_cct
dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level
) 35 atau yang lebih rendah. - Perangkat tidak mengiklankan
COLOR_CORRECTION_MODE_CCT
diCOLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
.
scene9
scene9
terdiri dari ribuan lingkaran berwarna dan berukuran acak untuk membuat adegan dengan pengulangan yang sangat rendah guna menguji algoritma kompresi JPEG.
Gambar 132. Contoh scene9.
test_jpeg_high_entropy
Menguji apakah kompresi JPEG kamera berfungsi pada scene9
dengan entropi tinggi dan faktor kualitas JPEG ditetapkan ke 100%. Faktor zoom ditingkatkan untuk memverifikasi bahwa
adegan yang ditampilkan di tablet mengisi 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. Menjalankan 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 merepresentasikan faktor pembagian.)
Gambar 133. Rata-rata matriks DQT luma dan chroma kamera belakang Pixel 4 dibandingkan dengan kualitas JPEG.
Gambar 134. Contoh pengujian yang gagal.
scene_video
scene_video
adalah adegan video yang terdiri dari empat lingkaran
berwarna berbeda yang bergerak maju mundur pada kecepatan frame yang berbeda dengan latar belakang putih.
Contoh scene_video Gambar 135..
test_preview_frame_drop
Menguji apakah kecepatan frame pratinjau yang diminta dipertahankan dengan adegan dinamis. Pengujian ini berjalan di semua kamera yang diekspos ke aplikasi pihak ketiga.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Kecepatan frame pratinjau berada pada maksimum rentang kecepatan frame yang diminta, dan variasi rata-rata antara frame berurutan kurang dari toleransi relatif yang ditetapkan dalam pengujian.
scene_extensions
Pengujian scene_extensions
ditujukan untuk ekstensi kamera dan harus menggunakan
Camera ITS-in-a-Box,
karena memerlukan kontrol yang akurat terhadap 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 dengan kontras rendah di sebelah kanan.
Contoh scene_hdr Gambar 136..
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#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Lulus: Ekstensi HDR mengurangi jumlah perubahan kontras yang diperlukan untuk mendeteksi kode QR atau mengurangi gradien di seluruh kode QR.
scene_low_light
Adegan scene_low_light
terdiri dari petak persegi dengan berbagai nuansa
abu-abu dengan latar belakang hitam dan petak persegi dibatasi oleh garis
merah. Kotak-kotak tersebut disusun dalam orientasi kurva Hilbert.
Gambar 137. Contoh scene_low_light.
test_night_extension
Menguji Night extension. Mengambil rekaman 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 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 gambar mencakup wilayah yang diukur yang sesuai dengan persegi panjang yang mengikat petak persegi. Penambahan ini mengubah kriteria lulus nilai minimum.
API yang diuji:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Pass:
- Untuk perangkat yang menjalankan Android 16 atau yang lebih tinggi, nilai luma rata-rata dari 6 kotak pertama harus minimal 80, dan perbedaan nilai luma rata-rata dari kotak berurutan hingga kotak 5 dan 6 harus minimal 18,75.
- Untuk perangkat yang menjalankan Android 15 dan yang lebih lama, nilai luma rata-rata dari 6 kotak pertama harus minimal 85, dan perbedaan nilai luma rata-rata dari kotak berurutan hingga kotak 5 dan 6 harus minimal 17.
Plot luminans berikut menunjukkan tampilan hasil pengujian yang lulus.
Gambar 138. Contoh pengujian yang berhasil untuk pemandangan malam dengan cahaya redup.
test_low_light_boost_extension
Menguji mode AE Peningkatan Cahaya Redup. Jika Camera2 mendukung mode AE peningkatan cahaya rendah, pengujian ini dilakukan untuk Camera2. Jika ekstensi kamera mode malam didukung dan ekstensi mendukung mode AE peningkatan cahaya redup, pengujian ini juga dilakukan untuk ekstensi kamera mode malam. Pengujian ini menyetel mode AE ke peningkatan 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 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 gambar mencakup wilayah yang diukur yang sesuai dengan persegi panjang yang mengikat petak persegi. Penambahan ini mengubah kriteria lulus nilai minimum.
API yang diuji:
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass:
Untuk perangkat yang menjalankan Android 16 atau yang lebih tinggi, nilai luma rata-rata dari 6 kotak pertama harus minimal 54, dan perbedaan nilai luma rata-rata dari kotak berurutan hingga kotak 5 dan 6 harus minimal 17.
Untuk perangkat yang menjalankan Android 15 dan yang lebih lama, nilai luma rata-rata 6 kotak pertama harus minimal 70, dan perbedaan nilai luma rata-rata kotak berurutan hingga kotak 5 dan 6 harus minimal 18.
scene_tele
Persyaratan utama untuk pengujian scene_tele
adalah jarak bagan harus minimal sama dengan jarak fokus minimum lensa telefoto. Karena jarak fokus minimum ini dapat berbeda di antara perangkat, Anda harus mengonfigurasi penyiapan agar sesuai dengan kamera telefoto tertentu.
Penyiapan Gambar 139. scene_tele berdasarkan jarak fokus kamera lebar dan tele.
Untuk mengetahui informasi selengkapnya tentang penyiapan hardware pengujian, lihat Penyiapan rig ekstensi Tele.
scene6_tele
Adegan scene6_tele
terdiri dari petak penanda ArUco di latar belakang putih.
Jika hasil pengambilan gambar scene6_tele
terlihat terlalu terang di
rig modular, lepaskan
pelat depan
rig modular.
Putuskan koneksi rig pengujian WFoV dari ekstensi dan lepaskan dudukan ponsel.
Gambar 140. Putuskan koneksi rig pengujian WFoV dari ekstensi dan lepaskan dudukan ponsel.
Gambar 141. 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_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif 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_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Lulus: Ukuran relatif 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 persegi panjang ini dibagi menjadi empat kuadran yang sama, yang 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 yang akurat dari bingkai
persegi panjang utama pada berbagai rasio zoom.
test_multi_camera_switch_tele
Pengujian ini memverifikasi bahwa selama perekaman pratinjau pada rasio zoom yang bervariasi, 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 saat kamera fisik berubah. Titik ini menandai peralihan dari lensa W ke lensa tele.
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 tele. Pemeriksaan AWB memverifikasi bahwa rasio merah-hijau dan biru-hijau berada dalam nilai batas untuk gambar lensa lebar dan tele. Pemeriksaan AF mengevaluasi nilai estimasi ketajaman berdasarkan besarnya gradien rata-rata antara gambar lensa lebar dan tele.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Agar pengujian lulus, pemeriksaan AE, AWB, dan AF harus lulus semua. Berikut adalah kriteria untuk setiap pemeriksaan:
- Pemeriksaan AE: Perubahan luma antara gambar lensa lebar dan tele harus kurang dari 4%.
- Pemeriksaan AWB: Dalam ruang warna LAB, delta C antara merah-hijau dan biru-hijau untuk sudut lebar dan telefoto tidak boleh melebihi 10.
- Pemeriksaan AF: Ketajaman gambar lensa tele harus lebih tinggi daripada lensa W.
scene_flash
Pengujian scene_flash
memerlukan adegan gelap di kotak sensor fusion.
test_auto_flash
Pengujian bahwa flash otomatis dipicu dalam adegan gelap untuk kamera belakang dan 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 kartu lebih terang saat flash otomatis diaktifkan. Untuk memicu lampu kilat otomatis, lampu di rig pengujian harus dimatikan. Lampu dapat dimatikan secara otomatis dengan pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian dapat berfungsi dengan benar. Aplikasi Jetpack Camera (JCA) harus diinstal di perangkat sebelum pengujian. Flash otomatis untuk kamera belakang mengandalkan pemicuan status AE, tetapi flash otomatis untuk kamera depan tidak mengandalkan AE dan selalu dipicu.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Lulus: Bagian tengah gambar kartu dengan flash otomatis diaktifkan lebih terang daripada gambar pemandangan asli untuk semua kamera.
test_flash_strength
Pengujian yang mengontrol kekuatan kilatan dalam mode
SINGLE
diterapkan dengan benar.
Memverifikasi bahwa jika perangkat mendukung kontrol kekuatan flash selama penggunaan kamera dalam mode SINGLE
, kekuatan flash berubah dengan tingkat kekuatan yang diminta berbeda. Memverifikasi bahwa kontrol kekuatan kilatan berfungsi dengan
AE_MODES
yang berbeda.
Misalnya, jika mode eksposur otomatis adalah ON
atau OFF
, tingkat kekuatan flash akan memengaruhi kecerahan, dan jika mode adalah ON_AUTO_FLASH
, tingkat kekuatan flash tidak akan memengaruhi 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 dapat berfungsi dengan benar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Pass:
Jika mode eksposur otomatis adalah ON
atau OFF
, kecerahan patch gambar akan meningkat seiring peningkatan level kekuatan flash dari tanpa flash hingga FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
Jika mode eksposur otomatis adalah ON_AUTO_FLASH
, perbedaan kecerahan
patch gambar berada dalam toleransi saat tingkat kekuatan flash meningkat dari
tanpa flash hingga FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Menguji apakah snapshot LED tidak membuat gambar menjadi jenuh atau berwarna.
Pengujian ini menambahkan pengontrol pencahayaan ke Kotak Sensor Fusion untuk mengontrol lampu. Dengan lampu yang disetel ke OFF
, pengujian mengambil gambar dengan
mode AUTO_FLASH
yang disetel ke ON
. Selama pengambilan ini, pengujian menjalankan urutan pra-pengambilan dengan pemicu aePrecapture
yang disetel ke START
, dan menyetel intent pengambilan ke Preview
untuk mengambil gambar dengan flash.
Karena pengambilan gambar memiliki hotspot yang berbeda karena kilatan, pengujian menghitung rata-rata gambar kilatan dari seluruh pengambilan gambar dan memverifikasi apakah nilai berada dalam rentang (68, 102). Untuk memeriksa apakah gambar memiliki keseimbangan putih yang wajar, pengujian menghitung rasio merah-hijau dan biru-hijau, lalu memverifikasi apakah rasio tersebut berada dalam rentang 0,95 dan 1,05.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Lulus: Rasio merah-hijau dan biru-hijau berada dalam rentang 0,95 dan 1,05. Rerata 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 ekstensi Kamera Mode Malam yang masih mengambil gambar. 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 melakukan langkah-langkah berikut:
- Inisialisasi: Pengujian melakukan inisialisasi
ItsSession
dan mengambil properti kamera. Aplikasi 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 dinyalakan 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 mengulangi prosedur yang sama seperti untuk sesi
Camera2
, tetapi menggunakan sesiCameraExtension
dengan ekstensiEXTENSION_NIGHT
.
- Pengujian mengulangi prosedur yang sama seperti untuk sesi
- Pembersihan: Pengujian ditutup
ItsSession
dan melepaskan pengontrol pencahayaan.
API yang diuji:
Pass:
- Saat lampu menyala, indikator mode malam harus dalam status
OFF
. - Saat lampu mati, indikator mode malam harus dalam status
ON
. - Berlaku untuk sesi
Camera2
danCameraExtension
.
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_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Kecepatan frame pratinjau berada pada minimum rentang kecepatan frame yang diminta, dan variasi antar-frame kurang dari toleransi absolut yang ditetapkan dalam pengujian.
test_torch_strength
Pengujian yang mengontrol kekuatan kilatan dalam mode
TORCH
diterapkan dengan benar.
Memverifikasi bahwa jika perangkat mendukung kontrol kekuatan flash selama penggunaan kamera dalam mode TORCH
, kekuatan senter berubah dengan tingkat kekuatan yang diminta berbeda. Memverifikasi bahwa kontrol kekuatan kilatan berfungsi dengan
AE_MODES
yang berbeda.
Misalnya, jika mode eksposur otomatis adalah ON
atau OFF
, tingkat kekuatan flash akan memengaruhi kecerahan, dan jika mode adalah ON_AUTO_FLASH
, tingkat kekuatan flash tidak akan memengaruhi kecerahan.
Memverifikasi bahwa kekuatan senter tetap sama selama durasi
burst, menyimulasikan sesi pengambilan video. Untuk melakukan pengujian, lampu di
alat pengujian harus dimatikan. Lampu dapat dimatikan secara otomatis dengan
pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian dapat berfungsi dengan benar.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Pass:
Jika mode eksposur otomatis adalah ON
atau OFF
, kecerahan patch burst gambar akan meningkat seiring peningkatan level kekuatan flash dari tanpa flash hingga FLASH_TORCH_STRENGTH_MAX_LEVEL
.
Jika mode eksposur otomatis adalah ON_AUTO_FLASH
, perbedaan kecerahan patch burst gambar berada dalam toleransi saat tingkat kekuatan flash meningkat dari tanpa flash hingga FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
Pengujian fusi sensor memerlukan gerakan ponsel tertentu di depan pola papan catur dan penanda ArUco. Untuk hasil yang optimal, pastikan kartu uji dipasang datar. Diagram yang tidak datar memengaruhi perhitungan rotasi untuk banyak
pengujian. Diagram harus mengisi bagian belakang kotak penggabungan sensor dengan mencetak
pada ukuran 17x17 inci. (43x43 cm). Pengujian sensor_fusion
dapat diotomatiskan
dengan Sensor Fusion Box.
Gambar 142. Diagram gabungan sensor.
Gambar 143. Diagram penggabungan sensor yang mengisi bagian belakang kotak penggabungan sensor.
test_lens_intrinsic_calibration
Menguji perubahan intrinsik pusat optik lensa 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_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Pusat optik intrinsik lensa berubah sebesar 1 piksel atau lebih. Jika sampel intrinsik lensa didukung, pusat optik sampel intrinsik lensa 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 144. Contoh plot test_lens_intrinsic_calibration yang menunjukkan perubahan titik utama dalam piksel untuk setiap frame.
test_multi_camera_frame_sync
Pengujian yang menunjukkan bahwa stempel waktu frame yang diambil oleh kamera logis berada dalam 10 md dengan menghitung sudut persegi dalam papan catur untuk menentukan stempel waktu.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Lulus: Sudut antara gambar dari setiap kamera tidak berubah secara signifikan saat ponsel diputar.
test_preview_distortion
Pengujian bahwa distorsi dikoreksi di seluruh frame pratinjau yang diambil pada berbagai tingkat zoom. Untuk setiap frame pratinjau, pengujian menghitung titik ideal berdasarkan intrinsik dan ekstrinsik kamera.
Pada 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 secara visual area error distorsi.
Gambar 145. Gambar papan catur dengan poin ideal berwarna hijau dan poin sebenarnya berwarna merah.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Kesalahan distorsi yang dinormalisasi dari setiap frame pratinjau kurang dari nilai minimum yang ditetapkan dalam pengujian.
test_preview_stabilization
Pengujian yang menstabilkan pratinjau video berputar kurang dari giroskop.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Rotasi sudut maksimum di atas frame kurang dari 70% rotasi giroskop.
Berikut adalah contoh video dengan dan tanpa stabilisasi:
Gambar 146. Contoh video dengan stabilisasi.
Gambar 147. Contoh video tanpa stabilisasi.
test_sensor_fusion
Menguji perbedaan stempel waktu antara kamera dan giroskop untuk aplikasi AR dan VR. Ponsel diputar 90 derajat 10 kali di depan pola papan catur. Gerakan sekitar 2 detik pulang pergi. Pengujian
ini dilewati jika tidak ada giroskop atau jika parameter sumber stempel waktu
REALTIME
tidak diaktifkan.
Pengujian test_sensor_fusion
menghasilkan sejumlah plot. Dua plot terpenting untuk men-debug adalah:
test_sensor_fusion_gyro_events
: Menampilkan peristiwa giroskop untuk ponsel selama pengujian. Pergerakan ke arah x dan y menunjukkan bahwa ponsel tidak terpasang dengan aman pada pelat dudukan, sehingga mengurangi kemungkinan lulusnya pengujian. Jumlah siklus dalam plot bergantung pada kecepatan penulisan untuk menyimpan frame.Contoh peristiwa giroskop test_sensor_fusion Gambar 148..
test_sensor_fusion_plot_rotations
: Menampilkan keselarasan giroskop dan peristiwa kamera. Plot ini harus menunjukkan kecocokan gerakan antara kamera dan giroskop hingga +/-1 md.Gambar 149. Contoh rotasi plot test_sensor_fusion.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Lulus: Perbedaan stempel waktu kamera dan giroskop kurang dari 1 md menurut 7.3.9 Sensor dengan Akurasi Tinggi dalam CDD.
Mekanisme kegagalan:
- Error offset: Offset giroskop kamera tidak dikalibrasi dengan benar hingga dalam +/-1 md.
- Frame drop: Pipeline tidak cukup cepat untuk merekam 200 frame secara berurutan.
- Error soket:
adb
tidak dapat terhubung dengan andal ke DUT cukup lama untuk menjalankan pengujian. - Diagram tidak dipasang datar. Plot
test_sensor_fusion_plot_rotations
memiliki frame dengan rotasi giroskop dan kamera yang sangat bervariasi saat kamera berputar melalui bagian diagram yang tidak datar. - Kamera tidak dipasang dengan rata. Plot
test_sensor_fusion_gyro_events
menunjukkan pergerakan di bidang X dan Y. Kegagalan ini lebih umum terjadi pada kamera depan karena kamera belakang sering kali memiliki tonjolan yang lebih tinggi dari bagian bodi ponsel lainnya, sehingga menciptakan kemiringan saat memasang bagian belakang ponsel ke pelat dudukan.
test_video_stabilization
Pengujian yang menstabilkan video berputar kurang dari giroskop.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Lulus: Rotasi sudut maksimum di atas frame kurang dari 60% rotasi giroskop.
Berikut adalah contoh video dengan dan tanpa stabilisasi.
Gambar 150. Contoh video dengan stabilisasi.
Gambar 151. Contoh video tanpa stabilisasi.
test_video_stabilization_jca
Pengujian yang menstabilkan video yang direkam menggunakan JCA berputar kurang dari giroskop. JCA harus diinstal di perangkat sebelum pengujian.
API yang diuji:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.CamcorderProfile
android.media.MediaRecorder
Lulus: Rotasi sudut maksimum pada frame yang diekstrak dari video yang direkam menggunakan JCA kurang dari 70% rotasi giroskop.
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 adegan penggabungan sensor.
test_feature_combination
Menguji semua kombinasi dari berbagai kombinasi aliran, 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 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#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Lulus: Untuk setiap kombinasi fitur yang didukung:
- Streaming pratinjau distabilkan jika stabilisasi pratinjau diaktifkan.
- Kecepatan frame pratinjau berada dalam
AE_TARGET_FPS_RANGE
yang dikonfigurasi. - Ruang warna streaming pratinjau yang direkam cocok dengan ruang warna yang ditetapkan.
- Pengambilan gambar Ultra HDR memiliki peta gain yang valid.
scene_ip
Di Android 16 dan yang lebih tinggi, adegan scene_ip
memungkinkan pemeriksaan kesamaan gambar antara aplikasi kamera default dan aplikasi kamera Jetpack (JCA) untuk mengidentifikasi perbedaan besar antara gambar yang diambil. JCA mereplikasi pengambilan gambar aplikasi media sosial dan menyediakan gambar dasar yang kemudian diproses dan dioptimalkan oleh aplikasi media sosial.
Persyaratan penyiapan hardware
Penyiapan hardware berikut diperlukan untuk pengujian scene_ip
:
- Pengujian dilakukan di Gen2 camera ITS-in-a-box.
- Pengontrol penerangan dan servo yang merupakan bagian dari rig Gen2 digunakan untuk mengontrol lingkungan pengujian
- Diagram fitur pengujian ditempatkan di dalam rig Gen2.
Gambar 152. Contoh Gen2chart_sample.
Kriteria lewati pengujian
Pengujian scene_ip
dilewati jika salah satu kriteria berikut terpenuhi:
- Perangkat memiliki level API pertama (
first_api_level
) 35 atau yang lebih rendah. - Perangkat bukan perangkat ponsel dengan perangkat kamera utama depan dan belakang (misalnya, tablet atau TV).
test_default_jca_ip
Mengambil gambar grafik fitur pengujian dalam kondisi pencahayaan yang 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 pengambilan.
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.
Lulus bagian dasar: Pengujian lulus pemeriksaan FoV, kecerahan, dan white balance. Di Android 16, pengujian ini tidak diwajibkan
(NOT_YET_MANDATED
).