Kamera ITS'ye genel bakış

Kamera Görüntüsü Test Paketi (ITS), Android kamera tarafından üretilen görüntüler üzerinde testler çalıştırmak için kullanılan bir çerçevedir. ITS'deki her testin genel amacı, kamerayı belirli bir şekilde yapılandırmak, bir veya daha fazla çekim yapmak ve çekimlerde beklenen görüntü verilerinin bulunup bulunmadığını incelemektir. Testlerin çoğunda kameranın belirli bir hedef grafiğe yönlendirilmesi veya belirli bir yoğunlukta aydınlatılması gerekir.

ITS, cts/apps/CameraITS konumundaki CTS Doğrulayıcı test düzeneğinde yer alır. Cihazlar, üçüncü taraf uygulamaları için kamera çerçevesi tarafından CTS'nin bir alt kümesi olarak tanıtılan desteklenen özelliklere karşılık gelen ITS testlerini geçmelidir.

Kurulum

ITS testlerini çalıştırmak için aşağıdakilerin ayarlanması gerekir:

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

Test edilen cihaz (DUT) kurulumu

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

  1. DUT'u USB üzerinden bir ana makineye bağlayın.
  2. Ana makinenin ADB üzerinden test cihazına erişmesi için izin verin.
  3. Cihaza CTS Verifier uygulamasını (CtsVerifier.apk) yükleyin. Daha fazla bilgi için CTS Verifier'ı kullanma başlıklı makaleyi inceleyin.

    extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
    cd android-cts-verifier
    adb install -r -g CtsVerifier.apk
  4. DUT'ta varsayılan kamera uygulamasını başlatın ve test sırasında müdahaleyi önlemek için başlatma sırasında görünen tüm pencereleri temizleyin.

Ana makine kurulumu

ITS, ana makinenin USB üzerinden DUT'a bağlı olmasını, cihaz kontrolü ve iletişimi için ADB'yi kullanabilmesini ve gerekli yazılımın yüklü olmasını gerektirir.

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

Android SDK Platform Araçları

Android SDK Platform Tools'un yüklü olması ve ADB'nin, ana makinede çalışan kabuğun veya terminalin yürütülebilir yolunda olması gerekir. Android SDK Platform Araçları'nın herkese açık olarak yayınlanan sürümü için SDK Platform Araçları sürüm notlarına bakın.

Python

Python, ana makineye yüklenmiş olmalıdır. Uyumlu sürümlerin desteklenmesi için paketlenmiş bir Python dağıtımı kullanmanızı öneririz. Belirli bir sürüm için hangi Python ve paket sürümlerinin yükleneceği hakkında ayrıntılı bilgi edinmek için ilgili sürümün Kamera ITS sürüm notlarına bakın.

Mobly

Android 12 ve sonraki sürümlerde Mobly test çerçevesini yükleyin. Mobly, its_base_test sınıfında bir DUT ve grafik tablet ayarlamanıza olanak tanır. Mobly test çerçevesini yüklemek için şu komutu çalıştırın:

pip install mobly

Ortam kurulumu

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

cd CameraITS
source build/envsetup.sh

Bu komut, Python yüklemesini kontrol eder, PYTHONPATH ortam değişkenini ayarlar ve utils/*.py modüllerinde birim testlerini çalıştırır. Terminalde hata mesajı yoksa ortam, ITS testlerini çalıştırmaya hazırdır.

Sahne kurulumu

Sahneleri ayarlamak için otomasyon kolaylığı, güvenilirlik ve test verimliliği açısından Camera ITS-in-a-box kurulumunu kullanmanızı öneririz. ITS-in-a-box test düzenekleri, ITS için tüm aydınlatma, ortalama ve grafik değiştirme gereksinimlerini destekler. Ayrıca, kamera uzantıları testleri için ITS-in-a-box gereklidir.

Manuel test için şunlardan emin olun:

  • DUT, tripoda yerleştirilmiş olmalıdır.
  • DUT, her test için doğru sahneye yönlendirilir. (ITS test komut dosyası, yeni bir sahnede testlere başlamadan önce sahne kurulumunu değiştirme istemleri sağlar.)
  • Test edilen cihaz, USB üzerinden ana makineye bağlı olmalıdır.
  • Test çalıştırılırken test edilen cihaz hareket etmez.
  • Sahne, sabit ve dalgalanmayan bir ışık kaynağıyla aydınlatılıyor. (Titreşime neden olduğundan floresan ışık kullanmayın.)

ITS test komut dosyası, kullanıcıdan yeni bir sahnede testlere başlamadan önce sahne kurulumunu değiştirmesini isteyen bir istem görüntüler.

Telefonun yönü, kameranın döndürme işlemi yapmadan fotoğraf çekecek şekilde ayarlanmalıdır. Bunu kontrol etmenin en kolay yolu, sahne 2'deki yüz sahnelerini kullanmaktır. Çoğu telefonda, arka kamera için telefon saat yönünün tersine, ön kamera için ise saat yönünde döndürülerek yatay yönde tutulur.

Yapılandırma dosyaları

Mobly test yatağını tanımlamak için Mobly çerçevesini kullanarak bir config.yml yapılandırma dosyası oluşturmanız gerekir. Aşağıda farklı kullanım alanlarına ilişkin örnekler verilmiştir.

Tablete dayalı sahneler için config.yml dosyası

Aşağıda, tablet tabanlı sahneler için bir config.yml dosyası örneği verilmiştir. Tablet tabanlı testlerde, test yatağı adında TABLET anahtar kelimesi bulunmalıdır. Başlatma sırasında Mobly test çalıştırıcısı, dosyadaki parametreleri başlatır ve bunları tek tek testlere iletir.

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. Kameraları veya sahneleri belirten komut satırı değerleri yoksa test, config.yml dosya değerleriyle çalıştırılır. 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ılar. Örneğin:

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=0 scenes=scene_tele
python tools/run_all_tests.py camera=0.4 scenes=4,scene6_tele

chart_scaling parametresi

Android 17 ve sonraki sürümlerde, chart_scaling parametresi TEST_BED_TABLET_SCENES için config.yml'ye dahil edilir. Bu parametre, daha geniş bir görüş alanına (FoV) sahip telefoto kamera cihazlarında grafik ölçeklendirme sorunlarını gidererek sahne kırpılmasını önler ve test sırasında cihazın doğru şekilde odaklanmasını sağlar.

chart_scaling için desteklenen değerler 1, 0.33, 0.5 veya 0.67'dir. Varsayılan değer None'tır. Bu yaklaşım, cihazların kendi özel gereksinimlerine göre uyarlanmış optimum ölçeklendirme faktörünü kullanmasına olanak tanır ve tüm cihazlarda işlevsel testlerin yapılmasını sağlar.

chart_scaling, None olarak ayarlanırsa testler, chart_scaling_logic kullanılarak ölçeklendirme faktörünü otomatik olarak belirler. Aksi takdirde, config.yml içinde belirtilen değer kullanılır veya ölçeklendirme kullanılamıyorsa hata işaretlenir.

Aşağıda, chart_scaling parametresini içeren bir örnek config.yml verilmiştir.

TestBeds:
  -   Name: TEST_BED_TABLET_SCENES  # Need 'tablet' in name for tablet scenes
    # Use TEST_BED_MANUAL for manual testing and remove below lines:
    #     - serial <tablet_id>
    #       label: tablet
    # Test configuration for scenes[0:4, 6]
    Controllers:
        AndroidDevice:
          -   serial: <device-id>  # quotes needed if serial id entirely numeric
            label: dut
          -   serial: <tablet-id>  # quotes needed if serial id entirely numeric
            label: tablet
    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"  # quotes needed
      lighting_cntl: <controller-type>  # can be arduino or "None"
      lighting_ch: <controller-channel>
      camera: <camera-id>
      scene: <scene-name>  # if <scene-name> runs all scenes
      foldable_device: "False"  # "True" if testing foldable device
      chart_scaling: "None"  # use the values available for scene to be tested
      resultstore_upload: "False"  # "True" if results should be uploaded to ResultStore

Kamera ITS tablosu ölçeklendirme özelliklerinin etkinleştirilmesi için test tarafında ayarlamalar yapılması gerekir. Kullandığınız bir test bunu desteklemiyorsa hata bildiriminde bulunun.

Aşağıda, chart_scaling parametresinin kullanıldığı örnek bir test tarafı değişikliği verilmiştir.

# load chart for scene
      its_session_utils.load_scene(
          cam, props, self.scene, self.tablet, self.chart_distance,
          chart_scaling=self.chart_scaling)

sensor_fusion scene config.yml dosyası

Aşağıda, config_yml testleri için bir sensor_fusion dosyası örneği verilmiştir. sensor_fusion testi için SENSOR_FUSION anahtar kelimesi test yatağı adında olmalıdır. Android 13 ve sonraki sürümlerde, önizleme ve video sabitleme testleri nedeniyle yalnızca sensör füzyonu için Arduino denetleyicisi desteklenir. Android 12, Arduino ve Canakit kontrol cihazları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

sensor_fusion testlerini sensör füzyon kutusu ile çalıştırmak için şunu çalıştırın:

python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
python tools/run_all_tests.py scenes=scene_flash,feature_combination
python tools/run_all_tests.py scenes=checkerboard camera=1

Birden çok test yatağı config.yml dosyası

Aşağıda, birden fazla test yatağı (bir tablet test yatağı ve bir sensor_fusion test yatağı) içeren bir config.yml dosyası örneği verilmiştir. Doğru test yatağı, test edilen sahnelerle belirlenir.

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

config.yml dosyasını manuel olarak test etme

Aşağıda, manuel test için bir config.yml dosyası örneği verilmiştir. Android 14 ve sonraki sürümlerde, scene_extensions testleri hariç tüm testler için manuel test desteklenir. Manuel test için test yatağı adında MANUAL anahtar kelimesi bulunmalıdır. Ayrıca, AndroidDevice bölümü tabletteki seri veya etiket bölümünü içeremez.

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

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

Gen2 rig testing config.yml dosyası

Aşağıda, bir config.yml test yatağına ait TEST_BED_GEN2 dosyası örneği verilmiştir. Bu test yatağı, scene_ip testleri için kullanılır. Bu testlerde, Gen2 test düzeneği kullanılır. Aşağıdaki örnekte, 2. nesil ekipman kullanılabildiğinde ve scene_ip testleri atlanmadığında test yatağı parametreleri gösterilmektedir.

Testbeds
  - Name: TEST_BED_GEN2
    # Test configuration for scene_ip/test_default_jca_ip.py
    Controllers:
        AndroidDevice:
          - serial: <device-id>  # quotes needed if serial id entirely numeric
            label: dut
    TestParams:
      debug_mode: "False"  # quotes are needed here
      chart_distance: 30
      rotator_cntl: gen2_rotator   # gen2 rig specific. "None" if gen2 rig not available
      rotator_ch: 0
      camera: <camera-id>
      foldable_device: "False"  # "True" if testing foldable device
      tablet_device: "False"  # "True" if testing tablet device
      lighting_cntl: gen2_lights  # gen2 rig specific. "None" if gen2 rig not available
      lighting_ch: 1
      scene: scene_ip

Aşağıdaki örnekte, 2. nesil test düzeneği kullanılamadığında ve scene_ip testleri atlandığında test yatağı parametreleri gösterilmektedir.

Testbeds
  - Name: TEST_BED_GEN2
    # Test configuration for scene_ip/test_default_jca_ip.py
    Controllers:
        AndroidDevice:
          - serial: <device-id>  # quotes needed if serial id entirely numeric
            label: dut
    TestParams:
      debug_mode: "False"  # quotes are needed here
      chart_distance: 30
      rotator_cntl: "None"   # gen2 rig specific. "None" if gen2 rig not available
      rotator_ch: <controller-channel>
      camera: <camera-id>
      foldable_device: "False"  # "True" if testing foldable device
      tablet_device: "False"  # "True" if testing tablet device
      lighting_cntl: "None"  # gen2 rig specific. "None" if gen2 rig not available
      lighting_ch: <controller-channel>
      scene: scene_ip

scene_ip testini çalıştırmak için aşağıdaki komutlardan birini kullanın:

python tests/scene_ip/test_default_jca_ip.py -c config.yml
python tools/run_all_tests.py camera=<camera-id> scenes=scene_ip

ITS testlerini çalıştırma

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

Testleri çağırma

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

  1. CTS Verifier uygulamasını açın. Testler menüsünde Camera ITS Test'i (Kamera ITS Testi) seçin. Android 17 ve sonraki sürümlerde sensor_fusion ve feature_combination testleri, Camera ITS Sensor Fusion Rig Test adlı ek bir etkinlikte yer alır.

  2. ITS testlerini ana makinede CameraITS/ dizininden çalıştırın. Örneğin, ön ve arka kameraları olan bir cihaz için aşağıdaki komutu çalıştırın:

    python tools/run_all_tests.py

    Komut dosyası, config.yml dosyasına göre kameralar ve test sahneleri arasında geçiş yapar. Hata ayıklama kurulumları için en hızlı geri dönüşü elde etmek amacıyla scene2 sahnelerinden birini tek bir testle çalıştırmanızı öneririz.

    Manuel test için, her sahnede ITS testleri grubunu çalıştırmaya başlamadan önce komut dosyası mevcut sahnenin fotoğrafını çeker, JPEG olarak kaydeder, JPEG'in yolunu konsola yazdırır ve kullanıcıdan görüntünün iyi olup olmadığını onaylamasını ister. Bu yakalama ve onaylama akışı, kullanıcı görüntünün iyi olduğunu onaylayana kadar döngüde kalır. 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ının her çalıştırılmasında, her ITS testi için PASS, FAIL, FAIL* veya SKIP gösteren bir günlük yazdırılır. FAIL*, testin başarısız olduğunu gösterir ancak test henüz zorunlu olmadığından CtsVerifier'a PASS olarak bildirilir. SKIP, cihaz test edilen temel özelliği duyurmadığı için testin başarılı olduğunu gösterir. Örneğin, bir cihaz DNG'yi desteklediği kamera arayüzleri üzerinden reklam yayınlamıyorsa DNG dosyası yakalamayla ilgili testler atlanır ve PASS olarak sayılır.

  3. Testlerin test koşullarını karşıladığını onaylamak için yeşil onay işareti düğmesine dokunun. CTS Verifier test menüsündeki Camera ITS Test girişi yeşil renge döner ve telefonun Camera ITS'yi geçtiğini gösterir.

Paralel DUT testi

Android 14 veya sonraki sürümlerin yüklü olduğu cihazlarda eşzamanlı DUT testi desteklenir. Bu sayede, genel test sürecini hızlandırmak için birden fazla test düzeneğiyle birlikte DUT'ları paralel olarak test edebilirsiniz. Örneğin, paralel test sayesinde aynı anda bir ekipmanda kamera 0'ı, başka bir ekipmanda ise kamera 1'i test edebilirsiniz. Android 17 ve sonraki sürümlerde, Camera ITS testleri iki etkinliğe ayrıldığından bir DUT'ta sensor_fusion ve feature_combination testlerini, başka bir DUT'ta ise diğer testleri paralel olarak çalıştırabilirsiniz. Paralel test oturumlarıyla ilgili tüm testler, referans DUT'taki CTS Verifier oturumunda toplanır. Manuel aydınlatma kontrolü paralel testle desteklenmediğinden Arduino aydınlatma kontrolü ile paralel test yapmanız gerekir. Aynı Arduino denetleyicisindeki farklı bir kanalın her bir düzeneğin aydınlatmasını kontrol ettiğinden emin olun.

Aşağıda, paralel olarak çalıştırılacak üç test yatağını tanımlayan örnek bir config.yml dosyası verilmiştir.

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

Toplu test sonuçlarını gönderme

Android 17 ve sonraki sürümlerde, derleme onayı için toplu Kamera ITS test sonuçları gönderebilirsiniz. CTS Verifier, birden fazla cihazda aynı anda birden fazla sahneyi test etmenize ve birden fazla CTS Verifier raporundaki (farklı test çalıştırmalarından veya cihazlardan) test sonuçlarını tek bir birleştirilmiş gönderimde toplamanıza olanak tanır.

Gönderme süreci

Derleme onayı için toplu Kamera ITS sonuçlarını göndermek üzere aşağıdaki adımları uygulayın:

  1. Cihazları hazırlayın: Test edilecek iki veya üç cihaz (DUT) toplayın. Bu cihazların hepsinin derleme parmak izi aynı olmalıdır.
  2. CTS Verifier'ı yükleyin: Sağlanan derleme gezgininden edinilebilen en yeni CTS Verifier APK'sını yükleyin.
  3. Testleri paralel olarak yürütme:

    1. DUT'ları ayrı düzeneklere monte edin.
    2. Her cihazda eşzamanlı olarak farklı Kamera ITS sahnelerini çalıştırın.
    3. Rapor toplama: Her çalıştırmadan sonra CTS Verifier raporunu alın. Bu kapsamda, sahnelerin başarısız olduğu raporlar da yer alır. Sonraki çalıştırmalarda yalnızca başarısız olan sahneleri yeniden çalıştırın.
  4. Rapor gönderme: Tüm cihazlardan toplanan birden fazla CTS Verifier raporunu yükleyin.

  5. Sonuçları inceleyin: Raporlar yüklendikten sonra, toplu sonuçları inceleyin:

    • Test Analizi bölümünde, yürütülen tüm sahnelerin tam listesi gösterilir.
    • Yürütülmeyen veya başarısız olan sahneler Başarısız bölümünde listelenir.

      result-aggregation-image-1

      Şekil 1. Çekilmeyen veya başarısız olan sahnelerin dokümanları.

    • Geçiş sahneleri, Toplu Geçiş bölümünde listelenir.

      result-aggregation-image-2

      Şekil 2. Toplu geçiş olarak kategorize edilen sahneler

Derleme onay durumu

Gerekli tüm sahneler, toplu raporlarda başarıyla tamamlandıktan sonra derleme onayı verilir.

DNG gürültü modeli

RAW veya DNG yakalama özelliğini tanıtan cihazlar, her bir RAW çekimin yakalama sonucu meta verilerinde gürültü modeli sağlamalıdır. Bu gürültü modeli, desteklediğini iddia eden cihazdaki her kamera (ör. ön ve arka kameralar) için kamera HAL'ına yerleştirilmelidir.

Gürültü modeli uygulama

Gürültü modeli uygulamak için aşağıdaki adımları uygulayarak gürültü modeli oluşturun ve modeli kamera HAL'ına yerleştirin.

  1. Her kamera için bir gürültü modeli oluşturmak üzere tools dizinindeki dng_noise_model.py komut dosyasını çalıştırın. Bu işlem, bir C kodu snippet'i oluşturur. Kamerayı ayarlama ve ortamı yakalama hakkında daha fazla bilgi için DngNoiseModel.pdf dizinindeki tools belgesine bakın.

  2. Cihaz için gürültü modelini uygulamak üzere C kodu snippet'ini kesip kamera HAL'ına yapıştırın.

Gürültü modeli doğrulama

tests/scene1_1/test_dng_noise_model.py Otomatik ITS testi, kamera verilerinde sağlanan çekim pozlaması ve kazanç için gürültü değerlerinin doğru olduğunu doğrulayarak gürültü modelini doğrular.

Testleri az farkla geçme (PASS* test durumu)

Android 17 ve sonraki sürümlerde sınırlı geçiş (PASS*), bir testin geçtiğini ancak performans metriklerinin önceden tanımlanmış geçiş eşiğine çok yakın olduğunu gösterir. Test teknik olarak geçme ölçütlerini karşılıyor olsa da başarısızlık sınırına yakınlık, daha ayrıntılı bir inceleme yapılması gerektiğini gösteriyor.

Marjinal geçişin avantajları

PASS* durumu çeşitli avantajlar sunar:

  • Erken uyarı sistemi: Başarısız olmak üzere olan testleri belirleyerek ekiplerin sorunları tamamen başarısızlığa yol açmadan ele almasına olanak tanır.

  • Proaktif optimizasyon: Ekipleri, kabul edilebilir aralığın alt ucunda performans gösteren testleri ve kodları optimize etmeye teşvik ederek genel kararlılığı artırır.

  • Kaliteyi artırma: Küçük kod değişiklikleriyle gelecekte gerilemeye yatkın olabilecek alanları işaretleyerek daha yüksek bir kalite standardı korunmasına yardımcı olur.

  • Hata ayıklama süresini azaltma: PASS* testleri erken yakalayarak gelecekteki tam hatalarda hata ayıklamak için gereken zaman ve çaba önemli ölçüde azaltılabilir.

PASS* ayrıntıları

PASS* durumu şunları içerir:

  • Eşik tanımlama: Kamera ITS'deki her ilgili test için belirli geçme eşikleri tanımlanır.

  • Otomatik algılama: Test otomasyon sistemi, tanımlanan eşiklere göre testleri PASS* olarak algılar ve kategorilere ayırır.

  • Uyarı mekanizması: Ekipler, PASS* olarak işaretlenen tüm testler için otomatik uyarılar alır. Bu uyarılar, ekipleri belirli testi ve metriklerini incelemeye yönlendirir.

  • Raporlama: PASS* raporunda ItsTestSummary testlerinde olduğu gibi, not_yet_mandated testlerinde Fail* ile benzer şekilde, test raporlarında ve kontrol panellerinde daha iyi görünürlük için sınırlı geçiş durumları net bir şekilde belirtilir. Daha fazla kafa karışıklığına yol açmamak için test, belirlenen eşiklerin içinde kalmaya devam ettiğinden yeşil durumunu korur. PASS* durumu yalnızca bir test sınıfı için geçerlidir, sahnenin tamamı için geçerli değildir. Örneğin, test_jitter ve test_metadata PASS* olsa bile Scene_0 PASS olarak kabul edilebilir.

  • İzleme: Performans verileri, bir cihazda az farkla geçen testlerde toplanır. Bu sayede, testler PASS durumuna geçerse OEM'lerin gelecekte yapacağı kamera iyileştirmeleri izlenebilir.

Aşağıda, PASS* ile ilgili test sonuçlarının bir örneği verilmiştir:

INFO:root:Reporting camera 1 ITS results to CtsVerifier
INFO:root:ITS results to CtsVerifier: {'scene0': {'result': 'PASS', 'TEST_STATUS': [{'test': 'test_jitter', 'status': 'PASS*'}, {'test': 'test_metadata', **'status': 'PASS*'**}, {'test': 'test_request_capture_match', 'status': 'PASS'}, {'test': 'test_sensor_events', 'status': 'PASS'}, {'test': 'test_solid_color_test_pattern', 'status': 'PASS'}, {'test': 'test_test_patterns', 'status': 'SKIP'}, {'test': 'test_tonemap_curve', 'status': 'SKIP'}, {'test': 'test_unified_timestamps', 'status': 'PASS'}, {'test': 'test_vibration_restriction', 'status': 'PASS'}], 'mpc_metrics': [], 'performance_metrics': [], 'feature_query_proto': [], 'feature_query_proto_path': [], 'summary': '/tmp/CameraITS_zojk4sdr/cam_id_1/scene0/scene_test_summary.txt', 'start': 1754330630345, 'end': 1754330764534}, 'scene1_1': {'result': 'NOT_EXECUTED'}, 'scene1_2': {'result': 'NOT_EXECUTED'}, 'scene1_3': {'result': 'NOT_EXECUTED'}, 'scene2_a': {'result': 'NOT_EXECUTED'}, 'scene2_b': {'result': 'NOT_EXECUTED'}, 'scene2_c': {'result': 'NOT_EXECUTED'}, 'scene2_d': {'result': 'NOT_EXECUTED'}, 'scene2_e': {'result': 'NOT_EXECUTED'}, 'scene2_f': {'result': 'NOT_EXECUTED'}, 'scene2_g': {'result': 'NOT_EXECUTED'}, 'scene3': {'result': 'NOT_EXECUTED'}, 'scene4': {'result': 'NOT_EXECUTED'}, 'scene6': {'result': 'NOT_EXECUTED'}, 'scene7': {'result': 'NOT_EXECUTED'}, 'scene8': {'result': 'NOT_EXECUTED'}, 'scene9': {'result': 'NOT_EXECUTED'}, 'scene_extensions/scene_hdr': {'result': 'NOT_EXECUTED'}, 'scene_extensions/scene_low_light': {'result': 'NOT_EXECUTED'}, 'scene_tele/scene6_tele': {'result': 'NOT_EXECUTED'}, 'scene_tele/scene7_tele': {'result': 'NOT_EXECUTED'}, 'scene_video': {'result': 'NOT_EXECUTED'}, 'scene5': {'result': 'NOT_EXECUTED'}, 'sensor_fusion': {'result': 'NOT_EXECUTED'}, 'feature_combination': {'result': 'NOT_EXECUTED'}, 'scene_flash': {'result': 'NOT_EXECUTED'}, 'scene_ip': {'result': 'NOT_EXECUTED'}}

İş ortaklarının şunları yapması önerilir:

  • PASS* uyarılarını izleme
  • PASS* testlerinin temel nedenini araştırma
  • PASS* olarak tanımlanan testleri ve kodları proaktif bir şekilde optimize edin.

PASS* durumu, Kamera ITS testinin sağlamlığını ve güvenilirliğini artırmayı amaçlar. Bu sayede kararlı ve yüksek kaliteli bir ürün elde edilir.