相機 ITS 功能

Android Camera Image Test Suite (ITS) 是 Android Compatibility Test Suite (CTS) 驗證器的一部分,並提供驗證圖片內容的測試。CTS Verifier 可透過 Camera ITS-in-a-box 支援 ITS 自動化測試;手動測試支援範圍涵蓋所有 Android 裝置板型規格。

ITS-in-a-box 包含下列優點:

  • 自動化:測試期間不需要人為介入。
  • 簡易疑難排解程序。測試環境的一致性可減少設定錯誤,並提高可重現性。
  • 效率。可針對個別相機/場景重試,可提高測試執行效率。

開始使用

這項服務包含一個塑膠盒,內含由電腦輔助設計 (CAD) 圖紙以雷射切割而成的圖表平板,以及測試中的裝置 (DUT)。下表說明不同 ITS-in-a-box 架構的功能和規格。

支架用 圖表距離 被測物相機的 FoV 範圍 (約) 功能
模組化基本設定 22 公分 16° - 120°
  • 較小的足跡
  • 前方開口較大,可進行多相機系統測試,且不會遮住次要相機
  • 可旋轉 90°
  • 模組基本 rig 和電話擴充 rig 22 公分 - 100 公分* 10° - 120°
  • 前方有大型光圈凹口
  • 支援測試最小焦距較長的相機 (大多數遠攝相機)
  • WFoV ITS-in-a-box 22 公分 60° - 120°
  • 大占地空間可讓 DUT 安裝在多個位置
  • 支援平板電腦等大型 DUT
  • 立即可用的 RFoV ITS 31 公分 60° - 90°
  • 圖表平板
  • 內部照明系統
  • *可根據不同的圖表距離調整遠距延伸裝置長度。

    如要開始使用 Camera ITS-in-a-box,請按照下列步驟操作:

    1. 購買或建構模組化WFoVRFoV ITS-in-a-box。
    2. 使用相機 ITS 軟體設定平板電腦
    3. 執行測試
    4. 從 DUT 取得結果

    設定平板電腦

    本節將逐步說明如何設定平板電腦,以便搭配位於 CameraITS 目錄中的 Camera ITS 測試使用。以下操作說明以 Pixel C 做為範例平板電腦。如要瞭解平板電腦的相關規定和建議,請參閱「平板電腦需求條件」一文。

    注意:Camera ITS Python 指令碼會自動在平板電腦上設定下列選項:
    設定 > 螢幕 > 休眠 > 閒置 30 分鐘後
    自動亮度 > 關閉

    1. 為平板電腦充電並開機。如果系統提示您設定帳戶,請略過 (Camera ITS 不需要與平板電腦配對任何帳戶)。
    2. 將平板電腦更新至 Android 7.0 以上版本。Android 6.x 以下版本不支援相機 ITS。
    3. 啟用開發人員模式
    4. 返回「設定」並選取「開發人員選項」
      啟用選項
      • 開啟
      • 螢幕不休眠
      • USB 偵錯 (可讓主機在偵錯模式下執行平板電腦。當您首次將平板電腦連線至主機時,平板電腦會顯示「允許 USB 偵錯嗎?」提示。如果平板電腦未顯示偵錯提示,請先中斷連線,然後重新連線。)
      停用選項
      • 自動系統更新
      • 透過 USB 驗證應用程式
    5. 執行 $ adb devices 來列出可用裝置,藉此判斷 DUT 和圖表 ID。如要確認 device_idchart_id,請接上及拔除裝置,然後觀察連線及中斷連線的裝置。
    6. 執行三次測試,隱藏可在平板電腦螢幕上遮蓋圖表的提示和使用者提示。
      1. 將平板電腦正面朝上放在桌上 (請勿將平板電腦貼在盒子的背板上)。
      2. 執行下列指令:
        python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
        
        第 2 和第 3 個場景需要平板電腦顯示圖片,因此平板電腦會顯示「允許 Google 雲端硬碟存取裝置上的相片、媒體和檔案嗎?」。請按下「Allow」清除這個提示,並避免日後出現提示。
      3. 再次執行指令。平板電腦會顯示「保留此檔案的副本嗎?」提示,並建議使用 Google 雲端硬碟。如要清除這則提示 (並避免日後出現提示),請按下「雲端硬碟」圖示,然後點選「取消」,即可將檔案上傳到雲端硬碟。
      4. 最後,請執行 tools/run_all_tests.py,並確認指令碼循環切換不同場景時,場景會自動變更。雖然大部分的測試都會失敗 (因為相機並未對準圖表),但您可以確認平板電腦是否正確地循環播放場景,且不會在畫面上顯示任何提示或其他彈出式視窗。

    執行測試

    執行 ITS-in-a-box 前,請確認測試設定包含下列硬體和軟體:

    • 一 (1) 開箱 ITS
    • 一 (1) 部高解析度 10 吋平板電腦,用於顯示場景,序號:5811000011
    • 已安裝 CTS Verifier 7.0_8+ 以上版本應用程式的 DUT 一 (1) 部。示例 DUT:
      • 一 (1) 部 Pixel NOF26W 用於後置鏡頭(0) 測試,序號:FA6BM0305016。如要安裝 CTS 驗證器應用程式,請解壓縮 android-cts-verifier.zip,然後執行
        adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
        

    執行平板電腦場景

    如要在後置鏡頭上執行 0 到 4、6 和 scene_change 場景,請按照下列步驟操作:

    cd android-cts-verifier/CameraITS
    . build/envsetup.sh
    python tools/run_all_tests.py camera=0
    

    例子:

    相機 0 序號:FA6BM0305016
    圖 1. 相機 0 S/N:FA6BM0305016

    重試場景

    你可以為單一攝影機重試場景:

    • 如要重試單一攝影機的場景,請按照下列步驟操作:
      python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
      

    執行場景 5

    場景 5 需要特殊設定和特定照明 (詳情請參閱 CTS Verifier 中的 CameraITS.pdf,您可以在 Compatibility Test Suite Downloads 下載)。您必須另外執行場景 5 (在方塊外)。

    攝影機場景 5
    圖 2. 相機場景 5

    如要在單一裝置上執行前置與後置鏡頭的畫面 5,請按照下列步驟操作:

    python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
    python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5
    

    取得結果

    您可以在測試期間查看結果,並將已完成的結果儲存為報表。

    • 查看結果。如何將相機 ITS 結果儲存為報表:
      1. 按下「通過」並儲存報表。
        攝影機 ITS 報表
        圖 3. 相機 ITS 報告
      2. 從裝置提取報告:
        adb -s FA6BM0305016 pull /sdcard/verifierReports
        
      3. 解壓縮報表檔案並查看 test_result.xml
        相機 ITS 報告
        圖 4. 相機 ITS 報告

    平板電腦需求

    針對 Android 15 以上版本,用於 ITS 圖表顯示的平板電腦必須列於下列平板電腦許可清單。如需支援低光源場景測試的平板電腦清單,請參閱「支援低光源場景的平板電腦」。如為 Android 14 以下版本,請參閱「Android 14 以下版本的平板電腦需求」。

    系統會根據下列條件選擇許可清單中的平板電腦:

    • 顯示大小約為 10 吋,螢幕解析度大於 1920 x 1200 像素。
    • 無論螢幕變暗會造成任何測量寬度調節 (PWM) 而導致的閃爍情形,均不可視為此情形。
    • 能夠擷取 ITS 測試傳送的 ADB 指令,以及顯示具有指示亮度的圖表圖片。

    brightness 值必須根據平板電腦型號在 config.yml 中設定。如要判斷平板電腦型號是否與許可清單中的裝置名稱相符,請執行 adb shell getprop | grep 'ro.product.device' ADB 指令,列印 ro.product.device 值。

    裝置 螢幕尺寸
    (英寸)
    顯示大小
    (像素)
    平板電腦尺寸
    (英寸)
    螢幕
    亮度
    裝置名稱
    (ro.product
    .device)
    平板電腦 OS
    版本
    Google
    Pixel C
    10.2 2560 x 1800 9.53 x 7.05 x 0.28 96 Android 6 以上版本
    榮耀
    學名:Pad 8
    11 2000 x 1200 10.18 x 6.76 x 0.29 192 HNHEY-Q Android 12
    Huawei
    MediaPad m5
    10.8 2560 x 1600 10.18 x 6.76 x 0.29 192 HWCMR09 Android 8 以上版本
    Lenovo
    Tab M10 Plus
    10.3 1920 x 1200 9.61 x 6.03 x 0.32 192 X606F Android 9 以上版本
    Lenovo
    Tab P11
    11 2000 x 1200 10.17 x 6.42 x 0.30 192 J606F Android 11 以上版本
    Lenovo
    Tab P11 Gen2
    11.5 2000 x 1200 10.59 x 6.67 x 0.29 192 TB350FU Android 13 以上版本
    Nokia
    T21
    10.4 2000 x 1200 9.74 x 6.19 x 0.30 192 AGTA Android 12 以上版本
    Samsung
    Galaxy Tab A7
    10.4 2000 x 1200 9.75 x 6.2 x 0.28 192 gta4lwifi Android 10 以上版本
    Samsung
    Galaxy Tab A8
    10.5 1920 x 1200 9.72 x 6.73 x 0.27 192 gta8wifi Android 11 以上版本
    Samsung
    Galaxy Tab A9+
    11 1920 x 1200 10.12 x 6.64 x 0.27 192 gta9pwifi Android 13 以上版本
    Vivo
    Pad2
    12.1 2800 x 1968 10.47 x 7.54 x 0.26 192 DPD2221 Android 13 以上版本
    小米
    Pad 5
    11 2560 x 1600 10.18 x 6.76 x 0.29 192 nabu Android 13 以上版本
    Xiaomi
    Redmi
    Pad
    10.61 美元 2000 x 1200 9.86 x 6.22 x 0.28 192 yunluo Android 14 以上版本
    Xiaomi
    Redmi
    Pad SE
    11 2560 x 1600 10.06 x 6.58 x 0.29 192 xun Android 13 以上版本

    支援低光源環境的平板電腦

    下表列出支援低光源場景測試的平板電腦。這些平板電腦可達到低光源場景所需的亮度,讓受測設備正確曝光圖表。
    裝置 裝置名稱 (ro.product.device) 平板電腦 OS 版本
    華為
    MediaPad m5
    HWCMR09 Android 8 以上版本
    Samsung Galaxy Tab A8 gta8wifi Android 11 以上版本
    Samsung Galaxy Tab A9+ gta9pwifi Android 13 以上版本
    Xiaomi Pad 5 nabu Android 13 以上版本
    Xiaomi
    Redmi
    Pad SE
    xun Android 13 以上版本

    Android 14 以下版本適用的平板電腦需求

    平板電腦的螢幕解析度必須為 10 英寸,且螢幕解析度必須大於 1920 x 1200 像素。平板電腦不得使用脈衝寬度調變 (PWM) 來設定亮度。brightness 值必須根據平板電腦型號在 config.yml 中設定。下表列出適用於 ITS 測試的建議平板電腦,以及平板電腦適用的 DUT Android 版本。

    裝置 螢幕尺寸
    (英寸)
    顯示大小
    (像素)
    平板電腦尺寸
    (英寸)
    螢幕
    亮度
    顯示
    位元
    支援的
    DUT 作業系統
    支援的
    平板電腦作業系統
    Samsung
    Galaxy Tab A8
    10.5 1920 x 1200 9.72 x 6.37 x 0.27 192 8 Android 13 以上版本 Android 11 以上版本
    Xiaomi
    Pad 5
    11 2560 x 1600 10.03 x 6.55 x 0.27 1024 11 Android 12 以上版本 僅限 Android 11
    Lenovo
    Tab M10 Plus
    10.3 1920 x 1200 9.61 x 6.03 x 0.32 192 8 Android 12 以上版本 Android 9 以上版本
    Samsung
    Galaxy Tab A7
    10.4 2000 x 1200 9.75 x 6.2 x 0.28 192 8 Android 12 以上版本 Android 10 以上版本
    Chuwi
    Hi9 Air 10.1
    10.1 2560 x 1600 9.52 x 6.77 x 0.31 192 8 Android 7 以上版本 Android 8 以上版本
    Asus
    ZenPad 3
    9.7 2048 x 1536 9.47 x 6.44 x 0.28 192 8 Android 7 以上版本 Android 6 以上版本
    Huawei
    MediaPad m5
    10.8 2560 x 1600 10.18 x 6.76 x 0.29 192 8 Android 7 以上版本 Android 8 以上版本
    Google
    Pixel C
    10.2 2560 x 1800 9.53 x 7.05 x 0.28 96 8 Android 7 以上版本 Android 6 以上版本
    Sony
    Xperia Z4
    10.1 2560 x 1600 10 x 6.57 x 0.24 192 8 Android 7 以上版本 Android 5 以上版本

    常見問題

    問題 1:如何判斷裝置需要哪種測試裝置?

    RFoV ITS-in-a-box 修訂版 1 會測試 RFoV 攝影機,以便測試 CameraITS/tests 目錄中的平板電腦場景。RFoV 的定義為 60° < FoV < 90°。如果攝影機的 FoV 較大,可能會在圖片中顯示燈光,或是圖表涵蓋的 FoV 範圍太小,進而影響測試結果。

    WFoV ITS-in-a-box 修訂版 2 會針對 CameraITS/tests 目錄中的平板電腦情境測試,測試 WFoV 攝影機。WFoV 的定義為 FoV >= 90°。修訂版本 2 測試擴充項目與修訂版本 1 相同,但更大。修訂版 2 測試架可在 Android 9 以上版本測試 RFoV 和 WFoV 相機。由於佔用空間較大 如果 DUT 是平板電腦

    模組化基礎攝影機架 會測試 CameraITS/tests 目錄中平板電腦場景測試的 WFoV 攝影機。WFoV 的定義為 FoV >= 90°。模組化基礎攝影機架可同時測試搭載 Android 9 以上版本的裝置的 RFoV 和 WFoV 攝影機。它也支援遠距延伸裝置,可用於測試遠距攝影機,並提供更長的最小焦距。模組式底層在功能上與 WFoV ITS 套裝內容相同,但較小。

    感應器融合盒會測試相機/陀螺儀時間偏移,以及多相機系統的畫面同步,並在 scenes=sensor_fusion 中進行測試。REALTIME 功能旗標需要相機/陀螺儀時間偏移值小於 1 毫秒。

    多鏡頭裝置可透過單一測試架進行靜態 ITS 測試,如果相機具有 REALTIME 功能旗標,則可使用感應器融合測試架。

    下表列出一些設定範例。

    範例 相機鏡頭 即時? 建議的 rig 附註
    1 75° Rev 1 或 2 Android 7.0 以上版本
    2 75° 模組化底座、Rev 1 或 2 和感應器融合 Android 9 以上版本
    3 75° + 95° Rev 2 + 感應器融合 Android 9 以上版本
    4 75° + 95° + 20° 模組化底座、遠距延伸和感應器融合 Android 9 以上版本
    5 75° + 95° 平板電腦 Rev 2 Android 9 以上版本

    問題 2:如何指定使用中的測試硬體?

    如要指定正確的測試裝置,請確認圖表距離參數正確無誤。rev1 測試架 (RFoV) 的圖表距離為 31 公分,rev2 測試架 (WFoV) 的圖表距離為 22 公分。根據預設,圖表距離設為 31 公分。

    Android 10 到 Android 11

    如要透過 Android 10 至 11 找出正確的測試裝置,請在指令列中新增 dist 標記。dist 的預設值為 31。執行下列指令,變更 chart_distance 參數。
    python tools/run_all_tests.py ... chart=# dist=22
    

    Android 12 以上版本

    如要在 Android 12 以上版本中找出正確的測試裝置,您可以編輯 config.yml 檔案來變更 chart_distance 參數。
    edit config.yml
    chart_distance: 31.0 → chart_distance: 22.0
    

    問:如何控制平板電腦亮度?

    平板電腦的亮度預設為 96,

    如要在搭載 Android 7.0 至 Android 9 的平板電腦上變更亮度,請執行以下操作:

    edit tools/wake_up_screen.py
    DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
    

    如要變更搭載 Android 10 至 11 的平板電腦亮度,您可以在指令列中新增 brightness 旗標來變更值:

    python tools/run_all_tests.py device=# camera=# chart=# brightness=192
    

    如要在搭載 Android 12 以上版本的平板電腦上變更亮度,請執行以下操作:

    edit config.yml
    brightness: 96 → brightness: 192
    

    Q4:如何對單一測試進行偵錯?

    您可以為偵錯目的個別執行測試,但除非執行整個場景,否則結果不會回報至 CtsVerifier.apk

    如要在 Android 11 以下版本中執行個別場景:

    1. tools/run_all_tests.py 中新增 scenes 標記,藉此載入場景:
      python tools/run_all_tests.py device=# camera=# chart=# scenes=#
      
    2. 在系統記錄場景已載入 stdout 後,按下 Control+C 即可停止測試。

      如果畫面上已顯示正確的情境,請喚醒螢幕:

      python tools/wake_up_screen.py screen=#
      
    3. 執行個別測試。

      python tests/scene#/test_*.py device=# camera=#

      接著,系統會在本機目錄中產生圖表,並將 stdoutstderr 列印到畫面上。

      如要取得更多偵錯資訊,請在指令碼中加入 print 陳述式。如要增加測試輸出內容以便偵錯,請新增 debug=True 標記。

      python tests/scene#/test_*.py device=# camera=# debug=True

    執行 tools/run_all_tests.py 時,結果會印到本機畫面,圖片會儲存在本機目錄中,而非產生的 /tmp/tmp### 目錄。

    如要在 Android 12 以上版本中執行個別場景:

    1. 編輯 config.yml 檔案。

      edit config.yml
      camera: <camera-id> → camera:  0
      scene: <scene-name> → scene: scene1_1
    2. 執行個別測試。

      python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
      

    結果會列印在 /tmp/logs/mobly/TEST_BED_TABLET_SCENES/ 目錄中,並按執行時間排序。

    問題 5:為什麼我需要在整個情境中執行失敗的測試,而不是個別重新執行測試?

    您可以為偵錯目的個別執行測試,但除非執行整個場景,否則結果不會回報至 CtsVerifier.apk

    攝影機 ITS 可確保第三方應用程式具有相容的相機介面。與單元測試類似,每項測試都會強調攝影機的單一規格。為了找出不可靠的行為,這些測試應以群組形式通過整個場景。例如,雖然一項不可靠的測試可能會重新執行整個場景,但要通過多次不可靠的測試,便難以通過。

    舉例來說,假設場景中有 10 項測試,每項測試都有 50% 的機率傳回 PASS,透過個別執行每項測試,操作員很有可能讓攝影機通過攝影機 ITS。不過,如果以場景為單位匯總執行測試,場景僅有 0.1% 的機率通過。

    問 6:如何執行單一場景或重新排序執行場景?

    根據預設,tools/run_all_tests.py 指令碼會依序執行所有場景。不過,您可以個別或依指定順序執行場景,並回報至 CtsVerifier.apk

    如要在 Android 11 以下版本中執行個別場景 (例如場景 2),或依特定順序執行多個場景,請按照下列步驟操作:

    python tools/run_all_tests.py device=# camera=# chart=# scenes=2
    
    python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
    

    如要在 Android 12 以上版本中依特定順序執行個別場景或多個場景,請按照下列步驟操作:

    python tools/run_all_tests.py scenes=2
    
    python tools/run_all_tests.py scenes=3,2
    

    其他參數則是在 config.yml 檔案中設定。

    問題 7:平板電腦設定中的場景 1 測試失敗,但使用紙張圖通過。哪裡出了問題?

    請確認平板電腦和測試環境符合下列規格。

    平板電腦規格

    請確定平板電腦符合下列規格:

    • 螢幕尺寸 (英寸):10 英寸
    • 螢幕尺寸 (像素):大於 1920 x 1200 像素

    詳情請參閱 平板電腦相關規定

    平板電腦亮度

    如果平板電腦螢幕亮度過低,測試可能無法獲得正確結果。

    詳情請參閱「 如何控制平板電腦的亮度?

    盒子照明程度 (需要使用勒克斯計)

    請確認平板電腦開啟時的目標勒克斯值介於 100 到 300 之間。

    如果亮度過高,scene1/test_param_flash_mode.py 會傳回 FAIL。如果光度太低,多項測試就會失敗。

    Q8:如何對感應器融合測試進行偵錯?

    1. 確認你已加入 dialout 群組。

      groups | egrep ‘dialout'
    2. 判斷 Microchip 技術是否已連線至 USB 連接埠,確保感應器融合控制器已連線。

      lsusb
      …
      Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
      …
      
    3. 執行測試多次,並使用下列指令取得測試嘗試次數的分布。

      在 Android 11 以下版本中:

      python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
      

      在 Android 12 以上版本中:

      python tools/run_sensor_fusion_box.py num_runs=10
      

      其他參數會在 config.yml 檔案中設定。

      執行輸出內容位於 sensor_fusion_# 資料夾下建立的 /tmp/tmp### 資料夾中,其中 # 是執行次數。失敗的常見原因包括:

      1. 手機未正確置中。
      2. 圖片中沒有足夠的特徵 (通常是視野範圍或光線問題)。
      3. 傳回的 FAIL 有效,且相機與陀螺儀之間的時間偏移必須修正。

    Q9:回報測試錯誤時,應附上哪些資訊?

    回報測試錯誤時,請加入測試產生的檔案和圖片。

    1. 如果您是透過 tools/run_all_tests.py 執行測試,請將壓縮的 /tmp/ 目錄附加至錯誤。
    2. 如果您單獨執行測試,請將所有螢幕輸出內容和產生的圖片附加至錯誤。

    請一併附上錯誤報告。當問題測試失敗後,請使用下列指令產生錯誤報告,並將產生的 ZIP 檔案附加至錯誤。

    adb -s device_id bugreport
    

    問題 10:如何使用相機距離最短 25 公分的相機進行 sensor_fusion 測試場景?

    如果相機無法對焦在 25 公分的距離,請移除感應器融合框的圖表安裝面板。將圖表放在 DUT 可聚焦的距離,並將 config.yml 中的 chart_distance 變更為 DUT 與圖表之間的測量距離。圖 5 顯示如何在這種情況下測量圖表距離的範例。

    sensor_fusion TELE 測試範例 6
    圖 5. 測量感應器融合測試場景的圖表距離
      edit config.yml
    chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
    

    Q11:如果相機的最小焦距會在 31 公分圖表距離下產生模糊圖像,該如何為該相機執行平板電腦測試場景?

    如果相機無法在 31 公分 (RFoV 測試架的深度) 的距離下拍出足夠清晰的圖像,請將相機安裝在測試架前方,並保持適當距離,讓圖表場景填滿相機的視野範圍 (FoV) 約 60%,以便拍出更清晰的圖像。這個距離可能會小於相機的最低對焦距離。將 chart_distance 放在 config.yml 中,距離為 31 公分。平板電腦上的圖表縮放設定是由相機 FoV 決定,如下表所示:

    相機視野 圖表縮放比例係數
    60 > 視野 > 40 0.67 倍
    40 > 視野 > 25 0.5 倍
    視野角小於 25 0.33 倍

    Q12:使用邏輯多鏡頭 API 時,哪些測試會在哪些相機上執行?

    如果相機使用 REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA,所有支援的 ITS 測試都會在頂層邏輯相機上執行。系統會在實體子相機上執行部分 ITS 測試,這些測試會列於 tools/run_all_tests.py 中的 SUB_CAMERA_TESTS 常數下方。