Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Kamera ITS

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:

  1. Hubungkan DUT ke mesin host melalui USB.
  2. Berikan izin kepada host untuk mengakses DUT melalui ADB.
  3. 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.

  1. Buka aplikasi CTS Verifer. Di menu tes, pilih Kamera Tes ITS .

  2. 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 adegan scene2 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.

  3. 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.

  1. Untuk menghasilkan model derau untuk setiap kamera, jalankan skrip dng_noise_model.py di direktori tools . Ini menghasilkan cuplikan kode C. Untuk informasi lebih lanjut tentang cara menyiapkan kamera dan lingkungan pengambilan gambar, lihat dokumen DngNoiseModel.pdf di direktori tools .

  2. 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..