Tes Kamera ITS

Halaman ini menyediakan daftar lengkap pengujian di bawah Camera Image Test Suite (ITS), yang merupakan bagian dari Android Compatibility Test Suite (CTS) Verifier. Tes ITS adalah tes fungsional, artinya tes tersebut tidak mengukur kualitas gambar, tetapi semua fungsi kamera yang diiklankan berfungsi seperti yang diharapkan. Dokumen ini memungkinkan pengembang dan penguji memahami apa yang dilakukan masing-masing pengujian dan cara men-debug kegagalan pengujian.

Tes dikelompokkan berdasarkan adegan sebagai berikut:

  • scene0 : Menangkap metadata, jitter, giroskop, getaran
  • scene1 : Eksposur, sensitivitas, kompensasi EV, YUV vs JPEG/RAW
  • scene2 : Deteksi wajah
  • scene3 : Peningkatan tepi, pergerakan lensa
  • scene4 : Rasio aspek, pemotongan, bidang pandang
  • scene5 : Bayangan lensa
  • adegan6 : Zoom
  • sensor_fusion : Offset waktu kamera/giroskop

Lihat bagian individu untuk deskripsi setiap adegan.

adegan0

Tes Scene0 tidak memerlukan informasi adegan tertentu. Namun, telepon harus stasioner untuk pengujian giroskop dan getaran.

test_burst_capture

Memverifikasi bahwa seluruh jalur pengambilan dapat mengikuti kecepatan pengambilan ukuran penuh dan waktu CPU.

API yang diuji:

Lulus: Menangkap rentetan gambar ukuran penuh dan kamera cukup cepat untuk menghindari batas waktu.

test_capture_result_dump

Menguji bahwa hasil tangkapan dikembalikan dari tangkapan manual dan kemudian membuangnya.

API yang diuji:

Pass: Menyelesaikan pengambilan dan membuang hasil tangkapan.

test_gyro_bias

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

API yang diuji:

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

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

Mengukur jitter dalam cap waktu kamera.

API yang diuji:

Lulus: Setidaknya ada delta 30 mdtk di antara bingkai.

test_jitter_plot.png

test_jitter_plot.png (Perhatikan rentang sumbu y yang kecil. Jitter sebenarnya kecil di plot ini.)

test_metadata

Menguji validitas entri metadata. Melihat hasil capture dan karakteristik kamera objek. Tes ini menggunakan eksposur auto_capture_request dan mendapatkan nilai karena konten gambar tidak penting.

API yang diuji:

Lulus: Tingkat perangkat keras, rollingShutterSkew , tag frameDuration , timestampSource , croppingType , blackLevelPattern , pixel_pitch , FOV, jarak hyperfocal hadir dan memiliki nilai yang valid.

test_param_sensitivity_burst

Menguji bahwa parameter android.sensor.sensitivity diterapkan dengan benar dalam burst. Memeriksa metadata keluaran saja.

API yang diuji:

Lulus: Data keluaran memiliki toleransi kesalahan kurang dari 0,2%.

tes_baca_tulis

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

API yang diuji:

Lulus: Nilai baca dan tulis cocok di semua bidikan.

test_sensor_events

Menguji perangkat yang menanyakan dan mencetak peristiwa sensor untuk perangkat yang mengiklankan dukungan fusi sensor. Sensor yang diharapkan adalah accelerometer, gyroscope, dan magnetometer. Tes ini hanya berfungsi jika layar menyala, artinya perangkat tidak dalam mode siaga.

API yang diuji:

Lulus: Acara untuk setiap sensor diterima.

test_solid_color_test_pattern

Menguji bahwa pola uji warna solid dihasilkan dengan benar untuk mematikan kamera. Jika pembisuan kamera didukung, pola uji warna solid harus didukung. Jika pembisuan kamera tidak didukung, pola uji warna solid hanya diuji jika kemampuannya diiklankan.

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

API yang diuji:

Lulus: Pola uji solid yang didukung adalah warna yang benar dan ada sedikit perbedaan pada gambar.

test_test_pattern

Menguji parameter android.sensor.testPatternMode guna menangkap bingkai untuk setiap pola pengujian yang valid dan memeriksa apakah bingkai dibuat dengan benar untuk warna solid dan bilah warna. Tes ini mencakup langkah-langkah berikut:

  1. Menangkap gambar untuk semua pola pengujian yang didukung.
  2. Melakukan pemeriksaan kebenaran sederhana untuk pola uji warna solid dan bilah warna.

API yang diuji:

Lulus: Pola pengujian yang didukung dihasilkan dengan benar.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

Menguji konversi pola uji dari RAW ke YUV dengan tonemap linier. Pengujian ini membutuhkan android.sensor.testPatternMode = 2 (COLOR_BARS) untuk menghasilkan pola gambar yang sempurna untuk konversi tonemap. Memastikan pipeline memiliki output warna yang tepat dengan tonemap linier dan input gambar yang ideal (bergantung pada test_test_patterns ).

API yang diuji:

Pass: YUV dan RAW terlihat mirip satu sama lain.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

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

API yang diuji:

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

test_vibration_restriction

Menguji apakah getaran perangkat berfungsi seperti yang diharapkan.

API yang diuji:

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

adegan1

scene1 adalah grafik abu-abu. Bagan abu-abu harus menutupi bagian tengah 30% bidang pandang kamera. Grafik abu-abu diperkirakan akan menantang 3A (pencahayaan otomatis, keseimbangan putih otomatis, fokus otomatis) karena wilayah tengah tidak memiliki fitur. Namun, permintaan pengambilan menentukan seluruh adegan yang mencakup fitur yang cukup untuk 3A untuk berkumpul.

Kamera RFoV dapat diuji di rig uji WFoV atau RFoV. Jika kamera RFoV diuji di rig uji WFoV, bagan diskalakan dengan untuk memastikan beberapa batas bagan abu-abu di FoV untuk membantu konvergensi 3A.

adegan1

scene1: Bagan ukuran penuh (kiri). grafik berskala (kanan).

tes_3a

Menguji konvergensi 3A dengan target yang cukup menantang.

API yang diuji:

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

test_ae_af

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

API yang diuji:

Lulus: 3A konvergen dan nilai 3A yang dikembalikan legal.

test_ae_precapture_trigger

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

API yang diuji:

Lulus: AE konvergen.

test_auto_vs_manual

Pengujian yang menangkap bidikan otomatis dan manual terlihat sama.

API yang diuji:

Lulus: Penguatan dan transformasi white balance manual yang dilaporkan di setiap hasil pengambilan sesuai dengan estimate white balance otomatis dari algoritma 3A kamera.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

tes_hitam_putih

Pengujian bahwa perangkat menghasilkan gambar hitam putih penuh. Mengambil dua jepretan, yang pertama dengan gain sangat rendah dan eksposur pendek, yang menghasilkan foto hitam, dan yang kedua dengan gain sangat tinggi dan eksposur lama, yang menghasilkan foto putih.

API yang diuji:

Pass: Menghasilkan gambar hitam putih.

tes_hitam_putih_hitamtes_hitam_putih_hitam
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_kesamaan_manual

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

API yang diuji:

Lulus: Gambar identik secara visual dan dalam nilai RGB.

Gagal: Menampilkan lonjakan atau penurunan grafik rata-rata RGB di awal setiap burst

  • Toleransi adalah 3% untuk first_API_level < 30
  • Toleransi adalah 2% untuk first_API_level >= 30

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

tes_capture_result

Pengujian bahwa data yang valid kembali dalam objek CaptureResult . Melakukan pengambilan otomatis, manual, dan otomatis.

API yang diuji:

Lulus: Metadata valid untuk semua pengambilan dan pengaturan manual tidak bocor ke pengambilan otomatis kedua. Memplot koreksi bayangan lensa untuk tangkapan.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_channel_saturation

Menguji bahwa saluran RGB jenuh secara merata untuk menghilangkan pewarnaan di wilayah gambar yang jenuh.

API yang diuji:

Lulus: Saluran jenuh memiliki nilai RGB [255, 255, 255] dengan margin kesalahan kurang dari 1% perbedaan.

test_channel_saturation

test_channel_saturation.jpg

test_crop_region_raw

Menguji bahwa aliran RAW tidak dapat dipotong.

API yang diuji:

Lulus: Gambar YUV dipangkas di tengah tetapi bukan gambar RAW.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

Pengujian bahwa wilayah tanaman bekerja. Mengambil gambar penuh dan membuat tambalan dari 5 wilayah berbeda (sudut dan tengah.) Mengambil gambar dengan set potong untuk 5 wilayah. Membandingkan nilai patch dan crop gambar.

API yang diuji:

Lulus: Gambar wilayah yang dipangkas cocok dengan tambalan yang sesuai dengan gambar yang dipangkas.

test_dng_noise_model

Memverifikasi bahwa parameter model mentah DNG sudah benar. Plot menggambarkan varians terukur dari patch tengah kartu abu-abu dalam bidikan mentah yang ditangkap pada rentang sensitivitas, dan membandingkan nilai ini dengan varians yang diharapkan pada setiap sensitivitas oleh model noise DNG di kamera HAL (berdasarkan Parameter O,S dikembalikan dalam objek hasil tangkapan). Untuk detail lebih lanjut tentang model kebisingan DNG, unduh dokumen berikut tentang Model Kebisingan DNG .

API yang diuji:

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

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Menguji bahwa kompensasi nilai eksposur (EV) diterapkan. Tes meningkatkan eksposur dalam delapan langkah, dan memeriksa kecerahan terukur versus kecerahan yang diharapkan. Nilai yang diharapkan dihitung dari kecerahan gambar gambar tanpa kompensasi EV yang diterapkan dan nilai yang diharapkan akan jenuh jika nilai yang dihitung melebihi rentang nilai gambar sebenarnya. Pengujian gagal jika nilai yang diharapkan dan nilai terukur tidak cocok atau gambar terlalu terang dalam lima langkah.

API yang diuji:

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

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

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

API yang diuji:

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

test_ev_compensation_basic

test_ev_compensation_basic.png

uji_eksposur

Menguji bahwa eksposur konstan dicapai karena ISO dan waktu eksposur bervariasi. Mengambil serangkaian bidikan yang memiliki ISO dan waktu pencahayaan yang dipilih untuk menyeimbangkan satu sama lain. Hasil harus memiliki kecerahan yang sama, tetapi pada urutan gambar akan menjadi lebih berisik. Memverifikasi nilai rata-rata piksel sampel dekat satu sama lain. Memastikan bahwa gambar tidak dijepit ke 0 atau 1 (yang akan membuatnya terlihat seperti garis datar). Pengujian juga dapat dijalankan dengan gambar RAW dengan menyetel tanda debug di file konfigurasi Anda.

API yang diuji:

Lulus: Gambar memiliki kecerahan yang sama, tetapi menjadi lebih berisik dengan ISO yang lebih tinggi. Bidang RGB datar ketika nilai ISO*exposure konstan di atas ruang penguatan yang diuji.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

Pengujian yang mengonversi gambar YUV dan gambar JPEG perangkat terlihat sama. Tes mengambil pusat 10% dari gambar dan menghitung nilai RGB, dan memverifikasi bahwa mereka cocok.

API yang diuji:

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

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

test_latching

Menguji bahwa pengaturan (pencahayaan dan penguatan) terkunci pada bingkai kanan untuk kamera FULL dan LEVEL_3 . Mengambil serangkaian pemotretan menggunakan permintaan back-to-back, memvariasikan parameter permintaan pengambilan di antara pemotretan. Memeriksa apakah gambar memiliki properti yang diharapkan.

API yang diuji:

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

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

test_latching_plot_means

test_latching_plot_means.png

tes_linier

Menguji bahwa pemrosesan perangkat dapat dibalikkan ke piksel linier. Menangkap urutan bidikan dengan perangkat diarahkan ke target yang seragam.

API yang diuji:

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

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Menguji kunci 3A dan ledakan YUV (menggunakan pengaturan otomatis). Tes ini dirancang untuk lulus bahkan pada perangkat terbatas yang tidak memiliki MANUAL_SENSOR atau PER_FRAME_CONTROLS . Tes memeriksa konsistensi gambar YUV saat pemeriksaan frame rate dalam CTS.

API yang diuji:

Pass: Tangkapan terlihat konsisten.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_multi_camera_match

Pengujian untuk melihat apakah multi kamera pada perangkat memberikan nilai RGB yang serupa untuk tambalan abu-abu.

API yang diuji:

Lulus: Kamera yang berbeda menghasilkan nilai RGB yang serupa untuk tambalan abu-abu yang sama.

test_multi_camera+match_yuv_fl=4.38

test_multi_camera+match_yuv_fl=4.38.jpg

test_param_color_correction

Menguji bahwa parameter android.colorCorrection.* diterapkan saat disetel. Mengambil bidikan dengan nilai transformasi dan perolehan yang berbeda, dan menguji bahwa keduanya terlihat berbeda. Transformasi dan gain dipilih untuk membuat output semakin merah atau biru. Menggunakan peta nada linier. Pemetaan nada adalah teknik yang digunakan dalam pemrosesan gambar untuk memetakan satu set warna ke yang lain untuk memperkirakan penampilan gambar rentang dinamis tinggi dalam media yang memiliki rentang dinamis yang lebih terbatas.

API yang diuji:

Lulus: Nilai R dan B meningkat sesuai dengan transformasi.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

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

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (R boost)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (peningkatan B)

test_param_exposure_time

Menguji bahwa parameter android.sensor.exposureTime diterapkan.

API yang diuji:

Pass: Setiap bidikan lebih terang dari bidikan sebelumnya.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

Menguji bahwa parameter android.flash.mode diterapkan. Secara manual mengatur eksposur ke sisi gelap, sehingga jelas apakah blitz menyala atau tidak, dan menggunakan tonemap linier. Periksa bagian tengah dengan gambar ubin untuk melihat apakah ada gradien besar yang dibuat untuk memverifikasi apakah lampu kilat menyala.

API yang diuji:

Lulus: Bagian tengah gambar ubin memiliki gradien besar yang berarti bahwa lampu kilat ditembakkan.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

Menguji bahwa parameter android.noiseReduction.mode diterapkan dengan benar saat disetel. Mengambil gambar dengan kamera dengan cahaya redup. Menggunakan penguatan analog yang tinggi untuk memastikan gambar yang diambil tidak bising. Menangkap tiga gambar, untuk NR mati, "cepat", dan "kualitas tinggi". Juga menangkap gambar dengan gain rendah dan NR mati, dan menggunakan varians ini sebagai baseline. Semakin tinggi SNR (Signal to Noise Ratio), semakin baik kualitas gambarnya.

API yang diuji:

Lulus: SNR bervariasi dengan mode pengurangan kebisingan yang berbeda dan berperilaku sama seperti grafik di bawah ini.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

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

test_param_noise_reduction_high_gain_nr=0

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

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

uji_param_sensitivitas

Menguji bahwa parameter android.sensor.sensitivity diterapkan. Tes meningkatkan sensitivitas dalam 5 langkah dengan eksposur tetap untuk setiap bidikan.

API yang diuji:

Lulus: RGB berarti pusat 10% menjadi lebih cerah dengan peningkatan sensitivitas.

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

test_param_sensitivity_plot

test_param_sensitivity_plot.png

test_param_shading_mode

Menguji bahwa parameter android.shading.mode diterapkan.

API yang diuji:

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

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

Menguji bahwa parameter android.tonemap.mode diterapkan. Menerapkan kurva tonemap yang berbeda untuk setiap saluran R, G, B, dan memeriksa apakah gambar keluaran dimodifikasi seperti yang diharapkan. Tes ini terdiri dari dua tes, tes1 dan tes2.

API yang diuji:

Lulus:

  • test1: Kedua gambar memiliki tonemap linier, tetapi n=1 memiliki gradien yang lebih curam. Saluran G (hijau) lebih cerah untuk gambar n=1.
  • test2: Tonemap yang sama, tetapi panjangnya berbeda. Gambar adalah sama.
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

Memeriksa peningkatan sensitivitas RAW pasca. Menangkap satu set gambar RAW dan YUV dengan sensitivitas berbeda, memposting kombinasi peningkatan sensitivitas RAW dan memeriksa apakah rata-rata piksel keluaran sesuai dengan pengaturan permintaan.

API yang diuji:

Lulus: Gambar RAW menjadi lebih gelap saat peningkatan meningkat sementara gambar YUV tetap konstan dalam kecerahan

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

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=1600

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_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=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_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

Menangkap sekumpulan gambar mentah dengan peningkatan perolehan dan mengukur noise. Menangkap hanya mentah, dalam burst.

API yang diuji:

Pass: Setiap bidikan lebih berisik daripada bidikan sebelumnya, karena gain meningkat.

Menggunakan varians sel grid statistik tengah.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Menangkap serangkaian gambar mentah dengan meningkatkan waktu pencahayaan dan mengukur nilai piksel.

API yang diuji:

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

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ adalah 1 ms, 10¹ adalah 10 ms, 10⁻¹ adalah 0,1 ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivitas

Menangkap sekumpulan gambar mentah dengan sensitivitas yang meningkat dan mengukur noise (varians) di tengah 10% gambar. Menguji bahwa setiap bidikan lebih berisik daripada bidikan sebelumnya.

API yang diuji:

Pass: Varians meningkat dengan setiap tembakan.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

Menguji bahwa android.noiseReduction.mode diterapkan untuk memproses ulang permintaan. Menangkap gambar yang diproses ulang dengan kamera yang remang-remang. Menggunakan penguatan analog yang tinggi untuk memastikan gambar yang diambil tidak bising. Menangkap tiga gambar yang diproses ulang, untuk NR mati, "cepat", dan "kualitas tinggi". Menangkap gambar yang diproses ulang dengan penguatan rendah dan NR nonaktif, dan menggunakan varians ini sebagai baseline.

API yang diuji:

Lulus: CEPAT >= MATI, HQ >= CEPAT, HQ >> MATI

Plot SNR vs NR_MODE tipikal

Plot SNR vs NR_MODE tipikal

test_tonemap_sequence

Menguji urutan bidikan dengan kurva tonemap yang berbeda. Menangkap 3 bidikan manual dengan tonemap linier. Menangkap 3 bidikan manual dengan tonemap default. Menghitung delta antara setiap pasangan bingkai berurutan.

API yang diuji:

Lulus: Ada 3 bingkai identik diikuti oleh set berbeda dari 3 bingkai identik.

test_tonemap_sequence_i=0

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

test_yuv_jpeg_all

Menguji bahwa semua ukuran dan format yang dilaporkan untuk pengambilan gambar berfungsi. Menggunakan permintaan manual dengan tonemap linier sehingga YUV dan JPEG terlihat sama saat dikonversi oleh modul its.image. Gambar tidak disimpan secara default, tetapi dapat disimpan dengan mengaktifkan debug_mode .

API yang diuji:

Lulus: Semua pusat gambar memiliki perbedaan RMS (nilai akar-rata-rata-kuadrat sinyal) maks dalam gambar yang dikonversi RGB dengan 3% gambar YUV resolusi tertinggi.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

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

API yang diuji:

Lulus: Tes selesai dan mengembalikan gambar yang diminta.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Pengujian menangkap satu frame sebagai output YUV dan JPEG. Menggunakan permintaan manual dengan tonemap linier sehingga YUV dan JPEG terlihat sama (bila dikonversi oleh modul its.image .)

API yang diuji:

Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan RMS (nilai akar-rata-rata-kuadrat sinyal) kurang dari 1%.

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Pengujian menangkap satu frame sebagai output RAW dan YUV. Menggunakan permintaan manual dengan tonemap linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode .

API yang diuji:

Lulus: Gambar YUV dan JPEG serupa dan memiliki perbedaan RMS (nilai akar-rata-rata-kuadrat dari sinyal) kurang dari 3,5%.

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

test_yuv_plus_raw10

Pengujian menangkap satu frame sebagai output RAW10 dan YUV. Menggunakan permintaan manual dengan tonemap linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode .

API yang diuji:

Lulus: Gambar RAW10 dan YUV serupa dan memiliki perbedaan RMS (nilai akar-rata-rata-kuadrat sinyal) kurang dari 3,5%.

test_yuv_plus_raw10_shading=1_rawtest_yuv_plus_raw10_shading=1_yuv
test_yuv_plus_raw10_shading=1_raw.jpg test_yuv_plus_raw10_shading=1_yuv.jpg

test_yuv_plus_raw12

Pengujian menangkap satu frame sebagai output RAW12 dan YUV. Menggunakan permintaan manual dengan tonemap linier sehingga RAW dan YUV diharapkan sama. Membandingkan nilai RGB 10% pusat gambar yang dikonversi RGB. Log android.shading.mode .

API yang diuji:

Lulus: Gambar RAW12 dan YUV serupa dan memiliki perbedaan RMS (nilai akar rata-rata-kuadrat dari sinyal) kurang dari 3,5%.

test_yuv_plus_raw12_shading=1_raw.jpgtest_yuv_plus_raw12_shading=1_yuv.jpg
test_yuv_plus_raw12_shading=1_raw.jpg test_yuv_plus_raw12_shading=1_yuv.jpg

adegan2_a

scene2_a memiliki tiga wajah dengan latar belakang abu-abu dan pakaian netral. Wajah dipilih untuk memiliki berbagai macam warna kulit.

adegan2_a

adegan2_a

tes_efek

Menangkap bingkai untuk efek kamera yang didukung dan memeriksa apakah mereka dihasilkan dengan benar. Tes hanya memeriksa efek OFF dan MONO , tetapi menyimpan gambar untuk semua efek yang didukung.

API yang diuji:

Pass: Menangkap gambar pemandangan dengan efek OFF dan gambar monokrom dengan efek diatur ke MONO .

tes_efek_MONO

test_effects_MONO.jpg

test_faces

Menguji deteksi wajah. Gambar disimpan, tetapi informasi kotak dan tengara ditabulasi di test_faces_stdout.txt .

API yang diuji:

Pass: Mendeteksi setidaknya satu wajah dari gambar.

test_format_combos

Menguji berbagai kombinasi format output.

API yang diuji:

Pass: Semua kombinasi berhasil ditangkap.

uji_jpeg_kualitas

Menguji kualitas kompresi JPEG kamera. Langkah kualitas JPEG melalui android.jpeg.quality dan pastikan Tabel Kuantisasi berubah dengan benar.

API yang diuji:

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

uji_jpeg_kualitas

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

test_jpeg_quality gagal

Contoh tes yang gagal

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

test_num_faces

Menguji deteksi wajah.

API yang diuji:

Pass: Menemukan tiga wajah.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

adegan2_b

test_auto_per_frame_control

Menguji properti PER_FRAME_CONTROL untuk permintaan pengambilan otomatis.

API yang diuji:

Lulus: Semua properti PER_FRAME_CONTROL ada.

test_auto_per_frame_control_frame_1

test_auto_per_frame_control_frame_1.jpg

test_auto_per_frame_control_frame_10

test_auto_per_frame_control_frame_10.jpg

test_auto_per_frame_control_frame_29

test_auto_per_frame_control_frame_29.jpg

test_auto_per_frame_control_plot

test_auto_per_frame_control_plot.png

test_num_faces

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

API yang diuji:

Pass: Menemukan 3 wajah.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

adegan2_c

test_num_faces

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

API yang diuji:

Pass: Menemukan 3 wajah.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Menguji latensi pengambilan JPEG untuk kelas kinerja S sebagaimana ditentukan di bagian 2.2.7.2 Kamera di CDD.

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

test_camera_launch_perf_class

Menguji latensi peluncuran kamera untuk kelas performa S sebagaimana ditentukan bagian 2.2.7.2 Kamera di CDD.

Lulus: HARUS memiliki latensi pengaktifan kamera2 (kamera terbuka ke bingkai pratinjau pertama) <600 ms sebagaimana diukur oleh PerformanceTest kamera CTS dalam kondisi pencahayaan ITS (3000K) untuk kedua kamera utama.

adegan2_d

test_num_faces

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

API yang diuji:

Pass: Menemukan 3 wajah.

adegan2_e

test_continuous_picture

50 frame resolusi VGA ditangkap dengan permintaan pengambilan terlebih dahulu pengaturan android.control.afMode = 4 (CONTINUOUS_PICTURE).

API yang diuji:

Lulus: Sistem 3A menetap di akhir pengambilan 50-bingkai.

test_num_faces

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

API yang diuji:

Pass: Menemukan 3 wajah.

adegan3

Scene3 menggunakan bagan ISO12233, dan sebagian besar pengujian menggunakan metode ekstraktor bagan untuk menemukan bagan di tempat kejadian. Untuk alasan ini, sebagian besar gambar yang disimpan tidak memiliki batas seperti gambar untuk adegan 1, 2 atau 4, tetapi hanya bagan.

tes_3a_konsistensi

Tes untuk konsistensi 3A.

API yang diuji:

Lulus: 3A menyatu untuk eksposur, penguatan, awb (keseimbangan putih otomatis), dan fd (jarak fokus) tiga kali dalam toleransi.

test_edge_peningkatan

Menguji apakah parameter android.edge.mode diterapkan dengan benar. Menangkap gambar yang tidak diproses ulang untuk setiap mode tepi dan mengembalikan ketajaman gambar keluaran dan metadata hasil pengambilan. Memproses permintaan pengambilan dengan mode tepi tertentu, sensitivitas, waktu pencahayaan, jarak fokus, dan parameter permukaan keluaran.

Lulus: Mode cepat tidak lebih tajam dari mode HQ (kualitas tinggi).

API yang diuji:

Parameter kamera yang terpengaruh:

  • EDGE_MODE

test_edge_enhancement_edge=0

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)

test_flip_mirror

Menguji apakah gambar diorientasikan dengan benar sesuai bagian CDD 7.5.2 Kamera Depan [C-1-5] .

Gambar yang dicerminkan, dibalik, atau diputar dapat diidentifikasi dengan fitur berlian di dekat bagian tengah.

Lulus: Gambar tidak dibalik, dicerminkan, atau diputar.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_lens_movement_reporting

Menguji apakah bendera pergerakan lensa dilaporkan dengan benar. Menangkap rentetan 24 gambar dengan 12 bingkai pertama pada jarak fokus optimal (seperti yang ditemukan oleh 3A) dan 12 bingkai terakhir pada jarak fokus minimum. Di sekitar frame 12, lensa bergerak menyebabkan ketajaman menurun. Ketajaman akhirnya stabil saat lensa bergerak ke posisi akhir. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.

APIs tested:

Pass: Lens movement flag is True in the frame with sharpness change.

test_lens_position

Tests if the focus position is properly reported for moving lenses.

APIs tested:

Pass: Correct focus positions are reported.

test_reprocess_edge_enhancement

Returns sharpness of the output images and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, output surface parameter, and reprocess format.

APIs tested:

Pass: Sharpness for the different edge modes is correct.

scene4

Scene4 consists of a black circle on a white background inside a square.

scene4

scene4

test_aspect_ratio_and_crop

Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).

APIs tested:

Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.

test_multi_camera_alignment

Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.

APIs tested:

Pass: Focal lengths and circles sizes are consistent.

scene5/diffuser

test_lens_shading_and_color_uniformity

Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.

APIs tested:

Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.

scene6

Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.

scene6

scene6

test_zoom

Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.

APIs tested:

Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.

test_zoom

test_zoom to find the contour of the circle closest to the center.

scene_change

test_scene_change

The scene change makes use of the tablet displaying a face scene and then turns the tablet on and off to create a scene change. The scene reuses scene2_e, but is in a separate scene because of the required tablet control. Additionally, for manual testing, the scene change can be accomplished by waving your hand in front of the camera.

APIs tested:

Pass: The android.control.afSceneChange flag is asserted with a scene change.

sensor_fusion

Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion tests can be automated with the Sensor Fusion Box .

checkerboard

Image of checkerboard

test_multi_camera_frame_sync

Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.

APIs tested:

Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.

test_sensor_fusion

Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the REALTIME parameter is not enabled.

The test_sensor_fusion test generates a number of plots. The two most important plots for debugging are:

  • test_sensor_fusion_gyro_events : Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

APIs tested:

Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .