Pengujian ITS Kamera

Halaman ini menyediakan daftar lengkap pengujian pada Camera Image Test Suite (ITS), yang merupakan bagian dari Android Compatibility Test Suite (CTS) Verifier. Pengujian ITS adalah pengujian fungsional, yang berarti pengujian ini tidak mengukur kualitas gambar, tetapi semua fungsi kamera yang diiklankan berfungsi seperti yang diharapkan. Dokumen ini memungkinkan developer dan penguji memahami fungsi setiap pengujian dan cara men-debug kegagalan pengujian.

Camera ITS memenuhi pengujian dengan properti kamera, level API, dan level class performa media (MPC) yang diperlukan. Untuk level API, ITS menggunakan ro.product.first_api_level untuk membatasi pengujian yang ditambahkan di level API tertentu yang menguji pengalaman pengguna yang negatif untuk fungsi di level API yang lebih rendah. ITS menggunakan ro.vendor.api_level untuk menguji fitur yang ditambahkan dalam level API tertentu yang memerlukan kemampuan hardware baru. Jika ro.odm.build.media_performance_class ditentukan untuk suatu perangkat, ITS memerlukan pengujian tertentu yang akan dijalankan, bergantung pada tingkat MPC.

Pengujian dikelompokkan berdasarkan scene sebagai berikut:

  • scene0: Menangkap metadata, jitter, giroskop, getaran
  • scene1: Eksposur, sensitivitas, kompensasi EV, YUV vs JPEG/RAW
  • scene2: Deteksi wajah, pengujian yang memerlukan scene warna atau kegelapan total
  • scene3: Peningkatan tepi, gerakan lensa
  • scene4: Rasio aspek, pemangkasan, ruang pandang
  • scene5: Bayangan lensa
  • scene6: Zoom
  • scene_extensions: Ekstensi kamera
  • sensor_fusion: Offset pengaturan waktu kamera/giroskop

Lihat masing-masing bagian untuk deskripsi setiap adegan.

adegan0

Pengujian scene0 tidak memerlukan informasi suasana tertentu. Namun, ponsel harus diam untuk pengujian giroskop dan getaran.

test_burst_capture

Memverifikasi bahwa seluruh pipeline perekaman dapat mengimbangi kecepatan pengambilan ukuran penuh dan waktu CPU.

API yang diuji:

Lulus: Mengambil burst gambar ukuran penuh dan kamera cukup cepat untuk menghindari waktu tunggu.

test_capture_result_dump

Menguji apakah hasil pengambilan ditampilkan dari pengambilan manual, lalu membuangnya.

API yang diuji:

Lulus: Menyelesaikan perekaman dan membuang hasil tangkapan.

bias_giroskop pengujian

Menguji apakah giroskop memiliki output yang stabil saat perangkat tidak bergerak. Data diplot sebagai rata-rata 20 titik data.

API yang diuji:

Lulus: Delta pembacaan giroskop kurang dari 0,01 dari waktu ke waktu.

{i>test_gyro_bias_plot<i}.png

{i>test_gyro_bias_plot<i}.png

jitter_pengujian

Mengukur jitter di stempel waktu kamera.

API yang diuji:

Lulus: Setidaknya ada delta 30 md di antara frame.

{i>test_jitter_plot<i}.png

test_jitter_plot.png (Perhatikan rentang sumbu y yang kecil. {i>Jitter<i} sebenarnya berukuran kecil di plot ini.)

metadata_pengujian

Menguji validitas entri metadata. Melihat hasil pengambilan gambar dan objek karakteristik kamera. Pengujian ini menggunakan eksposur auto_capture_request dan nilai perolehan karena konten gambar tidak penting.

API yang diuji:

Lulus: Level hardware, rollingShutterSkew, tag frameDuration, timestampSource, croppingType, blackLevelPattern, pixel_pitch, FoV, jarak hiperfokal ada dan memiliki nilai yang valid.

{i>test_param_sensitivity_burst<i}

Menguji apakah parameter android.sensor.sensitivity diterapkan dengan benar dalam burst. Memeriksa metadata output saja.

API yang diuji:

Lulus: Data output memiliki toleransi error kurang dari 0,2%.

uji_baca_tulis

Menguji apakah perangkat menulis nilai eksposur dan mendapatkan nilai yang benar dengan membaca kembali metadata pengambilan.

API yang diuji:

Lulus: Membaca dan menulis nilai yang cocok di semua foto.

peristiwa_sensor_pengujian

Menguji apakah perangkat mengajukan kueri dan mencetak peristiwa sensor untuk perangkat yang mengiklankan dukungan fusion sensor. Sensor yang diharapkan adalah akselerometer, giroskop, dan magnetometer. Pengujian ini hanya berfungsi jika layar aktif, yang berarti perangkat tidak dalam mode standby.

API yang diuji:

Lulus: Peristiwa untuk setiap sensor diterima.

uji_pola_warna_solid

Pengujian bahwa pola pengujian warna solid dibuat dengan benar untuk membisukan kamera. Jika pembisuan kamera didukung, pola pengujian warna solid harus didukung. Jika pembisuan kamera tidak didukung, pola pengujian warna solid hanya diuji jika kemampuannya diiklankan.

Jika gambar RAW didukung, penetapan warna juga akan diuji. Warna yang diuji adalah hitam, putih, merah, biru, dan hijau. Untuk kamera yang tidak mendukung gambar RAW, hanya warna hitam yang akan diuji.

API yang diuji:

Lulus: Pola pengujian solid yang didukung adalah warna yang benar dan ada varians rendah pada gambar.

pola_pengujian_pengujian

Menguji parameter android.sensor.testPatternMode guna mengambil frame untuk setiap pola pengujian yang valid dan memeriksa apakah frame dibuat dengan benar untuk warna solid dan batang warna. Pengujian ini mencakup langkah-langkah berikut:

  1. Mengambil gambar untuk semua pola pengujian yang didukung.
  2. Melakukan pemeriksaan ketepatan sederhana untuk pola pengujian warna solid dan batang warna.

API yang diuji:

Lulus: Pola pengujian yang didukung dibuat dengan benar.

pola_pengujian_tes_2

tes_test_patterns_2.jpg

kurva_peta_nada_pengujian

Menguji konversi pola pengujian dari RAW ke YUV dengan peta nada linear. Pengujian ini memerlukan android.sensor.testPatternMode = 2 (Color_BARS) untuk menghasilkan pola gambar yang sempurna untuk konversi peta nada. Memastikan pipeline memiliki output warna yang tepat dengan peta nada linear dan input gambar ideal (mengandalkan test_test_patterns).

API yang diuji:

Lulus: YUV dan RAW terlihat mirip satu sama lain.

uji_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

stempel waktu_test_unified

Menguji apakah peristiwa gambar dan sensor gerakan berada dalam domain waktu yang sama.

API yang diuji:

Lulus: Stempel waktu gerakan berada di antara dua stempel waktu gambar.

pembatasan_getaran_pengujian

Menguji apakah getaran perangkat berfungsi seperti yang diharapkan.

API yang diuji:

Lulus: Perangkat tidak akan bergetar saat dibisukan oleh API pembatasan audio kamera.

adegan1

scene1 adalah diagram abu-abu. Diagram abu-abu harus menutupi 30% bagian tengah ruang pandang kamera. Diagram abu-abu diperkirakan akan sedikit menantang 3A (eksposur otomatis, white balance otomatis, fokus otomatis) karena area tengah tidak memiliki fitur. Namun, permintaan pengambilan menentukan seluruh scene yang menyertakan fitur yang memadai agar 3A dapat dikonvergensi.

Kamera RFoV dapat diuji di rig pengujian WFoV atau RFoV. Jika kamera RFoV diuji di rig pengujian WFoV, diagram akan diskalakan sebesar 2⁄3 untuk memastikan beberapa batas untuk diagram abu-abu di FoV agar dapat membantu 3A dikonvergensi. Untuk deskripsi yang lebih mendetail tentang rig pengujian kamera, lihat Kamera ITS in-a-box.

adegan1

scene1: Diagram ukuran penuh (kiri). 2⁄3 bagan berskala (kanan).

tes_3a

Menguji konvergensi 3A dengan target yang cukup menantang.

API yang diuji:

Lulus: 3A konvergen dan nilai 3A yang ditampilkan valid.

tes_a_af

Menguji algoritma eksposur otomatis (AE) dan fokus otomatis (AF) 3A satu per satu.

API yang diuji:

Lulus: 3A konvergen dan nilai 3A yang ditampilkan adalah legal.

{i>test_ae_precapture_trigger<i}

Menguji mesin status AE saat menggunakan pemicu precapture. Menangkap lima permintaan manual dengan AE dinonaktifkan. Permintaan terakhir memiliki pemicu precapture AE, yang harus diabaikan karena AE dinonaktifkan.

API yang diuji:

Lulus: AE konvergensi.

pengujian_auto_vs_manual

Pengujian yang mengambil foto otomatis dan manual akan terlihat sama.

API yang diuji:

Lulus: Perolehan dan transformasi white balance manual yang dilaporkan dalam setiap kecocokan hasil pengambilan gambar dengan white balance otomatis estimate dari algoritma 3A kamera.

pengujian_auto_vs_otomatis_manual

test_auto_vs_manual_auto.jpg

pengujian_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

pengujian_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

tes_hitam_putih

Menguji apakah perangkat menghasilkan gambar hitam putih sepenuhnya. Mengambil dua foto, yang pertama dengan penguatan yang sangat rendah dan eksposur yang singkat, yang menghasilkan foto hitam, dan yang kedua dengan penguatan yang sangat tinggi dan eksposur panjang, yang akan menghasilkan foto putih.

API yang diuji:

Lulus: Menghasilkan gambar hitam dan putih. Saluran saturasi gambar putih memiliki nilai RGB [255, 255, 255] dengan margin error kurang dari 1% selisih.

tes_hitam_putih_hitam tes_hitam_putih_hitam
tes_hitam_putih_hitam.jpg tes_black_white_white.jpg

{i>test_black_white_plot_means<i}

{i>test_black_white_plot_means<i}.png

test_burst_sameness_manual (manual)

Mengambil 5 burst dari 50 gambar dengan setelan pengambilan manual dan memeriksa apakah semuanya identik. Pengujian ini dapat digunakan untuk mengidentifikasi apakah ada frame sporadis yang diproses secara berbeda atau memiliki artefak.

API yang diuji:

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

rata-rata_pengujian_burst_sameness_manual

test_burst_sameness_manual_mean.jpg (hanya dalam bahasa Inggris)

{i>test_burst_sameness_plot_average<i}

{i>test_burst_sameness_plot_means.png<i}

hasil_tangkapan_tes

Menguji apakah data yang valid ditampilkan kembali di objek CaptureResult. Melakukan pengambilan gambar otomatis, manual, dan otomatis.

API yang diuji:

Pass: Metadata valid untuk semua pengambilan dan setelan manual tidak bocor ke pengambilan otomatis kedua. Menggambarkan koreksi bayangan lensa untuk hasil screenshot.

{i>test_capture_result_plot_lsc_auto_ch0<i}

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Menguji apakah streaming RAW tidak dapat dipangkas.

API yang diuji:

Lulus: Gambar YUV dipangkas di tengah, tetapi tidak gambar RAW.

pangkas_pangkas_uji_raw_comp_raw_pangkas

uji_pangkas_region_raw_comp_raw_pangkas.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

hasil_pangkas_uji_raw_comp_yuv_pangkas

uji_pangkas_wilayah_raw_comp_yuv_pangkas.jpg

wilayah_pangkas_uji_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_region

Menguji apakah region pangkas berfungsi. Mengambil gambar penuh dan membuat patch 5 region yang berbeda (sudut dan tengah.) Mengambil gambar dengan setelan crop untuk 5 region. Membandingkan nilai patch dan gambar pemangkasan.

API yang diuji:

Lulus: Gambar area yang dipangkas cocok dengan patch yang sesuai dengan gambar pangkas.

model_kerusakan_dng

Memverifikasi bahwa parameter model mentah DNG sudah benar. Plot menggambarkan varian terukur dari patch tengah kartu abu-abu dalam foto mentah yang ditangkap pada rentang sensitivitas, dan membandingkan nilai-nilai ini dengan varian yang diharapkan pada setiap sensitivitas oleh model derau DNG di HAL kamera (berdasarkan parameter O,S yang ditampilkan dalam objek hasil pengambilan gambar). Untuk detail selengkapnya tentang model derau DNG, download dokumen berikut tentang Model Kebisingan DNG.

API yang diuji:

Lulus: Parameter model mentah DNG sudah benar. Nilai RGB yang diharapkan cocok dengan nilai RGB aktual yang diukur.

pengujian_dng_noise_model_plog

tes_dng_noise_model_plog.png

pengujian_ev_kompensasi_lanjutan

Menguji apakah kompensasi nilai eksposur (EV) diterapkan. Pengujian ini meningkatkan eksposur dalam delapan langkah, dan memeriksa kecerahan yang diukur terhadap kecerahan yang diharapkan. Nilai yang diharapkan dihitung dari kecerahan gambar tanpa kompensasi kendaraan listrik yang diterapkan dan nilai yang diharapkan akan memiliki saturasi jika nilai yang dihitung melebihi rentang nilai gambar sebenarnya. Pengujian akan gagal jika nilai yang diharapkan dan nilai terukur tidak sesuai, atau gambar terekspos secara berlebihan dalam lima langkah.

API yang diuji:

Lulus: Gambar menunjukkan peningkatan eksposur tanpa eksposur berlebihan dalam lima langkah.

{i>test_ev_compensation_plot_means<i}

{i>test_ev_compensation_advanced_plot_means<i}.png

dasar_kompensasi_ev_pengujian

Menguji apakah kompensasi EV diterapkan menggunakan rentang yang dibuat dengan CONTROL_AE_COMPENSATION_STEP. Delapan frame ditangkap pada setiap nilai kompensasi.

API yang diuji:

Lulus: Menangkap peningkatan luma dengan peningkatan setelan kompensasi EV, dan delapan frame yang diambil untuk setiap setelan kompensasi EV memiliki nilai luma yang stabil.

dasar_kompensasi_ev_pengujian

pengujian_ev_kompensasi_dasar.png

uji_eksposur

Menguji apakah eksposur konstan dicapai sebagai ISO dan waktu eksposur bervariasi. Mengambil serangkaian foto yang memiliki ISO dan waktu eksposur yang dipilih untuk menyeimbangkan satu sama lain. Hasil harus memiliki kecerahan yang sama, tetapi di atas urutan, gambar akan lebih berisik. Memverifikasi nilai rata-rata piksel sampel yang berdekatan satu sama lain. Memastikan gambar tidak dibatasi ke 0 atau 1 (yang akan membuatnya terlihat seperti garis datar). Pengujian ini juga dapat dijalankan menggunakan gambar RAW dengan menyetel tanda debug dalam file konfigurasi Anda.

API yang diuji:

Lulus: Gambar memiliki kecerahan yang sama, tetapi menjadi lebih berisik dengan ISO yang lebih tinggi. Bidang RGB bersifat datar jika nilai ISO*eksposure konstan pada ruang perolehan yang diuji.

{i>test_exposure_plot_means<i}

plot_paparan_pengujian.png

test_exposure_mult=1,00 test_exposure_mult=64,00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

jpeg_tes

Pengujian yang mengonversi gambar YUV dan gambar JPEG perangkat terlihat sama. Pengujian mengambil 10% bagian tengah gambar dan menghitung nilai RGB, serta memverifikasi bahwa keduanya cocok.

API yang diuji:

Lulus: Perbedaan RGB rata-rata antara setiap gambar kurang dari 3%.

test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

pelekatan_pengujian

Menguji apakah setelan (eksposur dan penguatan) terpasang pada frame yang tepat untuk kamera FULL dan LEVEL_3. Mengambil serangkaian foto menggunakan permintaan berturut-turut, memvariasikan parameter permintaan pengambilan di antara pengambilan gambar. Memeriksa apakah gambar memiliki properti yang diharapkan.

API yang diuji:

Lulus: Gambar [2, 3, 6, 8, 10, 12, 13] telah meningkatkan ISO atau eksposur dan muncul dengan sarana RGB yang lebih tinggi pada test_latching_plot_means.png.

tes_latching_i=00.jpg tes_latching_i=01.jpg tes_latching_i=02.jpg
tes_latching_i=00.jpg tes_latching_i=01.jpg tes_latching_i=02.jpg
tes_latching_i=03.jpg tes_latching_i=04.jpg tes_latching_i=05.jpg
tes_latching_i=03.jpg tes_latching_i=04.jpg tes_latching_i=05.jpg
tes_latching_i=06.jpg tes_latching_i=07.jpg test_latching_i=08.jpg
tes_latching_i=06.jpg tes_latching_i=07.jpg test_latching_i=08.jpg
tes_latching_i=09.jpg tes_latching_i=10.jpg tes_latching_i=11.jpg
tes_latching_i=09.jpg tes_latching_i=10.jpg tes_latching_i=11.jpg
tes_latching_i=12.jpg
tes_latching_i=12.jpg

{i>test_latching_plot_means<i}

{i>test_latching_plot_means<i}.png

tes_linearitas

Menguji bahwa pemrosesan perangkat dapat dibalik menjadi piksel linear. Menangkap urutan tembakan dengan perangkat diarahkan ke target yang seragam.

API yang diuji:

Lulus: Nilai R, G, B harus meningkat secara linear dengan sensitivitas meningkat.

{i>test_linearity_plot_means<i}

{i>test_linearity_plot_means<i}.png

{i>test_locked_burst<i}

Menguji penguncian 3A dan burst YUV (menggunakan setelan otomatis). Pengujian ini dirancang agar lulus bahkan pada perangkat terbatas yang tidak memiliki MANUAL_SENSOR atau PER_FRAME_CONTROLS. Pengujian memeriksa konsistensi gambar YUV saat pemeriksaan kecepatan frame berlangsung di CTS.

API yang diuji:

Lulus: Tangkapan terlihat konsisten.

uji_terkunci_burst_frame0

tes_terkunci_burst_frame0.jpg

uji_terkunci_burst_frame1

tes_terkunci_burst_frame1.jpg

uji_terkunci_burst_frame2

tes_terkunci_burst_frame2.jpg

test_param_color_correction

Menguji apakah parameter android.colorCorrection.* diterapkan saat ditetapkan. Mengambil foto dengan nilai transformasi dan keuntungan yang berbeda, serta menguji apakah keduanya terlihat berbeda. Transformasi dan keuntungan dipilih untuk membuat output naik menjadi merah atau biru. Menggunakan peta nada linear. Pemetaan nada adalah teknik yang digunakan dalam pemrosesan gambar untuk memetakan satu kumpulan warna ke kumpulan warna lainnya untuk memperkirakan penampilan gambar dengan rentang dinamis tinggi dalam media yang memiliki rentang dinamis yang lebih terbatas.

API yang diuji:

Lulus: Nilai R dan B meningkat sesuai dengan transformasi.

{i>test_param_color_correction_plot_means<i}

{i>test_param_color_correction_plot_means.png<i}

*Sumbu x adalah permintaan pengambilan: 0 = kesatuan, 1=boost merah, 2= boost biru

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (peningkatan R)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (peningkatan B)

waktu_paparan_pengujian

Menguji apakah parameter android.sensor.exposureTime diterapkan.

API yang diuji:

Lulus: Setiap foto lebih terang daripada foto sebelumnya.

{i>test_param_exposure_time_frame<i}

test_param_exposure_time_frame0.jpg

{i>test_param_exposure_time_plot<i}

{i>test_param_exposure_time_plot.png<i}

mode_flash_parameter_pengujian

Menguji apakah parameter android.flash.mode diterapkan. Menyetel eksposur secara manual ke sisi gelap, sehingga jelas apakah flash aktif atau tidak, dan menggunakan peta nada linear. Memeriksa bagian tengah dengan gambar ubin untuk melihat apakah ada gradien besar yang dibuat untuk memverifikasi apakah flash aktif.

API yang diuji:

Lulus: Bagian tengah gambar kartu memiliki gradien besar yang berarti flash diaktifkan.

mode_flash_parameter_1

tes_param_flash_mode_1.jpg

uji_param_flash_mode_1_ubin

uji_param_flash_mode_1_ubin.jpg

mode_flash_parameter_2

tes_param_flash_mode_2.jpg

uji_param_flash_mode_2_ubin

test_param_flash_mode_2_ubin.jpg

pengurangan_parameter_pengujian

Menguji apakah parameter android.noiseReduction.mode diterapkan dengan benar saat ditetapkan. Mengambil gambar dengan kamera yang redup. Menggunakan penguatan analog tinggi untuk memastikan gambar yang diambil berisik. Merekam tiga gambar, untuk NR nonaktif, "cepat", dan "kualitas tinggi". Juga mengambil gambar dengan penguatan dan NR nonaktif, dan menggunakan varians ini sebagai dasar pengukuran. Makin tinggi SNR (Rasio Sinyal terhadap Derau), semakin baik kualitas gambarnya.

API yang diuji:

Lulus: SNR bervariasi dengan mode pengurangan derau yang berbeda dan berperilaku mirip seperti grafik di bawah.

{i>test_param_noise_reduction_plot_SNRs<i}

{i>test_param_noise_reduction_plot_SNRs<i}.pngS

0: MATI, 1: CEPAT, 2: HQ, 3: MIN , 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

{i>test_param_noise_reduction_high_gain_nr=3<i}

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

sensitivitas_parameter_pengujian

Menguji apakah parameter android.sensor.sensitivity diterapkan. Pengujian ini meningkatkan sensitivitas dalam 5 langkah dengan eksposur tetap untuk setiap foto.

API yang diuji:

Lulus: Rata-rata RGB dari pusat 10% menjadi lebih terang dengan sensitivitas yang ditingkatkan.

{i>test_param_sensitivity_iso=0055<i}

{i>test_param_sensitivity_iso=0055.jpg<i}

{i>test_param_sensitivity_iso<i}=1819

{i>test_param_sensitivity_iso=1819.jpg<i}

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

{i>test_param_sensitivity_iso<i}=5347

{i>test_param_sensitivity_iso=5347.jpg<i}

{i>test_param_sensitivity_iso<i}=7111

{i>test_param_sensitivity_iso=7111.jpg<i}

{i>test_param_sensitivity_plot<i}

{i>test_param_sensitivity_plot.png<i}

mode_shading_parameter_pengujian

Menguji apakah parameter android.shading.mode diterapkan.

API yang diuji:

Lulus: Mode bayangan dialihkan dan peta bayangan lensa diubah seperti yang diharapkan.

uji_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

uji_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

uji_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

mode_peta_parameter_pengujian

Menguji apakah parameter android.tonemap.mode diterapkan. Menerapkan kurva peta nada yang berbeda untuk setiap saluran R, G, B, dan memeriksa apakah gambar output dimodifikasi seperti yang diharapkan. Pengujian ini terdiri dari dua pengujian, yaitu test1 dan test2.

API yang diuji:

Lulus:

  • test1: Kedua gambar memiliki peta nada linear, tetapi n=1 memiliki gradien yang lebih curam. Saluran G (hijau) lebih terang untuk gambar n=1.
  • test2: Peta nada sama, tetapi panjangnya berbeda. Gambarnya sama.
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

peningkatan_sensitivitas_pengujian_post_raw

Pemeriksaan setelah peningkatan sensitivitas RAW. Mengambil serangkaian gambar RAW dan YUV dengan sensitivitas yang berbeda, memposting kombinasi peningkatan sensitivitas RAW, dan memeriksa apakah rata-rata piksel output cocok dengan setelan permintaan.

API yang diuji:

Lulus: Gambar RAW akan menjadi lebih gelap seiring peningkatan peningkatan, sementara gambar YUV tetap kecerahannya konstan

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1.600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_Boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_Boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_meningkatkan_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_meningkatkan_0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_Boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_meningkatkan_0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

{i>test_post_raw_sensitivity_boost_yuv_plot_means<i}

{i>test_post_raw_sensitivity_boost_yuv_plot_means.png<i}

uji_raw_burst_sensitivity

Menangkap satu set gambar mentah dengan peningkatan penguatan dan pengukuran derau. Menangkap secara mentah saja, dalam burst.

API yang diuji:

Lulus: Setiap shot lebih berisik daripada shot sebelumnya, karena perolehannya makin meningkat.

Menggunakan varian sel petak statistik tengah.

{i>test_raw_burst_sensitivity_variance<i}

{i>test_raw_burst_sensitivity_variance.png<i}

uji_raw_eksposur

Mengambil satu set gambar mentah dengan waktu eksposur yang meningkat dan mengukur nilai piksel.

API yang diuji:

Lulus: Meningkatkan ISO (peningkatan) membuat piksel lebih sensitif terhadap cahaya, sehingga plot bergerak ke kiri.

{i>test_raw_exposure_s<i}=55

test_raw_exposure_s=55.png

(100 adalah 1 md, 101 adalah 10 md, 10-1 adalah 0,1 md)

{i>test_raw_exposure_s<i}=132

test_raw_exposure_s=132.png

{i>test_raw_exposure_s<i}=209

{i>test_raw_exposure_s<i}=209.png

{i>test_raw_exposure_s<i}=286

{i>test_raw_exposure_s<i}=286.png

{i>test_raw_exposure_s<i}=363

test_raw_exposure_s=363.png

{i>test_raw_exposure_s<i}=440

{i>test_raw_exposure_s<i}=440.png

tes_raw_sensitivitas

Mengambil satu set gambar mentah dengan sensitivitas yang meningkat dan mengukur derau (varian) di 10% bagian tengah gambar. Menguji apakah setiap shot lebih berisik daripada yang sebelumnya.

API yang diuji:

Lulus: Varians meningkat di setiap tembakan.

{i>test_raw_sensitivity_variance<i}

{i>test_raw_sensitivity_variance.png<i}

pengujian_proses ulang_pengurangan_noise

Menguji apakah android.noiseReduction.mode diterapkan untuk memproses ulang permintaan. Mengambil gambar yang diproses ulang dengan kamera bercahaya redup. Menggunakan penguatan analog tinggi untuk memastikan gambar yang diambil berisik. Mengambil tiga gambar yang diproses ulang, untuk NR nonaktif, "cepat", dan "berkualitas tinggi". Mengambil gambar yang diproses ulang dengan penguatan dan NR rendah, dan menggunakan varians ini sebagai dasar pengukuran.

API yang diuji:

Lulus: FAST >= OFF, HQ >= FAST, HQ >> OFF

Plot SNR vs NR_MODE standar

Plot SNR vs NR_MODE standar

urutan_peta_nada_pengujian

Menguji urutan foto dengan kurva peta nada yang berbeda. Mengambil 3 foto manual dengan peta nada linear. Mengambil 3 foto manual dengan peta nada default. Menghitung delta antara setiap pasangan frame yang berurutan.

API yang diuji:

Lulus: Ada 3 frame identik, diikuti oleh kumpulan 3 frame identik yang berbeda.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

tes_yuv_jpeg_semua

Menguji semua ukuran dan format yang dilaporkan untuk kerja pengambilan gambar. Menggunakan permintaan manual dengan peta nada linear sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul image_processing_utils. Gambar tidak disimpan secara default, tetapi dapat disimpan dengan mengaktifkan debug_mode.

API yang diuji:

Lulus: Semua pusat gambar memiliki perbedaan RMS (nilai root-mean-square dari sinyal) maksimum dalam gambar yang dikonversi RGB dengan 3% dari gambar YUV resolusi tertinggi.

tes_yuv_jpeg_semua

tes_yuv_jpeg_all.png

tes_yuv_plus_dng

Menguji apakah ukuran dan format yang dilaporkan berfungsi untuk pengambilan gambar.

API yang diuji:

Lulus: Pengujian selesai dan menampilkan gambar yang diminta.

tes_yuv_plus_dng

tes_yuv_plus_dng.jpg

tes_yuv_plus_jpeg

Pengujian yang merekam satu frame sebagai output YUV dan JPEG. Menggunakan permintaan manual dengan peta nada linear sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul image_processing_utils.

API yang diuji:

Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan RMS (nilai root-mean-square dari sinyal) kurang dari 1%.

tes_yuv_plus_jpg_jpg.jpg tes_yuv_plus_jpeg_yuv.jpg
tes_yuv_plus_jpg_jpg.jpg tes_yuv_plus_jpeg_yuv.jpg

tes_yuv_plus_raw

Pengujian yang merekam satu frame sebagai output RAW/RAW10/RAW12 dan YUV jika didukung. Menggunakan permintaan manual dengan peta nada linear yang sehingga mentah dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Logandroid.shading.mode.

API yang diuji:

Lulus: YUV dan gambar mentah serupa dan memiliki perbedaan RMS (nilai root-mean-square dari sinyal) kurang dari 3,5%.

test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

adegan2_a

scene2_a memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah dipilih untuk memiliki berbagai warna kulit. Diagram harus memiliki orientasi yang benar agar deteksi wajah dapat berfungsi secara optimal.

adegan2_a

adegan2_a

uji_auto_flash

Menguji apakah flash otomatis dipicu dalam suasana gelap. Memverifikasi bahwa flash otomatis diaktifkan dengan memeriksa apakah bagian tengah gambar kartu memiliki gradien yang besar. Untuk memicu flash otomatis, tablet dan lampu di rig pengujian harus dimatikan. Tablet dimatikan oleh pengujian, dan lampu dapat dimatikan secara otomatis dengan pengontrol Arduino. Adegan harus benar-benar gelap agar pengujian dapat berfungsi dengan benar. Dengan demikian, bukaan tablet belakang harus sepenuhnya tertutup oleh tablet adegan, dan bukaan depan harus tertutup oleh apertur dan ponsel DUT untuk menghalangi cahaya menyimpang agar tidak masuk ke rig.

API yang diuji:

Lulus: Bagian tengah gambar kartu memiliki gradien besar yang berarti flash otomatis diaktifkan.

pengujian_autoframing

Menguji perilaku autoframing perangkat kamera. Melakukan zoom besar sehingga tidak ada wajah di scene yang terlihat, mengaktifkan mode autoframing dengan menyetel AUTOFRAMING di CaptureRequest ke True, dan memverifikasi apakah semua wajah di scene asli dapat dideteksi saat status menyatu (yaitu, saat AUTOFRAMING_STATE di CaptureResult disetel ke AUTOFRAMING_STATE_CONVERGED).

API yang diuji:

Lulus: Ketiga wajah terdeteksi.

uji_tampilan_p3

Menguji perekaman Display P3 dalam JPEG menggunakan ColorSpaceProfiles API. Menguji apakah JPEG yang diambil memiliki profil ICC yang sesuai di headernya, dan bahwa gambar berisi warna di luar gamut sRGB.

API yang diuji:

Lulus: JPEG berisi profil ICC Display P3 dan warna di luar gamut sRGB.

efek_tes

Menangkap frame untuk efek kamera yang didukung dan memeriksa apakah efek tersebut dibuat dengan benar. Pengujian ini hanya memeriksa efek OFF dan MONO, tetapi menyimpan gambar untuk semua efek yang didukung.

API yang diuji:

Pass: Mengambil gambar adegan dengan efek OFF dan gambar monokrom dengan efek yang disetel ke MONO.

efek_pengujian_MONO

efek_tes_MONO.jpg

kombo_format_pengujian

Menguji berbagai kombinasi format output.

API yang diuji:

Lulus: Semua kombinasi berhasil dicatat.

{i>test_jpeg_quality<i}

Menguji kualitas kompresi JPEG kamera. Lakukan langkah kualitas JPEG melalui android.jpeg.quality dan memastikan Tabel Kuantisasi berubah dengan benar.

API yang diuji:

Lulus: Matriks kuantisasi menurun seiring peningkatan kualitas. (Matriks mewakili faktor pembagian.)

{i>test_jpeg_quality<i}

Rata-rata matriks DQT/luma/kroma kamera belakang Pixel 4 vs kualitas JPEG

test_jpeg_quality gagal

Contoh pengujian yang gagal

Perhatikan bahwa untuk gambar berkualitas sangat rendah (jpeg.quality < 50), tidak ada peningkatan kompresi dalam matriks kuantisasi.

jumlah_pengujian

Menguji deteksi wajah.

API yang diuji:

Lulus: Menemukan tiga wajah.

jumlah_pengujian_mode_fd_1

jumlah_test_faces_fd_mode_1.jpg

rasio_frame_pratinjau_min_pengujian

Menguji apakah kecepatan frame pratinjau berkurang dengan benar dalam suasana gelap. Agar pengujian ini berfungsi dengan benar, lampu di rig pengujian harus dimatikan oleh pengontrol atau secara manual oleh operator pengujian.

API yang diuji:

Lulus: Kecepatan frame pratinjau berada dalam rentang minimum kecepatan frame yang diminta, dan variasi antar-frame kurang dari toleransi absolut yang ditetapkan dalam pengujian.

{i>test_reprocess_uv_swap<i}

Menguji bahwa pemrosesan ulang YUV tidak menukar bidang U dan V. Hal ini terdeteksi dengan menghitung jumlah perbedaan absolut (SAD) antara gambar yang diproses ulang dan pengambilan yang tidak diproses ulang. Jika pertukaran bidang U dan V output dari pengambilan gambar yang diproses ulang menyebabkan peningkatan SAD, output diasumsikan memiliki bidang U dan V yang benar.

API yang diuji:

Lulus: Pesawat U dan V tidak ditukar.

{i>test_reprocess_uv_swap<i}

{i>test_reprocess_uv_swap.png<i}

adegan2_b

jumlah_pengujian

Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.

API yang diuji:

Lulus: Menemukan 3 wajah.

jumlah_pengujian_mode_fd_1

jumlah_test_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Mengambil dua gambar menggunakan format YUV dan JPEG umum terbesar dengan rasio aspek yang sama dengan format JPEG terbesar yang tidak melebihi resolusi 1920x1440. Menetapkan jpeg.quality ke 100 dan menangkap permintaan platform ganda. Mengonversi kedua gambar ke array RGB dan menghitung perbedaan akar rata-rata persegi (RMS) 3D antara dua gambar.

API yang diuji:

Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan RMS (nilai root-mean-square dari sinyal) kurang dari 1%.

adegan2_c

jumlah_pengujian

Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.

API yang diuji:

Lulus: Menemukan 3 wajah.

jumlah_pengujian_mode_fd_1

jumlah_test_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Menguji latensi pengambilan JPEG untuk class performa S seperti yang ditentukan di bagian 2.2.7.2 Kamera dalam CDD.

Lulus: HARUS memiliki latensi pengambilan JPEG camera2 < 1000 md untuk resolusi 1080p seperti yang diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000 K) untuk kedua kamera utama.

class_pengujian_kamera_launch_perf

Menguji latensi peluncuran kamera untuk class performa S seperti yang ditentukan bagian 2.2.7.2 Kamera dalam CDD.

Lulus: HARUS memiliki latensi pengaktifan kamera2 (membuka kamera ke frame pratinjau pertama) < 600 md seperti yang diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3.000 K) untuk kedua kamera utama.

adegan2_d

jumlah_pengujian

Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.

API yang diuji:

Lulus: Menemukan 3 wajah.

adegan2_e

uji_gambar_berkelanjutan

50 frame resolusi VGA diambil dengan setelan pertama permintaan pengambilan gambar android.control.afMode = 4 (CONTINUOUS_PICTURE).

API yang diuji:

Lulus: Sistem 3A berhenti pada akhir pengambilan gambar 50 frame.

jumlah_pengujian

Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.

API yang diuji:

Lulus: Menemukan 3 wajah.

adegan2_f

scene2_f memiliki tiga wajah dengan latar belakang putih dan pakaian putih. Wajah memiliki berbagai warna kulit dan kontras tinggi dengan latar belakang.

adegan2_f.png

adegan2_f

jumlah_pengujian

Menguji deteksi wajah dengan peningkatan keberagaman warna kulit dalam adegan wajah.

API yang diuji:

Lulus: Menemukan 3 wajah.

jumlah_pengujian_mode_fd_1

jumlah_test_faces_fd_mode_1.jpg

adegan3

Scene3 menggunakan diagram ISO12233, dan sebagian besar pengujian menggunakan metode ekstraktor diagram untuk menemukan diagram di scene. Oleh karena itu, sebagian besar gambar tersimpan tidak memiliki batas seperti gambar untuk scene 1, 2, atau 4, tetapi hanya diagram. Diagram harus memiliki orientasi yang benar agar pencari diagram dapat berfungsi secara optimal.

pengujian_3a_konsistensi

Pengujian konsistensi 3A.

API yang diuji:

Lulus: 3A konvergensi untuk eksposur, keuntungan, awb (auto white balance), dan fd (jarak fokus) tiga kali sesuai toleransi.

peningkatan_tepi_pengujian

Menguji apakah parameter android.edge.mode diterapkan dengan benar. Mengambil gambar yang tidak diproses ulang untuk setiap mode edge dan menampilkan ketajaman gambar output dan metadata hasil pengambilan. Memproses permintaan pengambilan dengan mode edge, sensitivitas, waktu eksposur, jarak fokus, dan parameter permukaan output tertentu.

Lulus: Mode HQ (2) lebih tajam daripada mode OFF (0). Mode FAST (1) lebih tajam daripada mode OFF. Mode HQ lebih tajam atau sama dengan mode FAST.

API yang diuji:

Parameter kamera yang terpengaruh:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (mode cepat)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (mode kualitas tinggi)

{i>test_flip_mirror<i}

Menguji apakah gambar diorientasikan dengan benar sesuai dengan CDD pasal 7.5.2 Front-Facing Camera [C-1-5].

Gambar yang dicerminkan, dibalik, atau diputar dapat diidentifikasi oleh fitur wajik di dekat bagian tengah.

Lulus: Gambar tidak dibalik, dicerminkan, atau diputar.

{i>test_flip_mirror_scene_patch<i}

{i>test_flip_mirror_scene_patch<i}.jpg

uji_lanskap_ke_potret

Menguji apakah lanskap ke potret menggantikan fungsi dengan benar untuk sensor berorientasi lanskap.

API yang diuji:

Lulus: Pengujian dapat menemukan diagram dengan rotasi yang diharapkan (0 derajat jika penggantian lanskap ke potret dinonaktifkan, 90 derajat jika diaktifkan).

uji_lanskap_ke_potret

pengujian_lanskap_ke_potret.png

pelaporan_gerakan_lensa_pengujian

Menguji apakah tanda gerakan lensa dilaporkan dengan benar. Mengambil burst 24 gambar dengan 12 frame pertama pada jarak fokus optimal (seperti yang ditemukan oleh 3A) dan 12 frame terakhir pada jarak fokus minimum. Di sekitar frame 12, lensa bergerak menyebabkan ketajaman turun. Ketajaman akhirnya stabil saat lensa bergerak ke posisi akhir. Tanda gerakan lensa harus ditegaskan di semua frame dengan ketajaman menengah hingga ketajaman dalam beberapa frame pertama dengan lensa tidak bergerak pada jarak fokus optimal, dan beberapa frame terakhir saat lensa diam dalam jarak fokus minimum. Frame persis yang digerakkan lensa tidaklah penting: yang diperiksa adalah tanda gerakan dinyatakan saat lensa bergerak.

API yang diuji:

Lulus: Flag gerakan Lens adalah True dalam frame dengan perubahan ketajaman.

Mekanisme kegagalan:

  • lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) dalam test_log.DEBUG hanya dinyatakan dalam frame yang ketajamannya tidak berubah.
  • Frame dengan lens_moving: False (android.hardware.camera2.CaptureResult#LENS_STATE = 0) di test_log.DEBUG memiliki perbedaan ketajaman dibandingkan dengan beberapa frame pertama pada jarak fokus optimal atau beberapa frame terakhir pada jarak fokus minimum.

pengujian_proses ulang_edge_peningkatan

Menguji apakah metode pemrosesan ulang yang didukung untuk peningkatan tepi berfungsi dengan baik. Memproses permintaan pengambilan dengan mode edge pemrosesan ulang tertentu dan membandingkan berbagai mode untuk diambil dengan mode edge pemrosesan ulang dinonaktifkan.

API yang diuji:

Lulus: Ketajaman untuk berbagai mode tepi sudah benar. HQ (mode 2) lebih tajam daripada OFF (mode 0), dan peningkatan antar-mode yang berbeda serupa.

alur_proses_ulang_pengujian

{i>test_reprocess_edge_enhancement_plot<i}.png

adegan4

Scene4 terdiri dari lingkaran hitam dengan latar belakang putih di dalam persegi.

adegan4

adegan4

uji_aspect_ratio_dan_pangkas

Menguji apakah gambar terdistorsi atau terpangkas secara tidak terduga dalam pipeline gambar. Mengambil gambar lingkaran di atas semua format. Memverifikasi bahwa lingkaran tidak terdistorsi, lingkaran tidak bergerak dari tengah gambar, dan lingkaran tidak salah berubah ukuran dengan rasio aspek atau resolusi yang berbeda.

API yang diuji:

Lulus: Gambar tidak direntangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV (ruang pandang) maksimum yang mungkin dipertahankan.

Mekanisme kegagalan:

  • Kamera tidak sejajar dengan lingkaran yang ditampilkan pada tablet di tengah adegan yang diambil.
  • Lingkaran pada gambar yang diambil terdistorsi oleh pipeline pemrosesan.
  • Gambar beresolusi lebih rendah akan dipangkas dua kali di pipeline gambar sehingga FoV berbeda antara gambar beresolusi tinggi dan rendah.
  • Lingkaran dalam gambar yang diambil dipangkas karena permintaan pengambilan rasio aspek ekstrim yang mengurangi tinggi atau lebar gambar.
  • Lingkaran pada gambar yang diambil memiliki refleksi di bagian tengah dan tidak tampak terisi penuh.

pengujian_multi_kamera_perataan

Menguji parameter kalibrasi kamera terkait pemosisian kamera untuk sistem multi-kamera. Dengan sub-kamera fisik multi-kamera, ambil foto dengan salah satu kamera fisik. Mencari pusat lingkaran. Memproyeksikan pusat lingkaran ke koordinat dunia untuk setiap kamera. Membandingkan perbedaan antara pusat lingkaran kamera dalam koordinat dunia. Memproyeksikan ulang koordinat dunia kembali ke koordinat piksel dan membandingkannya dengan yang asli sebagai pemeriksaan validitas. Membandingkan ukuran lingkaran yang memeriksa apakah panjang fokus kamera berbeda atau tidak.

API yang diuji:

Lulus: Pusat dan ukuran lingkaran sesuai dengan yang diharapkan dalam gambar yang diproyeksikan dibandingkan dengan gambar yang diambil menggunakan data kalibrasi kamera dan panjang fokus.

Mekanisme kegagalan:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION, atau LENS_POSE_ROTATION adalah nilai desain dan bukan data kalibrasi yang sebenarnya.
  • Sistem kamera tidak sesuai untuk penyiapan pengujian. Misalnya, menguji sistem kamera lebar dan ultrawide dengan rig pengujian RFoV. Untuk informasi selengkapnya, lihat FAQ 1 dalam kotak ITS Kamera.

uji_pratinjau_aspect_ratio_dan_pangkas

Serupa dengan pengujian test_aspect_ratio_and_crop untuk tetap menangkap, pengujian ini memeriksa format pratinjau yang didukung untuk memastikan frame pratinjau tidak direntangkan atau dipangkas dengan tidak tepat. Memverifikasi bahwa rasio aspek lingkaran tidak berubah, gambar yang dipangkas menempatkan lingkaran di tengah frame, dan ukuran lingkaran tidak berubah untuk format yang konstan atau dengan resolusi yang berbeda (pemeriksaan ruang pandang).

API yang diuji:

Lulus: Gambar tidak direntangkan, bagian tengah gambar tidak berbeda lebih dari 3%, dan FoV (ruang pandang) maksimum yang mungkin dipertahankan.

pengujian_pratinjau_stabilisasi_fov

Memeriksa ukuran pratinjau yang didukung untuk memastikan FoV dipangkas dengan tepat. Pengujian ini merekam dua video, satu dengan stabilisasi pratinjau ON, dan satu lagi dengan stabilisasi pratinjau OFF. Frame representatif dipilih dari setiap video, dan dianalisis untuk memastikan perubahan FoV di kedua video tersebut sesuai spesifikasi.

API yang diuji:

Lulus: Rasio aspek lingkaran tetap sekitar konstan, lokasi tengah lingkaran tetap stabil, dan ukuran lingkaran tidak berubah lebih dari 20%.

test_video_aspect_ratio_and_crop

Merekam video lingkaran di dalam persegi di atas semua format video. Mengekstrak frame kunci, dan memverifikasi rasio aspek lingkaran tidak berubah, gambar yang dipangkas mempertahankan lingkaran di tengah, dan ukuran lingkaran tidak berubah untuk format yang konstan atau dengan resolusi yang berbeda (pemeriksaan ruang pandang).

API yang diuji:

Lulus: Frame video tidak direntangkan, bagian tengah frame tidak berbeda lebih dari 3%, dan FoV (ruang pandang) maksimum yang memungkinkan dipertahankan.

adegan5

Scene5 memerlukan adegan abu-abu yang menyala secara seragam. Hal ini dilakukan dengan {i>diffuser<i} yang ditempatkan di atas lensa kamera. Sebaiknya gunakan diffuser berikut: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168.

Untuk menyiapkan adegan, pasang diffuser di depan kamera dan arahkan kamera ke sumber pencahayaan sekitar 2.000 lux. Gambar yang diambil untuk scene5 memerlukan pencahayaan difusi tanpa fitur yang terlihat. Berikut adalah contoh gambar:

adegan5

pengambilan scene5

pengujian_keseragaman_lensa_warna_dan_warna

Menguji apakah koreksi bayangan lensa diterapkan dengan tepat, dan warna tampilan seragam monokrom didistribusikan secara merata. Melakukan pengujian ini pada frame YUV dengan 3A otomatis. Bayangan lensa dievaluasi berdasarkan saluran y. Mengukur nilai y rata-rata untuk setiap blok sampel yang ditentukan, dan menentukan lulus atau gagal dengan membandingkan dengan nilai y pusat. Uji keseragaman warna dievaluasi dalam ruang r/g dan b/g.

API yang diuji:

Lulus: Pada radius gambar yang ditentukan, varians nilai r/g dan b/g harus kurang dari 20% agar lulus pengujian.

adegan6

Scene6 adalah petak lingkaran kecil dengan persegi di satu sudut untuk menunjukkan orientasi. Lingkaran kecil diperlukan untuk menguji fungsi zoom pada rentang yang besar.

adegan6

adegan6

{i>test_in_sensor_zoom<i}

Menguji perilaku fitur zoom dalam sensor kamera, yang menghasilkan gambar RAW yang dipangkas.

Dengan kasus penggunaan streaming yang ditetapkan ke CROPPED_RAW, pengujian mengambil dua gambar pada rentang zoom, gambar RAW ruang pandang penuh (FoV) dan gambar RAW yang dipangkas. Pengujian ini mengonversi gambar menjadi array RGB, memperkecil gambar RAW berukuran penuh yang dipangkas menjadi ukuran yang dilaporkan oleh SCALER_RAW_CROP_REGION, dan menghitung perbedaan root mean square (RMS) 3D antara kedua gambar tersebut.

API yang diuji:

Lulus: Perbedaan rata-rata persegi rata-rata (RMS) 3D antara gambar RAW yang diperkecil dan gambar RAW FoV penuh kurang dari 1%.

uji_zoom

Menguji perilaku zoom kamera. Mengambil foto pada rentang zoom dan memeriksa apakah lingkaran membesar saat kamera diperbesar.

API yang diuji:

Lulus: Ukuran relatif lingkaran yang diambil akurat terhadap rasio zoom yang diminta untuk memastikan kamera di-zoom dengan benar.

uji_zoom

test_zoom untuk menemukan kontur lingkaran yang paling dekat dengan pusat.

test_low_Latensi_zoom

Menguji perilaku zoom latensi rendah kamera. Mengambil gambar pada rentang zoom dengan android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM), dan memeriksa apakah lingkaran dalam gambar output cocok dengan rasio zoom dalam metadata pengambilan.

API yang diuji:

Lulus: Ukuran relatif lingkaran yang diambil akurat terhadap metadata hasil rasio zoom.

uji_pratinjau_video_zoom_match

Mengujinya saat merekam dan melakukan zoom, pratinjau video dan output video akan ditampilkan, serta merekam output yang sama. Menghitung ukuran lingkaran yang paling dekat dengan bagian tengah dengan rasio zoom yang berbeda, dan memeriksa apakah ukuran lingkaran akan bertambah saat rasio zoom bertambah.

API yang diuji:

Lulus: Ukuran relatif lingkaran yang diambil akurat terhadap rasio zoom yang diminta dalam video dan pratinjau.

VGA_640x480_bingkai_kunci.png

VGA_640x480_key_frame.png (sebelum zoom)

pratinjau_640x480_bingkai_kunci.png

preview_640x480_key_frame.png (sebelum zoom)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (setelah zoom)

pratinjau_640x480_kunci_frame_diperbesar.png

preview_640x480_key_frame.png (setelah zoom)

ekstensi_adegan

Pengujian scene_extensions ditujukan untuk ekstensi kamera dan harus menggunakan Camera ITS-in-a-Box, karena memerlukan kontrol lingkungan pengujian yang akurat.

scene_hdr

Scene scene_hdr terdiri dari potret di sebelah kiri dan kode QR kontras rendah di sebelah kanan.

scene_hdr

scene_hdr

{i>test_hdr_extension<i}

Menguji ekstensi HDR. Mengambil rekaman dengan dan tanpa mengaktifkan ekstensi, dan memeriksa apakah ekstensi membuat kode QR lebih mudah terdeteksi.

API yang diuji:

Lulus: Ekstensi HDR mengurangi jumlah perubahan kontras yang diperlukan untuk mendeteksi kode QR atau mengurangi gradien di seluruh kode QR.

scene_night

Scene scene_night terdiri dari lingkaran putih dengan empat lingkaran lebih kecil di dalamnya, semuanya dengan latar belakang hitam. Lingkaran yang lebih kecil di sudut kanan atas lebih gelap daripada lingkaran lainnya untuk menunjukkan orientasi.

scene_night

scene_night

ekstensi_test_night_extension

Menguji ekstensi Night. Mengambil rekaman dengan dan tanpa mengaktifkan ekstensi, serta memeriksa hal berikut:

  • Pengambilan gambar dengan ekstensi Malam yang diaktifkan memerlukan waktu lebih lama.
  • Pengambilan gambar dengan ekstensi Night yang diaktifkan menjadi lebih cerah atau memiliki artefak skenario dengan tampilan yang lebih baik.

API yang diuji:

Lulus: Dibandingkan dengan pengambilan gambar tanpa ekstensi Night yang diaktifkan, pengambilan gambar dengan ekstensi Night yang diaktifkan akan memerlukan waktu setidaknya 0,5 detik lebih lama. Pengambilan gambar harus setidaknya 10% lebih terang, atau titik abu-abu pada adegan harus bernilai 20 piksel lebih rendah dari pusat lingkaran di sekitarnya.

sensor_fusion

Uji fusi sensor memerlukan gerakan ponsel tertentu di depan pola papan catur. Untuk mendapatkan hasil yang optimal, pastikan diagram pengujian dipasang secara datar. Diagram yang tidak datar akan memengaruhi penghitungan rotasi untuk banyak pengujian. Pengujian sensor_fusion dapat diotomatiskan dengan Sensor Fusion Box.

papan catur

Gambar papan catur

uji_multi_kamera_frame_sinkronisasi

Pengujian yang membingkai stempel waktu yang diambil oleh kamera logis adalah dalam waktu 10 md dengan menghitung sudut persegi di dalam papan catur untuk menentukan stempel waktu.

API yang diuji:

Teruskan: Sudut antar-gambar dari setiap kamera tidak berubah secara signifikan saat ponsel diputar.

stabilisasi_pratinjau_pengujian

Pengujian yang memutar video pratinjau stabil dengan kecepatan pemutaran kurang dari giroskop.

API yang diuji:

Lulus: Rotasi sudut maksimum pada frame kurang dari 70% dari rotasi giroskop.

Berikut adalah contoh video dengan dan tanpa stabilisasi.

  • Video sampel dengan stabilisasi

  • Video sampel tanpa stabilisasi

fusi_pengujian_sensor

Menguji perbedaan stempel waktu antara kamera dan giroskop untuk aplikasi AR dan VR. Ponsel diputar 90 derajat 10 kali di depan pola kotak-kotak. Gerakan adalah sekitar 2 detik untuk pulang pergi. Pengujian ini dilewati jika tidak ada giroskop yang disertakan atau jika parameter REALTIME sumber stempel waktu tidak diaktifkan.

Pengujian test_sensor_fusion menghasilkan sejumlah plot. Dua plot terpenting untuk proses debug adalah:

  • test_sensor_fusion_gyro_events: Menampilkan peristiwa giroskop untuk ponsel selama pengujian. Pergerakan pada arah x dan y menyiratkan bahwa ponsel tidak dipasang dengan aman pada pelat penyangga, sehingga mengurangi kemungkinan lulus pengujian. Jumlah siklus dalam plot bergantung pada kecepatan tulis untuk menyimpan frame.

    test_sensor_fusion_gyro_events.png

    pengujian_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations: Menampilkan penyelarasan peristiwa giroskop dan kamera. Plot ini harus menunjukkan gerakan yang cocok antara kamera dan giroskop ke +/-1 md.

    test_sensor_fusion_plot_rotations.png

    plot_pengujian_sensor_fusi_plot_rotasi

API yang diuji:

Lulus: Offset stempel waktu kamera dan giroskop kurang dari 1 md sesuai dengan CDD pasal 7.3.9 Sensor Fidelitas Tinggi [C-2-14].

Mekanisme kegagalan:

  • Error offset: Offset giroskop kamera tidak dikalibrasi dengan benar menjadi dalam +/-1 md.
  • Penurunan frame: Pipeline tidak cukup cepat untuk merekam 200 frame secara berurutan.
  • Error soket: adb tidak dapat terhubung dengan andal ke DUT cukup lama untuk menjalankan pengujian.
  • Diagram tidak dipasang secara datar. Plot test_sensor_fusion_plot_rotations memiliki frame dengan rotasi giroskop dan kamera yang sangat bervariasi saat kamera berputar melalui bagian diagram yang tidak datar.
  • Kamera tidak dipasang dalam posisi datar. Plot test_sensor_fusion_gyro_events menunjukkan gerakan pada bidang X dan Y. Kegagalan ini lebih umum terjadi pada kamera depan karena kamera belakang sering kali memiliki tumpang tindih yang meningkat ke bagian bodi ponsel lainnya, sehingga membuat kemiringan saat memasang bagian belakang ponsel ke pelat penyangga.

uji_stabilisasi_video

Pengujian yang memutar video stabil kurang dari giroskop.

API yang diuji:

Lulus: Rotasi sudut maksimum pada frame kurang dari 60% dari rotasi giroskop.

Berikut adalah contoh video dengan dan tanpa stabilisasi.

  • Video sampel dengan stabilisasi

  • Video sampel tanpa stabilisasi

snapshot_LED_pengujian

Menguji apakah snapshot LED tidak memenuhi atau mewarnai gambar.

Pengujian ini menambahkan pengontrol pencahayaan ke kotak fusion sensor untuk mengontrol lampu. Dengan lampu yang disetel ke OFF, pengujian akan mengambil gambar dengan mode AUTO_FLASH yang disetel ke ON. Selama pengambilan gambar ini, pengujian akan menjalankan urutan pra-rekaman dengan pemicu aePrecapture yang ditetapkan ke START, dan menetapkan intent perekaman ke Preview untuk mengambil rekaman dengan flash.

Karena pengambilan gambar memiliki hotspot khusus karena flash, pengujian menghitung rata-rata gambar flash dari seluruh pengambilan dan memverifikasi apakah nilainya berada dalam rentang (68, 102). Untuk memeriksa apakah gambar cukup putih seimbang, pengujian akan menghitung rasio R/G dan B/G dan memverifikasi apakah rasionya berada dalam 0,95 dan 1,05.

API yang diuji:

Lulus: Rasio R/G dan B/G berada dalam 0,95 dan 1,05. Rata-rata gambar flash berada dalam rentang (68, 102).