Kamera BT

Kamera Görüntü Test Paketi (ITS), görüntüler üzerinde test çalıştırmaya yönelik bir çerçevedir Android kamera tarafından üretilmiştir. ITS'deki her testin genel amacı kamerayı belirli bir şekilde yapılandırın, bir veya daha fazla fotoğraf çekin ve beklenen görüntü verilerini içerip içermediğini görmek için kareleri inceleyin. Çoğu testler kameranın belirli bir hedef grafiğe doğrultulmasını veya belirli bir yoğunlukta aydınlatılır.

ITS, CTS Doğrulayıcı test bandında yer almaktadır. cts/apps/CameraITS. Cihazlar, desteklenen özelliklerle ilgili ITS testlerini geçmelidir. CTS'nin bir alt kümesi olarak üçüncü taraf uygulamaları için kamera çerçevesi tarafından tanıtılan.

Kurulum

ITS testleri çalıştırmak için aşağıdakiler ayarlanmalıdır:

  • Test altındaki cihaz (DUT)
  • Bir ana makine (örneğin, Linux masaüstü veya dizüstü bilgisayar)
  • Kameranın fotoğrafını çektiği bir sahne

Cihaz test ediliyor (DUT) kurulumu

DUT ayarlamak için aşağıdaki adımları uygulayın:

  1. DUT'yi USB üzerinden bir ana makineye bağlayın.
  2. Ana makineye ADB üzerinden DUT erişimi için izin verin.
  3. Cihaza CTS Doğrulayıcı uygulamasını (CtsVerifier.apk) yükleyin. Daha fazla CTS Doğrulayıcı'yı kullanma bölümüne bakın.

    extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
    cd android-cts-verifier
    adb install -r -g CtsVerifier.apk
    

Ana makine kurulumu

ITS, ana makinenin USB üzerinden DUT'ye bağlanmasını gerektirir. cihaz kontrolü ve iletişim için ADB'yi kullanabilmeli ve gerekli yüklü olması gerekir.

Ana makinenizi kurmak için aşağıdaki yazılımın yüklü olduğundan emin olun.

Android SDK Platform Araçları

Android SDK Platform araçları yüklenmeli ve ADB'nin içinde olması gerekir ana makinede çalışan kabuğun veya terminalin yürütülebilir yolu üretiliyor. Android SDK Platformu araçlarının herkese açık olarak yayınlanan sürümleri için bkz. SDK Platformu Araçları sürüm notları.

Python

Ana makinede Python yüklü olmalıdır. Paket halinde sunulan bir Uyumlu sürümlerin desteklenmesini sağlamak için Python dağıtımı. Ayrıntılı bilgi için belirli bir sürüm için yüklenecek Python ve paket sürümleri için İlgili sürüm için Kamera ITS sürüm notları.

Mobil

Android 12 ve sonraki sürümlerde Mobly test çerçevesi yüklenmelidir. Mobly, DUT ve grafik tableti kurmanızı sağlar. its_base_test sınıf. Mobly test çerçevesini yüklemek için aşağıdaki komutu çalıştırın:

pip install mobly

Ortam kurulumu

Test ortamını kurmak için şu komutu çalıştırın:

cd CameraITS
source build/envsetup.sh

Bu komut, Python kurulumunu kontrol eder ve PYTHONPATH komutunu ayarlar ortam değişkeni kullanır ve utils/*.py modüllerde birim testleri çalıştırır. Yanıt hayır ise: terminale yazdırılırsa ortam, ITS'yi çalıştırmaya hazırdır testler.

Sahne kurulumu

Sahneleri oluşturmak için Kamera ITS-in-a-box kurulumu otomasyon kolaylığı, güvenilirlik ve verimlilik. Kullanıma hazır ITS test ekipmanları ışıklandırma, ortalama ve grafik değişimi gereksinimlerini destekler BT ekiplerine yönelik bir şeyler. Ayrıca kutu içinde ITS gerekir. kamera uzantıları teşvik etmek anlamına gelir.

Manuel test için aşağıdakilerden emin olun:

  • DUT bir tripod üzerinde
  • DUT, her test için doğru sahneye yönlendirilir. (ITS test komut dosyası, yeni bir modda test başlatmadan önce, sahne ayarının değiştirilmesini sahne.)
  • DUT, ana makineye USB üzerinden bağlıdır.
  • Test çalıştırması sırasında DUT hareket etmez.
  • Sahne sabit ve dalgalanmayan bir ışık kaynağıyla aydınlatılır. ( titremeye neden olduğu için floresan ışık kullanın.)

ITS test komut dosyası, kullanıcıdan sahneyi değiştirmesini isteyen bir istem gösteriyor. gerekli ayarları yapın.

Telefon yönü, kamera arka plan rengi olmadan sağlayabilir. Bunu kontrol etmenin en kolay yolu sahne2. Çoğu telefonda telefon, telefon arka kamera için saat yönünün tersine döndürüldü ve arka kamera için saat yönünde döndürüldü ön kamera.

Yapılandırma dosyaları

Mobly çerçevesini kullanarak config.yml yapılandırma dosyası oluşturarak mobil test yataklarını tanımlar. Aşağıda, farklı kullanım alanlarına yönelik örnekler verilmiştir.

Tablet tabanlı sahneler config.yml dosyası

Aşağıda, tablet tabanlı sahneler için örnek bir config.yml dosyası gösterilmektedir. Örneğin, tablet tabanlı test için, TABLET anahtar kelimesinin test platformu adında olması gerekir. Etkinlik sırasında ilk kullanıma hazırlamadan önce, Mobly test çalıştırıcısı dosyadaki parametreleri ve bunları bağımsız testlere geçirir.

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

Test yatağını çağırmak için tools/run_all_tests.py komutunu çalıştırın. Komut yoksa kameraları veya sahneleri belirten satır değerleri varsa test, config.yml dosyası değerleridir. Kameralar veya sahneler için komut satırı değerleri varsa bunlar config.yml dosyasının TestParams bölümündeki değerleri geçersiz kılın. Örnek:

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

sensör_fusion sahne config.yml dosyası

Aşağıda, sensor_fusion testleri için örnek bir config_yml dosyası gösterilmektedir. sensor_fusion testi için SENSOR_FUSION anahtar kelimesi test ortamında olmalıdır dokunun. Android 13 ve sonraki sürümler yalnızca Arduino'yu destekler önizleme ve video sabitleme testi sayesinde sensör füzyonu için sensör füzyon denetleyici. Android 12, Arduino ve Canakit kumandalarını destekler.

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

Şununla sensor_fusion testleri: sensor fusion Box'ı (sensör füzyon kutusu) çalıştırın:

python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0

Birden fazla testbeds config.yml dosyası

Aşağıda birden çok test yatağı içeren bir config.yml dosya örneği, tablet test platformu ve sensor_fusion test yatağı. Doğru test yatağı belirlenir. görüntüler.

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

Manuel test amaçlı config.yml dosyası

Aşağıda, manuel test için örnek bir config.yml dosyası gösterilmektedir. Başlangıç fiyatı Android 14, manuel testi, scene_extensions testler. Manuel test için MANUAL anahtar kelimesi test platformu adında olmalıdır. Ayrıca, AndroidDevice bölümü tablet gibi.

TestBeds:
  - Name: TEST_BED_MANUAL
    Controllers:
        AndroidDevice:
          - serial: 8A9X0NS5Z
            label: dut

    TestParams:
      debug_mode: "False"
      camera: 0
      scene: 1

ITS testleri yapma

Bu bölümde, ITS testlerinin nasıl çalıştırılacağı açıklanmaktadır.

Testleri çağırma

Cihazdan sonra, ana makine (ortam dahil) ve fiziksel sahne, aşağıdaki işlemi uygulayarak ITS testlerini çalıştırın.

  1. CTS Verifer uygulamasını açın. Testler menüsünde, Kamera ITS Testi.

  2. CameraITS/ ana makinedeki ITS testlerini çalıştırın dizin. Örneğin, ön ve arka kameraları olan bir cihazda şu komutu kullanın:

    python tools/run_all_tests.py
    

    Komut dosyası, kameralar ve test sahneleri aracılığıyla iterasyonlar yaparak config.yml dosyası yükleyin. Hata ayıklama kurulumları için en hızlı geri dönüş için tek bir testle scene2 sahnenin toplam durumunu gösterir.

    Manuel test için her sahnede bir grup ITS testi çalıştırmaya başlamadan önce komut dosyası geçerli sahnenin resmini çeker, bunu JPEG olarak kaydeder, konsola giden JPEG yolunu gösterir ve kullanıcıdan resmin doğru olup olmadığını kontrol etmesini ister. tamam. Bu yakalama ve onaylama akışı, kullanıcı ilk kez resmin normal olduğunu onaylar. Bu akıştaki mesajlar aşağıda verilmiştir.

    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)
    

    Komut dosyası her çalıştırıldığında PASS, FAIL ve Her bir ITS testi için FAIL* veya SKIP. FAIL*, testin başarısız olduğunu gösterir ancak test henüz zorunlu kılınmadığı için test, PASS olarak raporlanır. CtsVerifier'a gönderin. SKIP, testin geçildiğini gösterir. Bunun nedeni: cihaz test edilen temel özelliğin tanıtımını yapmamıştır. Örneğin, Örneğin, bir cihaz reklamı yapılan kamera arayüzleri aracılığıyla reklam yapmıyorsa DNG'yi destekler, DNG dosyası yakalamayla ilgili testler atlanır ve sayılır PASS olarak.

  3. Testlerin test şartlarını karşıladığını onaylamak için yeşil onay işareti düğmesi. CTS Doğrulayıcı'daki Kamera ITS Testi girişi testler menüsünün rengi yeşile döner ve telefonun Kamera ITS'sini geçtiğini belirtir.

Paralel DUT testi

Android 14 veya sonraki sürümleri çalıştıran cihazlar paralel video desteği sunuyor DUT testi. Bu sayede DUT'leri birden fazla donanımla paralel olarak test edebilirsiniz. yardımcı olabilir. Örneğin, paralel test ile kamera 0'ı tek bir cihazda test edebilirsiniz düzenek ile kamera 1'i aynı anda kullanmanız gerekiyor. Paralel için tüm testler test oturumları, referans DUT'deki CTS Doğrulayıcı oturumunda toplanır. Manuel aydınlatma olarak Arduino ışıklandırma kontrolü ile paralel test yapmanız gerekir. kontrolü desteklenmez. Farklı bir her bir düzenek için ışıklandırmayı kontrol eder.

Aşağıda, çalıştırılacak üç test yatağı tanımlayan örnek bir config.yml dosyası gösterilmektedir yardımcı olur.

TestBeds:
  - Name: TEST_BED_TABLET_SCENES_INDEX_0
    Controllers:
        AndroidDevice:
          - serial: <device-id-0>
            label: dut
          - serial: <tablet-id-0>
            label: tablet
    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"
      lighting_cntl: "arduino"
      lighting_ch: <controller-channel-0>
      camera: 0
      scene: <scene-name>  # if <scene-name> left as-is runs all scenes
      foldable_device: "False"

  - Name: TEST_BED_TABLET_SCENES_INDEX_1
    Controllers:
        AndroidDevice:
          - serial: <device-id-1>
            label: dut
          - serial: <tablet-id-1>
            label: tablet
    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"
      lighting_cntl: "arduino"
      lighting_ch: <controller-channel-1>
      camera: 1
      scene: <scene-name>  # if <scene-name> left as-is runs all scenes
      foldable_device: "False"

  # TEST_BED_SENSOR_FUSION represents testbed index 2
  # Parallel sensor_fusion is currently unsupported due to Arduino requirements
  - Name: TEST_BED_SENSOR_FUSION
    # Test configuration for sensor_fusion
    Controllers:
        AndroidDevice:
          - serial: <device-id>
            label: dut
    TestParams:
      fps: 30
      img_size: 640,480
      test_length: 7
      debug_mode: "False"
      chart_distance: 25
      rotator_cntl: "arduino"
      rotator_ch: <controller-channel-2>
      camera: <camera-id>
      foldable_device: "False"
      tablet_device: "False"
      lighting_cntl: "None"
      lighting_ch: <controller-channel>
      scene: "sensor_fusion"

Test yataklarını paralel olarak çalıştırmak için aşağıdaki komutu kullanın:

for i in 0 1 2; do python3 tools/run_all_tests.py testbed_index=$i num_testbeds=3 & done; wait

DNG gürültü modeli

RAW veya DNG yakalama özelliğine sahip olduğunu tanıtan cihazlar gürültü sağlamalıdır. her ham çekimin yakalama sonucu meta verilerinde daha fazla ilişkilendirme elde eder. Bu gürültü modeli her kamera için kamera donanım soyutlama katmanına (örneğin, ön ve arka kameralar) kullandığınızdan emin olun.

Gürültü modeli uygulaması

Gürültü modeli uygulamak için aşağıdaki adımları uygulayarak gürültü modeli oluşturma ve modeli kamera donanım soyutlama katmanına yerleştirin.

  1. Her kamera için bir gürültü modeli oluşturmak üzere dng_noise_model.py komut dosyası tools dizini. Bu işlem, bir C kod snippet'i verir. Örneğin, kamera ve çekim ortamının nasıl kurulacağı hakkında daha fazla bilgi için bkz. tools dizinindeki DngNoiseModel.pdf dokümanı.

  2. Cihazda gürültü modelini uygulamak için C kodunu kesip yapıştırın snippet'i kameraya ekleyin.

Gürültü modeli doğrulaması

tests/scene1_1/test_dng_noise_model.py otomatik ITS testi, gürültü değerlerinin doğrulanıp doğrulanmadığı doğru olduğundan emin olun.