Camera Image Test Suite (ITS) adalah kerangka kerja untuk menjalankan pengujian pada gambar yang dihasilkan oleh kamera Android. Tujuan umum dari setiap pengujian di ITS adalah untuk mengonfigurasi kamera dengan cara tertentu, mengambil satu atau beberapa bidikan, dan memeriksa bidikan untuk melihat apakah bidikan berisi data gambar yang diharapkan. Banyak pengujian yang mengharuskan kamera diarahkan ke bagan target tertentu atau diterangi dengan intensitas tertentu.
ITS terletak di test harness CTS Verifier di cts/apps/CameraITS
. Perangkat harus lulus tes ITS sesuai dengan fitur yang didukung yang diiklankan oleh kerangka kamera untuk aplikasi pihak ketiga sebagai bagian dari CTS.
Mempersiapkan
Untuk menjalankan tes ITS, berikut ini harus disiapkan:
- Perangkat yang sedang diuji (DUT)
- Mesin host (misalnya, desktop atau laptop Linux)
- Adegan yang difoto oleh kamera
Penyiapan perangkat dalam pengujian (DUT).
Untuk menyiapkan DUT, ikuti langkah-langkah berikut:
- Hubungkan DUT ke mesin host melalui USB.
- Berikan izin kepada host untuk mengakses DUT melalui ADB.
Instal aplikasi CTS Verifier (
CtsVerifier.apk
) ke perangkat. Untuk informasi selengkapnya, lihat Menggunakan Pemverifikasi CTS .extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
Penyiapan tuan rumah
ITS membutuhkan mesin host untuk terhubung ke DUT melalui USB, dapat menggunakan ADB untuk kontrol dan komunikasi perangkat, dan menginstal perangkat lunak yang diperlukan.
Untuk menyiapkan mesin host Anda, pastikan perangkat lunak berikut diinstal.
Alat Platform SDK Android
Alat Platform Android SDK harus diinstal dan ADB harus berada di jalur yang dapat dieksekusi dari shell atau terminal yang berjalan di mesin host. Untuk versi Android SDK Platform tools yang dirilis secara publik, lihat catatan rilis SDK Platform Tools .
Piton
Python harus diinstal pada mesin host. Kami merekomendasikan penggunaan distribusi Python yang dibundel untuk memastikan dukungan untuk versi yang kompatibel. Untuk detail tentang Python dan versi paket mana yang akan dipasang untuk rilis tertentu, lihat catatan rilis Camera ITS untuk rilis terkait.
Mobil
Untuk Android 12 dan lebih tinggi, Mobly test framework harus diinstal. Mobly memungkinkan Anda menyiapkan DUT dan tablet bagan di kelas its_base_test
. Untuk menginstal kerangka pengujian Mobly, jalankan:
pip install mobly
Pengaturan lingkungan
Untuk menyiapkan lingkungan pengujian, jalankan:
cd CameraITS
source build/envsetup.sh
Perintah ini memeriksa instalasi Python, menyiapkan variabel lingkungan PYTHONPATH
, dan menjalankan pengujian unit pada modul utils/*.py
. Jika tidak ada kesalahan yang dicetak ke terminal, lingkungan siap menjalankan pengujian ITS.
Pengaturan adegan
Untuk menyiapkan pemandangan, kami merekomendasikan penggunaan Camera ITS-in-a-box setup untuk kemudahan dalam otomatisasi, keandalan, dan efisiensi dalam pengujian. Rig uji ITS-in-a-box mendukung semua persyaratan pencahayaan, pemusatan, dan perubahan bagan untuk ITS. Selain itu, ITS-in-a-box diperlukan untuk pengujian ekstensi kamera .
Untuk pengujian manual, pastikan hal-hal berikut:
- DUT ada di tripod
- DUT diarahkan ke adegan yang benar untuk setiap tes. (Skrip pengujian ITS memberikan petunjuk untuk mengubah pengaturan adegan sebelum memulai pengujian di adegan baru.)
- DUT terhubung ke mesin host melalui USB.
- DUT tidak bergerak selama uji coba.
- Adegan diterangi dengan sumber cahaya yang stabil dan tidak berfluktuasi. (Jangan gunakan lampu neon karena ini menimbulkan kedipan.)
Skrip pengujian ITS menampilkan perintah yang meminta pengguna untuk mengubah pengaturan adegan sebelum memulai pengujian di adegan baru.
Orientasi ponsel harus disetel agar kamera mengambil gambar tanpa rotasi. Cara termudah untuk memeriksanya adalah dengan adegan wajah di scene2. Sebagian besar ponsel memiliki ponsel dalam orientasi lanskap dengan ponsel diputar berlawanan arah jarum jam untuk kamera belakang dan diputar searah jarum jam untuk kamera depan.
File konfigurasi
Dengan menggunakan framework Mobly, Anda harus membuat file konfigurasi config.yml
untuk menentukan testbed Mobly. Berikut ini adalah contoh untuk kasus penggunaan yang berbeda.
File config.yml adegan berbasis tablet
Berikut adalah contoh file config.yml
untuk scene berbasis tablet. Untuk pengujian berbasis tablet, kata kunci TABLET
harus ada di nama testbed. Selama inisialisasi, mobly test runner menginisialisasi parameter dalam file dan meneruskannya ke masing-masing pengujian.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
Untuk memanggil test bed, jalankan tools/run_all_tests.py
. Jika tidak ada nilai baris perintah yang menentukan kamera atau pemandangan, pengujian dijalankan dengan nilai file config.yml
. Jika ada nilai baris perintah untuk kamera atau pemandangan, nilai ini akan menggantikan nilai di bagian TestParams
pada file config.yml
. Misalnya:
python tools/run_all_tests.py
python tools/run_all_tests.py camera=1
python tools/run_all_tests.py scenes=2,1,0
python tools/run_all_tests.py camera=1 scenes=2,1,0
file sensor_fusion scene config.yml
Berikut adalah contoh file config_yml
untuk pengujian sensor_fusion
. Untuk pengujian sensor_fusion
, kata kunci SENSOR_FUSION
harus ada di nama testbed. Android 13 dan lebih tinggi hanya mendukung pengontrol Arduino untuk fusi sensor karena pratinjau dan pengujian stabilisasi video. Android 12 mendukung pengontrol Arduino dan Canakit.
Testbeds
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino
rotator_ch: 1
camera: 0
Untuk menjalankan pengujian sensor_fusion
dengan sensor fusion box , jalankan:
python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
Beberapa file config.yml testbeds
Berikut ini adalah contoh file config.yml
dengan beberapa testbed, testbed tablet dan testbed sensor_fusion
. Testbed yang benar ditentukan oleh adegan yang diuji.
Testbeds
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
File config.yml pengujian manual
Berikut adalah contoh file config.yml
untuk pengujian manual. Untuk pengujian manual, kata kunci MANUAL
harus ada di nama testbed. Selain itu, bagian AndroidDevice
tidak boleh menyertakan bagian serial atau label untuk tablet.
TestBeds:
- Name: TEST_BED_MANUAL
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
debug_mode: "False"
camera: 0
scene: 1
Menjalankan tes ITS
Bagian ini menjelaskan cara menjalankan tes ITS.
Memanggil tes
Setelah perangkat, mesin host (termasuk lingkungan), dan tampilan fisik disiapkan, jalankan pengujian ITS menggunakan proses berikut.
Buka aplikasi CTS Verifer. Di menu tes, pilih Kamera Tes ITS .
Dari mesin host, jalankan tes ITS dari direktori
CameraITS/
. Misalnya, untuk perangkat dengan kamera depan dan belakang, jalankan perintah berikut:python tools/run_all_tests.py
Skrip beralih melalui kamera dan adegan pengujian berdasarkan file
config.yml
. Untuk penyiapan debugging, sebaiknya jalankan salah satu adeganscene2
dengan pengujian tunggal untuk perputaran tercepat.Untuk pengujian manual, sebelum mulai menjalankan rangkaian pengujian ITS pada setiap adegan, skrip mengambil gambar dari adegan saat ini, menyimpannya sebagai JPEG, mencetak jalur ke JPEG ke konsol, dan meminta pengguna untuk mengonfirmasi apakah gambarnya oke. Aliran pengambilan dan konfirmasi ini berulang hingga pengguna mengonfirmasi bahwa gambar tersebut baik-baik saja. Berikut adalah pesan-pesan dalam alur ini.
Preparing to run ITS on camera 0 Start running ITS on camera: 0 Press Enter after placing camera 0 to frame the test scene: scene1_1 The scene setup should be: A grey card covering at least the middle 30% of the scene Running vendor 3A on device Capture an image to check the test scene Capturing 1 frame with 1 format [yuv] Please check scene setup in /tmp/tmpwBOA7g/0/scene1_1.jpg Is the image okay for ITS scene1_1? (Y/N)
Setiap menjalankan skrip mencetak log yang menunjukkan LULUS, GAGAL, atau SKIP untuk setiap tes ITS, di mana SKIP menunjukkan bahwa tes lulus karena perangkat tidak mengiklankan kemampuan dasar yang sedang diuji. Misalnya, jika perangkat tidak beriklan melalui antarmuka kamera yang mendukung DNG, pengujian yang terkait dengan pengambilan file DNG akan dilewati dan dihitung sebagai lulus.
Untuk mengetahui bahwa tes telah memenuhi persyaratan tes, ketuk tombol tanda centang hijau. Entri Camera ITS Test di menu CTS Verifier test kemudian menjadi hijau dan menandakan ponsel sudah lulus Camera ITS.
Model kebisingan DNG
Perangkat yang mengiklankan kemampuan untuk menangkap RAW atau DNG harus menyediakan model derau dalam metadata hasil tangkapan dari setiap bidikan mentah. Model noise ini harus disematkan ke kamera HAL untuk masing-masing kamera (misalnya kamera depan dan belakang) pada perangkat yang diklaim mendukung.
Implementasi model kebisingan
Untuk mengimplementasikan model noise, ikuti langkah-langkah ini untuk menghasilkan model noise dan sematkan model tersebut ke kamera HAL.
Untuk menghasilkan model derau untuk setiap kamera, jalankan skrip
dng_noise_model.py
di direktoritools
. Ini menghasilkan cuplikan kode C. Untuk informasi lebih lanjut tentang cara menyiapkan kamera dan lingkungan pengambilan gambar, lihat dokumenDngNoiseModel.pdf
di direktoritools
.Untuk mengimplementasikan model noise untuk perangkat, potong dan tempel cuplikan kode C ke dalam HAL kamera.
Validasi model kebisingan
tests/scene1_1/test_dng_noise_model.py
tes ITS otomatis memvalidasi model noise dengan memverifikasi bahwa nilai noise untuk eksposur bidikan dan penguatan yang diberikan dalam data kamera sudah benar..