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:
- DUT'yi USB üzerinden bir ana makineye bağlayın.
- Ana makineye ADB üzerinden DUT erişimi için izin verin.
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.
CTS Verifer uygulamasını açın. Testler menüsünde, Kamera ITS Testi.
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 testlescene2
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çinFAIL*
veyaSKIP
.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ırPASS
olarak.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.
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
dizinindekiDngNoiseModel.pdf
dokümanı.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.