本頁面提供 Camera Image Test Suite (ITS) 的完整測試清單,該套件是 Android 相容性測試套件 (CTS) 驗證工具的一部分。ITS 測試是功能測試,也就是說,它們不會評估影像品質,而是檢查所有宣傳的相機功能是否正常運作。這份文件可讓開發人員和測試人員瞭解個別測試的功能,以及如何偵錯測試失敗情形。
Camera ITS 會根據必要的相機屬性、API 級別和媒體效能類別 (MPC) 級別,進行測試。針對 API 級別,ITS 會使用 ro.product.first_api_level
來控管在特定 API 級別中新增的測試,以便測試較低 API 級別的功能是否會帶來負面使用者體驗。ITS 會使用 ro.vendor.api_level
為特定 API 層級中新增的功能設定測試門檻,這些功能需要新的硬體功能。如果為裝置定義 ro.odm.build.media_performance_class
,ITS 會根據 MPC 等級執行特定測試。
測試會按以下場景分組:
scene0
:擷取中繼資料、抖動、陀螺儀、震動scene1
:曝光、感光度、曝光值 (EV) 補償、YUV 與 JPEG 和 RAWscene2
:臉部偵測、需要彩色場景的測試scene3
:邊緣強化、鏡頭移動scene4
:顯示比例、裁剪、視野scene5
:鏡頭陰影scene6
:Zoomscene7
:多相機切換鈕scene8
:自動曝光 (AE) 和自動白平衡 (AWB) 區域測量scene9
:JPEG 壓縮scene_extensions
:相機擴充功能scene_tele
:望遠鏡頭切換scene_flash
:自動閃光、最低影格速率scene_video
:影格遺失sensor_fusion
:相機和陀螺儀時間偏移feature_combination
:特徵組合scene_ip
:預設相機應用程式和 Jetpack Camera 應用程式 (JCA) 之間的圖像相符性
請參閱各個章節,瞭解各個場景的說明。
scene0
測試不需要特定的場景資訊。不過,手機必須保持靜止才能進行陀螺儀和震動測試。
test_jitter
評估攝影機時間戳記中的雜訊。
測試的 API:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
通過:每個影格之間至少有 30 毫秒的差異。
請注意下圖中較小的 y 軸範圍。在這個圖表中,抖動其實很小。
圖 1. test_jitter 圖表。
test_metadata
測試中繼資料項目的有效性,查看擷取結果和相機特性物件。由於圖片內容不重要,因此這項測試會使用 auto_capture_request
曝光和增益值。
測試的 API:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
通過:硬體層級、rollingShutterSkew
、frameDuration
標記、timestampSource
、croppingType
、blackLevelPattern
、pixel_pitch
、視野範圍 (FoV) 和超焦距離均已存在且有有效值。
test_request_capture_match
透過讀取擷取中繼資料,測試裝置是否寫入正確的曝光和增益值。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
通過:要求並擷取所有鏡頭的中繼資料值。
test_sensor_events
針對宣稱支援感應器融合功能的裝置,這項測試會檢查裝置是否會查詢並列印感應器事件。預期的感應器是加速計、陀螺儀和磁力儀。只有在螢幕開啟 (也就是裝置未處於待機模式) 時,這項測試才能運作。
測試的 API:
通過:已收到每個感應器的事件。
test_solid_color_test_pattern
測試相機靜音功能是否能正確產生純色測試圖案。如果相機支援靜音功能,則必須支援單色測試圖案。如果不支援攝影機靜音功能,則只有在宣傳該功能時,系統才會測試單色測試圖案。
如果支援原始圖片,系統也會測試顏色指派。測試的顏色包括黑色、白色、紅色、藍色和綠色。對於不支援原始影像的相機,只會測試黑色。
測試的 API:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
通過:支援的單色測試圖案顏色正確,且圖像變化幅度低。
test_test_pattern
測試 android.sensor.testPatternMode
參數,擷取每個有效測試圖案的框架,並檢查是否正確產生純色和色條的框架。這項測試包含下列步驟:
- 擷取所有支援的測試圖案圖片。
- 針對純色測試圖案和色條執行正確性檢查。
測試的 API:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
通過:系統已正確產生支援的測試圖案。
圖 2. test_test_patterns 範例。
test_tonemap_curve
測試使用線性色調對應表,將測試圖案從原始圖像轉換為 YUV。這項測試需要 android.sensor.testPatternMode = 2
(COLOR_BARS
) 產生完美的圖像模式,以便進行色調轉換。驗證管道是否有線性色調對應和理想圖片輸入的適當色彩輸出內容 (依賴 test_test_patterns
)。
測試的 API:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
通過:YUV 和 RAW 看起來很相似。
圖 3. test_tonemap_curve 原始值範例。
圖 4. test_tonemap_curve YUV 範例。
test_unified_timestamp
測試圖像和動作感應器事件是否位於相同的時間範圍。
測試的 API:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
通過:動作時間戳記介於兩個圖片時間戳記之間。
test_vibration_restriction
測試裝置的震動功能是否正常運作。
測試的 API:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
通過:當裝置因攝影機音訊限制 API 而靜音時,裝置不會震動。
scene1_1
scene1
是灰色圖表。灰色圖表必須覆蓋攝影機 FoV 的中心 30%。灰色圖表的 3A (AE、AWB 和 AF) 測試難度為中等,因為中心區域沒有任何特徵。不過,擷取要求會指定整個場景,其中包含足以讓 3A 收斂的功能。
RFoV 攝影機可以在 WFoV 或 RFoV 測試架中進行測試。如果在 WFoV 測試架中測試 RFoV 攝影機,系統會將圖表縮放 2/3,以便在 FoV 中指定灰色圖表的部分邊界,協助 3A 收斂。如要進一步瞭解攝影機測試裝置,請參閱「攝影機 ITS-in-a-box」。
圖 5. 全尺寸場景 1 圖表 (左),縮放 2/3 的圖表 (右)。
test_ae_precapture_trigger
測試使用預擷取觸發事件時的 AE 狀態機器。擷取五個手動要求,並停用 AE。最後一個要求含有 AE 預擷取觸發事件,但由於 AE 已停用,因此應忽略該觸發事件。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
通過:AE 已收斂。
test_auto_vs_manual
測試結果顯示,自動和手動拍攝的畫面看起來相同。
測試的 API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
通過:每個拍攝結果中回報的手動白平衡增益和轉換,與相機 3A 演算法中的自動白平衡 estimate
相符。
圖 6. test_auto_vs_manual 自動示例。
圖 7. test_auto_vs_manual 白平衡範例。
圖 8. test_auto_vs_manual 手動白平衡轉換範例。
test_black_white
測試裝置是否能產生全黑白圖片。拍攝兩張相片,第一張使用極低增益和短曝光,可拍出黑色相片,第二張使用極高增益和長曝光,可拍出白色相片。
測試的 API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:產生黑白圖片。白色圖片的飽和通道 RGB 值為 [255, 255, 255],誤差範圍小於 1%。
圖 9. test_black_white,黑色示例。
圖 10. test_black_white,白色示例。
圖 11. test_black_white,plot 表示示例。
test_burst_capture
驗證整個擷取管道是否能跟上全尺寸擷取速度和 CPU 時間。
測試的 API:
通過:擷取一系列全尺寸圖片,檢查影格掉落和圖片亮度。
test_burst_sameness_manual
使用手動拍攝設定拍攝 5 個 50 張連拍相片,並檢查相片是否完全相同。使用這項測試,找出是否有零星影格經過不同的處理方式,或有雜訊。
測試的 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
通過:圖片在視覺和 RGB 值上完全相同。
失敗:顯示 RGB 平均圖表在每個突發事件開始時的峰值或下降
first_API_level
< 30 時,容許誤差為 3%first_API_level
大於等於 30 時,容許值為 2%
圖 12. test_burst_sameness_manual 平均值範例。
圖 13. test_burst_sameness_manual_plot_means
test_crop_region_raw
測試 RAW 串流是否無法刪除。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
通過:YUV 圖片會裁剪至中央,但 RAW 圖片不會。
圖 14. test_crop_region_raw 組合原始裁剪範例。
圖 15. test_crop_region_raw 完整的 comp 原始例子。
圖 16. test_crop_region_raw 組合 YUV 裁剪範例。
圖 17. test_crop_region_raw YUV 完整範例。
test_crop_regions
測試裁剪區域是否正常運作。擷取完整圖片,並建立五個不同區域 (角落和中心) 的補丁。擷取五個區域的裁剪設定圖片。比較修補圖片和裁剪圖片的值。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
通過:裁剪區域的圖片與裁剪圖片相對應的補丁相符。
test_ev_compensation
測試是否套用了曝光值 (EV) 補償。這項測驗包含基本和進階兩個部分。
基本測試區段會測試使用 CONTROL_AE_COMPENSATION_STEP
建立的範圍套用 EV 補償效果。系統會在每個補償值擷取八個影格。
進階部分會以八個步驟增加曝光量,並檢查測得的亮度與預期亮度。系統會根據未套用 EV 補償的圖像亮度計算預期值,如果計算值超出實際圖像值範圍,預期值就會飽和。如果預期值和測量值不符,或圖片在五個步驟內過度曝光,則測試會失敗。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
基本版通過:圖片顯示在五個步驟內逐漸增加曝光,且未過度曝光。
圖 18. test_ev_compensation_basic。
進階區段傳送:隨著 EV 補償設定增加,也會擷取亮度值的增加。為每個 EV 補償設定拍攝的八個影格具有穩定的亮度值。
圖 19. test_ev_compensation_advanced_plot_means。
test_exposure_x_iso
測試在 ISO 和曝光時間變化時,是否能維持恆定的曝光。拍攝一系列影像,並選擇適當的 ISO 和曝光時間,以便平衡各個影像。結果應具有相同的亮度,但在序列中,圖片應會變得更雜訊。確認樣本像素平均值彼此相近。驗證圖片是否未固定為 0 或 1 (這會使圖片看起來像平線)。您也可以在設定檔中設定 debug
標記,以便使用 RAW 圖片執行測試。
測試的 API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:圖片亮度相同,但 ISO 值越高,雜訊就越多。如果 ISO*曝光 值在測試增益空間中保持不變,RGB 平面就會變得平坦。
失敗機制:在下圖中,隨著增益乘數值 (x 軸) 增加,經過標準化的 RGB 平面平均值 (y 軸) 開始偏離低增益乘數值。
圖 20. test_exposure_plot_means。
圖 21. test_exposure_mult=1.00。
圖 22. test_exposure_mult=64.00。
test_latching
測試 FULL
和 LEVEL_3
攝影機的設定 (曝光和增益) 是否會在正確的畫面上鎖定。使用連續要求拍攝一系列影像,並在影像之間變更擷取要求參數。檢查圖片是否具有預期的屬性。
測試的 API:
通過:圖片 [2, 3, 6, 8, 10, 12, 13] 的 ISO 或曝光值較高,因此在下圖的圖表中顯示出較高的 RGB 平均值。
圖 23. test_latching 圖表表示示例。
圖 24. test_latching i=00。
圖 25. test_latching i=01。
圖 26. test_latching i=02。
圖 27. test_latching i=03。
圖 28. test_latching i=04。
圖 29. test_latching i=05。
圖 30. test_latching i=06。
圖 31. test_latching i=07。
圖 32. test_latching i=08。
圖 33. test_latching i=09。
圖 34. test_latching i=10。
圖 35. test_latching i=11。
圖 36. test_latching i=12。
test_linearity
測試裝置處理作業是否可反轉為線性像素。將裝置對準單一目標,擷取一系列連續鏡頭。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
通過:R、G、B 值必須隨著靈敏度增加而線性增加。
圖 37. test_linearity 圖表的意思示例。
test_locked_burst
測試 3A 鎖定和 YUV 突發 (使用自動設定)。這項測試的設計目的是即使在沒有 MANUAL_SENSOR
或 PER_FRAME_CONTROLS
的裝置上也能通過測試。這項測試會在 CTS 中檢查 YUV 圖像的一致性,同時檢查影格速率。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
通過:擷取畫面看起來一致。
圖 38. test_locked_burst frame0 範例。
圖 39. test_locked_burst frame1 範例。
圖 40. test_locked_burst frame2 範例。
scene1_2
scene 1_2
是 scene 1_1
的功能相同副本,實作子場景結構,以減輕 scene 1
的延長時間。
test_param_color_correction
測試設定時是否會套用 android.colorCorrection.*
參數。使用不同的轉換和增益值拍攝相片,並測試相片是否有相應的差異。選擇轉換和增益值,可讓輸出內容變得越來越紅或越來越藍。使用線性色調對應表。
色調對應是圖片處理技術,可將一組顏色對應至另一組顏色,以便在動態範圍較受限的媒介中,模擬高動態範圍圖片的外觀。
測試的 API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
通過:R 和 B 值會根據轉換作業提升。
圖 41. test_param_color_correction 圖表的意思。
在下列圖表中,X 軸代表擷取要求:0 = 一致性、1 = 紅色增強、2 = 藍色增強。
圖 42. test_param_color_correction req=0 unity 範例。
圖 43. test_param_color_correctness req=1 red boost 範例。
圖 44. test_param_color_correction req=2 藍色增強範例。
test_param_flash_mode
測試是否套用了 android.flash.mode
參數。手動將曝光值設為較暗,以便清楚判斷閃光燈是否已觸發,並使用線性色調圖。使用圖塊圖片檢查中心,看看是否有大型漸層效果,以便確認閃光燈是否已啟動。
測試的 API:
通過:圖塊圖片的中心有大型漸層,表示閃光燈已觸發。
圖 45. test_param_flash_mode 1 範例。
圖 46. test_param_flash_mode 單一資訊方塊範例。
圖 47. test_param_flash_mode 2 範例。
圖 48. test_param_flash_mode 兩個資訊方塊範例。
test_param_noise_reduction
測試 android.noiseReduction.mode
參數在設定時是否正確套用。在光線昏暗的環境下拍攝相片。使用高類比增益,有助於確保擷取的圖像有雜訊。拍攝三張圖片,分別為 NR 關閉、快速和高品質。同時以低增益和 NR 關閉的設定拍攝圖片,並使用這項變化的差異做為基準。訊雜比 (SNR) 比率越高,圖像品質就越好。
測試的 API:
通過:SNR 會因不同的雜訊消除模式而異,且行為類似於下圖:
圖 49. test_param_noise_reduction 繪製 SNR 示例。
0:關閉,1:快速,2:高品質,3:最小,4:ZSL
圖 50. test_param_noise_reduction high gain nr=0 範例。
圖 51. test_param_noise_reduction high gain nr=1 範例。
圖 52. test_param_noise_reduction high gain nr=2 範例。
圖 53. test_param_noise_reduction high gain nr=3 範例。
圖 54. test_param_noise_reduction 低增益範例。
test_param_shading_mode
測試是否套用了 android.shading.mode
參數。
測試的 API:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
通過:陰影模式已切換,且鏡頭陰影對應圖已如預期修改。
圖 55. test_param_shading_mode 鏡頭遮色地圖,模式 0 迴圈 0 的範例。
圖 56. test_param_shading_mode 鏡頭陰影地圖,模式 1 迴圈 0 的範例。
圖 57. test_param_shading_mode 鏡頭遮色地圖,模式 2 迴圈 0 的範例。
test_param_tonemap_mode
測試是否套用了 android.tonemap.mode
參數。將不同的色調對應曲線套用至每個 R、G、B 通道,並檢查輸出圖片是否如預期修改。這項測試包含兩項測試:test1
和 test2
。
測試的 API:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass:
test1
:兩張圖片都有線性色調圖,但n=1
的漸層較陡峭。n=1
圖片的 G (綠色) 通道較亮。test2
:同樣色調圖,但長度不同。圖片相同。
圖 58. n=0 的 test_param_tonemap_mode。
圖 59. n=1 的 test_param_tonemap_mode。
test_post_raw_sensitivity_boost
檢查原始敏感度提升後的結果。擷取一組具有不同感光度值的原始和 YUV 圖片,發布原始感光度提升組合,並檢查輸出像素平均值是否符合要求設定。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:原始圖片會隨著增強程度增加而變暗,而 YUV 圖片的亮度則保持不變。
圖 60. test_post_raw_sensitivity_boost raw s=3583 boost=0100 範例。
圖 61. 範例:test_post_raw_sensitivity_boost raw s=1792 boost=0200。
圖 62. test_post_raw_sensitivity_boost raw s=0896 boost=0400 示例。
圖 63. test_post_raw_sensitivity_boost raw s=0448 boost=0800 範例。
圖 64. 範例:test_post_raw_sensitivity_boost raw s=0224 boost=1600。
圖 65. test_post_raw_sensitivity_boost raw s=0112 boost=3199 示例。
圖 66. test_post_raw_sensitivity_boost 原始圖表的意思示例。
圖 67. test_post_raw_sensitivity_boost YUV s=0112 boost=3199 範例。
圖 68. test_post_raw_sensitivity_boost YUV s=0448 boost=0800 範例。
圖 69. test_post_raw_sensitivity_boost YUV s=0896 boost=0400 範例。
圖 70. test_post_raw_sensitivity_boost YUV s=1792 boost=0200 範例。
圖 71. test_post_raw_sensitivity_boost YUV s=3585 boost=0100 示例。
圖 72. test_post_raw_sensitivity_boost_yuv_plot_means
test_raw_exposure
以逐漸增加的曝光時間擷取一組原始影像,並測量像素值。
測試的 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
通過:提高 ISO (增益) 會讓像素對光線的靈敏度提高,因此圖表會向左移動。
圖 73. test_raw_exposure ISO=55 範例。
10⁰ 是 1 毫秒、10¹ 是 10 毫秒,而 10⁻¹ 是 0.1 毫秒。
圖 74. test_raw_exposure ISO=132 示例。
圖 75. test_raw_exposure ISO=209 範例。
圖 76. test_raw_exposure ISOs=286 範例。
圖 77. test_raw_exposure ISO=363 範例。
圖 78. test_raw_exposure ISO=440 範例。
test_reprocess_noise_reduction
針對重新處理要求套用 android.noiseReduction.mode
的測試。在相機光線昏暗的情況下,拍攝經過重新處理的圖像。使用高類比增益,確認擷取的圖片是否有雜訊。拍攝三張經過重新處理的圖片,分別為 NR 關閉、快速和高品質。以低增益和關閉降噪功能重新處理圖像,並使用這項變化做為基準。
測試的 API:
通過:FAST >= OFF、HQ >= FAST 和 HQ >> OFF。
圖 79. 典型的 SNR 與 NR 模式圖表範例。
test_tonemap_sequence
測試一系列使用不同色調圖曲線的鏡頭。使用線性色調圖表手動拍攝 3 張相片。使用預設色調圖拍攝 3 張手動拍攝的照片。計算每個連續影格組合之間的差異。
測試的 API:
通過:有三個相同的畫面,後面接著另一組三個相同的畫面。
圖 80. test_tonemap_sequence i=0 範例。
圖 81. test_tonemap_sequence i=1 範例。
圖 82. test_tonemap_sequence i=2 範例。
圖 83. test_tonemap_sequence i=3 範例。
圖 84. test_tonemap_sequence i=4 範例。
圖 85. test_tonemap_sequence i=5 範例。
test_yuv_jpeg_all
測試所有回報的圖像擷取大小和格式是否正常運作。使用線性色調對應的人工要求,讓 YUV 和 JPEG 在 image_processing_utils
模組轉換後看起來相同。根據預設,系統不會儲存圖片,但您可以啟用 debug_mode
來儲存圖片。
測試的 API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
通過:所有圖片中心在 RGB 轉換圖片中,與最高解析度 YUV 圖片的差異值為 3% 的均方根誤差 (RMS)。
圖 86. test_yuv_jpeg_all 範例。
test_yuv_plus_dng
測試檢查所回報的圖像擷取大小和格式是否可正常運作。
測試的 API:
通過:測試完成並傳回要求的圖片。
圖 87. test_yuv_plus_dng 範例。
scene1_3
scene 1_3
是 scene 1_1
的功能相同副本,實作子場景結構,以減輕 scene 1
的延長時間。
test_capture_result
測試 CaptureResult
物件是否傳回有效資料。這項測試包含自動拍攝、手動拍攝和第二次自動拍攝。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
通過:中繼資料適用於所有擷取作業,且手動設定不會流入第二次自動擷取作業。為擷取影像繪製鏡頭陰影校正。
圖 88. test_capture_result_plot_lsc_auto_ch0。
test_dng_noise_model
驗證 DNG 原始模型參數是否正確。這張圖表顯示在不同感光度下拍攝的原始影像中,灰卡中心區域的測量差異,並將這些值與相機 HAL 中 DNG 雜訊模型在各感光度下預期的差異進行比較 (根據擷取結果物件中傳回的 O、S 參數)。如要進一步瞭解 DNG 雜訊模型,請下載以下關於 DNG 雜訊模型的文件。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:DNG 原始模型參數正確無誤。預期的 RGB 值與實際測量到的 RGB 值相符。
圖 89. test_dng_noise_model_plog。
test_jpeg
測試轉換的 YUV 圖片和裝置 JPEG 圖片是否相同。測試會擷取圖片的中心 10%,並計算 RGB 值,然後驗證是否相符。
測試的 API:
通過:每張圖片之間的平均 RGB 差異小於 3%。
圖 90. test_jpeg_fmt=jpg.jpg。
圖 91. test_jpeg=fmt=yuv.jpg。
test_raw_burst_sensitivity
以逐漸增加的增益值擷取一組原始影像,並測量雜訊。以連拍模式拍攝純 RAW 相片。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass:隨著增益增加,每個影像的雜訊都會比前一個影像更高。
使用中心統計資料格線儲存格的變異數。
圖 92. test_raw_burst_sensitivity_variance。
test_raw_sensitivity
以逐漸增加的靈敏度擷取一組原始圖片,並測量圖片中心 10% 的雜訊 (變異)。測試每個鏡頭的雜訊是否比前一個鏡頭更大。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass:每拍攝一張相片,變化會增加。
圖 93. test_raw_sensitivity_variance。
test_yuv_plus_jpeg
測試擷取單一影格,並輸出 YUV 和 JPEG 格式。使用含有線性色調對應的人工要求,以便在透過 image_processing_utils
模組轉換時,YUV 和 JPEG 看起來相同。
測試的 API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
通過:YUV 和 JPEG 圖片相似,RMS (訊號值) 差異小於 1%。
圖 94. 使用 JPEG 格式的 test_yuv_plus_jpeg。
圖 95. 使用 YUV 格式的 test_yuv_plus_jpeg。
test_yuv_plus_raw
測試擷取單一影格,並以原始 (10 位元和 12 位元原始) 和 YUV 輸出格式輸出 (如果支援的話)。使用手動要求搭配線性色調圖,以便原始和 YUV 相同。比較 RGB 轉換圖片的中心 10% RGB 值。記錄android.shading.mode
。
測試的 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
通過:YUV 和原始圖片相似,且 RMS (信號的均方根值) 差異小於 3.5%。
圖 96. test_yuv_plus_raw_shading=1_raw.jpg。
圖 97. test_yuv_plus_raw_shading=1_yuv.jpg。
test_sensitivity_priority
測試 CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
在不同 ISO 設定下,確認 ISO 值越高,雜訊等級就越高之間的關聯。
測試的 API:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
通過:較高的 ISO 值會導致雜訊等級上升。
測試略過條件
如果符合下列任一條件,系統就會略過 test_sensitivity_priority.py
測試:
- 裝置的首個 API 級別 (
first_api_level
) 為 35 以下。 - 裝置未在
CONTROL_AE_AVAILABLE_PRIORITY_MODES
中宣傳CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
。
test_exposure_time_priority
在不同曝光時間測試 CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
,檢查 ISO 可補償的範圍內是否有穩定的亮度。
測試的 API:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
通過:如果 ISO 在補償範圍內,曝光時間的亮度會保持穩定 (在容許範圍內)。
測試略過條件
如果符合下列任一條件,系統就會略過 test_exposure_time_priority
測試:
- 裝置的首個 API 級別 (
first_api_level
) 為 35 以下。 - 裝置未在
CONTROL_AE_AVAILABLE_PRIORITY_MODES
中宣傳CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
。
scene2_a
scene2_a
有三張臉孔,背景為灰色,衣服顏色中性。這些臉孔的膚色範圍廣泛,圖表必須有正確的方向,才能讓臉部偵測功能發揮最佳效能。
圖 98. scene2_a 範例。
test_autoframing
測試攝影機裝置的自動構圖行為。執行大縮放,讓畫面中沒有任何臉孔可見,然後將 CaptureRequest
中的 AUTOFRAMING
設為 True
,啟用自動構圖模式,並驗證在狀態收斂時,是否能偵測到原始場景中的所有臉孔 (也就是說,當 CaptureResult
中的 AUTOFRAMING_STATE
設為 AUTOFRAMING_STATE_CONVERGED
時)。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
通過:系統偵測到三張臉孔。
test_display_p3
使用 ColorSpaceProfiles
API 測試以 JPEG 格式擷取的 Display P3 影像。測試擷取的 JPEG 是否在標頭中含有適當的 ICC 設定檔,以及圖片是否含有 sRGB 色域以外的顏色。
測試的 API:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
通過:JPEG 包含 Display P3 ICC 設定檔,以及 sRGB 色域以外的顏色。
test_effects
擷取支援的相機特效影格,並檢查是否正確產生。這項測試只會檢查 OFF
和 MONO
特效,但會為所有支援的特效儲存圖片。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass:拍攝效果為 OFF
的場景圖片,以及效果設為 MONO
的單色圖片。
圖 99. test_effects_MONO。
test_exposure_keys_consistent
這項測試會比較啟用自動曝光功能的擷取畫面與停用自動曝光功能的擷取畫面,後者會在啟用自動曝光功能的擷取畫面 CaptureResult
中手動套用曝光參數 (靈敏度、曝光時間、影格持續時間、後製原始靈敏度提升)。
測試的 API:
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
通過:兩次擷取畫面之間的相對亮度差異小於 4%。
test_format_combos
測試不同的輸出格式組合。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
通過:已成功擷取所有組合。
test_num_faces
測試臉部偵測功能。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到三張臉孔。
圖 100. test_num_faces 臉部偵測模式 1 的範例。
test_reprocess_uv_swap
測試 YUV 重新處理作業是否會交換 U 和 V 平面。系統會計算重新處理的圖像與未經處理的擷取影像之間的絕對差異總和 (SAD),藉此偵測這類問題。如果交換重新處理擷取結果的輸出 U 和 V 平面,SAD 會增加,系統會假設輸出內容具有正確的 U 和 V 平面。
測試的 API:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
通過:U 和 V 平面並未互換。
圖 101. test_reprocess_uv_swap 範例。
scene2_b
test_preview_num_faces
在預覽畫面中測試臉部偵測功能,讓臉部場景中的膚色更加多元。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:在臉部邊界框中找到三張臉孔,並顯示臉部特徵。
圖 102. test_num_faces 臉部偵測模式 1 範例。
test_yuv_jpeg_capture_sameness
使用最大常見 YUV 和 JPEG 格式擷取兩張圖片,顯示比例與最大 JPEG 格式相同,解析度不超過 1920x1440。將 jpeg.quality
設為 100,並擷取雙重途徑要求。將兩張圖片轉換為 RGB 陣列,並計算兩張圖片之間的 3D 均方根誤差 (RMS)。
此外,這項測試會驗證所有支援的串流用途的 YUV 輸出內容,是否與 STILL_CAPTURE
用途的 YUV 相似。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
通過:STILL_CAPTURE
用途的 YUV 和 JPEG 圖片 RMS (信號的平方根均方值) 差異小於 3%;所有支援用途的 YUV 圖片 RMS 差異小於 10%,與 STILL_CAPTURE
用途的 YUV 圖片差異小於 10%。
scene2_c
test_num_faces
測試臉部偵測功能,在臉部場景中增加膚色多樣性。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到三張臉孔。
圖 103. test_num_faces 臉部偵測模式範例。
test_jpeg_capture_perf_class
測試 JPEG 擷取延遲時間,適用於 CDD 中 第 2.2.7.2 節 Camera 中指定的 S 效能類別。
通過:在兩部主相機上,ITS 照明條件 (3000K) 下,CTS 相機效能測試測得的 1080p 解析度相機 2 JPEG 擷取延遲時間必須小於 1000 毫秒。
test_camera_launch_perf_class
根據 CDD 的 2.2.7.2 節 Camera 指定,測試 S 效能類別的相機啟動延遲時間。
通過:在兩個主要相機的 ITS 照明條件 (3000K) 下,相機 2 的啟動延遲 (開啟相機至第一個預覽影格) 必須小於 600 毫秒,這項測試由 CTS 相機 PerformanceTest 進行。
test_default_camera_hdr
測試預設相機拍攝畫面是否為 Ultra HDR,以符合 CDD 的 第 2.2.7.2 節 Camera 所指定的效能等級 15。
通過:效能等級 15 裝置的預設相機套件擷取畫面必須為 Ultra HDR。
scene2_d
test_preview_num_faces
在預覽畫面中測試臉部偵測功能,讓臉部場景中的膚色更加多元。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:在臉部邊界框中找到三張臉孔,並顯示臉部特徵。
scene2_e
test_continuous_picture
使用「先擷取要求」設定,擷取 50 個 VGA 解析度影格
android.control.afMode = 4 (CONTINUOUS_PICTURE).
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
通過:在 50 格影像擷取作業結束時,3A 系統已穩定。
test_num_faces
測試臉部偵測功能,在臉部場景中增加膚色多樣性。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到 3 張臉孔。
scene2_f
scene2_f
有三張臉孔,背景和衣服都是白色。臉部有各種膚色,且與背景形成高對比。
圖 104. scene2_f 示例。
test_preview_num_faces
測試臉部偵測功能,在臉部場景中增加膚色多樣性。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:在臉部邊界框中找到三張臉孔,並顯示臉部特徵。
圖 105. test_num_faces_fd_mode_1 範例。
scene2_g
scene2_g
有三張側面臉孔,背景和衣服都是白色。臉部有各種膚色,且與背景形成高對比。
圖 106. scene2_g 範例。
test_preview_num_faces
測試臉部偵測功能,在臉部場景中增加膚色多樣性。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:在臉部邊界框中找到三張臉孔,並顯示臉部特徵。
圖 107. test_preview_num_faces 範例。
scene3
scene3
使用 ISO12233 圖表,且大多數測試都會使用圖表擷取方法,在場景中找出圖表。因此,大多數已儲存的圖片都沒有邊框,只有圖表有邊框,例如場景 1、2 或 4 的圖片。圖表必須處於正確的方向,才能讓圖表檢索器發揮最佳效能。
test_edge_enhancement
測試 android.edge.mode
參數是否套用正確。針對每個邊緣模式擷取非重新處理圖像,並傳回輸出圖像的清晰度和擷取結果中繼資料。使用指定的邊緣模式、靈敏度、曝光時間、對焦距離和輸出途徑參數,處理擷取要求。
通過: HQ
模式 (2) 比 OFF
模式 (0) 更清晰。FAST
模式 (1) 比 OFF
模式更清晰。HQ
模式的清晰度與 FAST
模式相同或更高。
測試的 API:
受影響的攝影機參數:
EDGE_MODE
圖 108. test_edge_enhancement edge=0 範例。
圖 109. test_edge_enhancement edge=1 (快速模式) 範例。
圖 110. test_edge_enhancement edge=2 (高品質模式) 範例。
test_flip_mirror
測試圖片是否按照 CDD 中的 7.5.2 前置相機正確顯示。
您可以透過中心附近的菱形圖案,辨識鏡像、翻轉或旋轉的圖片。
通過:圖片未經過翻轉、鏡像或旋轉。
圖 111. test_flip_mirror 場景修正項目範例。
test_imu_drift
測試慣性測量單元 (IMU) 在裝置靜止且擷取高畫質預覽畫面時,是否有 30 秒的穩定輸出。
測試的 API:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass:
- 在測試期間,陀螺儀的漂移量小於 0.01 弧度。
- 在測試期間,陀螺儀讀數的變化量低於 1E-7 弧度/秒2/Hz2。
- 在測試期間,旋轉向量的偏移量小於 0.01 弧度。
- (尚未強制規定) 陀螺儀的漂移率低於每秒 1 度。
圖 112. test_imu_drift 陀螺儀漂移示例。
圖 113. test_imu_drift 旋轉向量漂移示例。
test_landscape_to_portrait
測試橫向至直向覆寫功能是否可正確運作,適用於橫向感應器。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
通過:測試會找出具有預期旋轉角度的圖表 (停用橫向/直向覆寫值時為 0 度,啟用時為 90 度)。
圖 114. test_landscape_to_portrait 範例。
test_lens_movement_reporting
測試是否正確回報鏡頭移動標記。以連拍模式拍攝 24 張影像,其中前 12 張影像的焦距距離為最佳 (由 3A 判斷),後 12 張影像的焦距距離為最小。在第 12 個影格左右,鏡頭會移動,導致清晰度降低。當鏡頭移動到最終位置時,清晰度最終會穩定下來。
在所有影格中,如果前幾格影像的清晰度介於中等至清晰之間,且鏡頭在最佳焦距距離處靜止不動,以及最後幾格影像的鏡頭在最小焦距距離處靜止不動,則應宣告鏡頭移動標記。鏡頭移動的確切影格並不重要:重要的是,鏡頭移動時,系統會宣告移動旗標。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
通過:在有銳利度變化的影格中,鏡頭移動標記為 True
。
失敗機制:
test_log.DEBUG
中的lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) 只會在清晰度未變更的影格中提出。- 在
test_log.DEBUG
中,如果影格含有lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0),則與在最佳焦距下拍攝的前幾張影格,或在最小焦距下拍攝的最後幾張影格相比,影格銳利度會有所差異。
test_reprocess_edge_enhancement
測試邊緣強化功能是否可正常運作。使用指定的重新處理邊緣模式處理擷取要求,並比較不同的模式,以便在停用重新處理邊緣模式時擷取。
測試的 API:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
通過:不同邊緣模式的銳利度正確無誤。HQ
(模式 2) 比 OFF
(模式 0) 更清晰,不同模式之間的改善幅度也相近。
圖 115. test_reprocess_edge_enhancement 圖表範例。
scene4
scene4
由方形內白色背景上的黑色圓圈組成。
scene4 中的測試可能會對對齊方式過於敏感,因此從 Android 15 開始,您可以在 tools 目錄中使用 check_alignment.py
,啟用對 DUT 和圖表對齊方式的檢查。
圖 116. 場景 4 範例。
test_30_60fps_preview_fov_match
測試 30 FPS 和 60 FPS 預覽影片是否具有相同的 FoV。這項測試會擷取兩部影片,一為 30 FPS,另一為 60 FPS。系統會從每部影片中選取代表性影格並進行分析,以驗證兩部影片中的 FoV 變化是否符合規格。測試圓形的顯示比例是否維持不變、圓形中心是否保持穩定,以及圓形半徑是否維持不變。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
通過:圖片不會拉長,圖片中心的差異不超過 3%,且 30 FPS 和 60 FPS 影片的最大顯示比例變更幅度不超過 7.5%
失敗機制:
- 30 FPS 影片中的圓形與 60 FPS 影片中的圓形大小差異明顯。
- 處理管道會扭曲擷取圖像中的圓形。
- 由於擷取影像要求的顯示比例過高,導致圖片的高度或寬度減少,因此擷取的圖片中的圓形會遭到裁剪。
- 擷取的圖片中,圓形中心有倒影,且看起來並未完全填滿。
test_aspect_ratio_and_crop
測試圖片在圖片處理管道中是否會發生扭曲或意外裁剪的情形。拍攝所有格式的圓形相片。驗證圓形不會扭曲、不會從圖片中心移動,且不會因顯示比例或解析度不同而錯誤變更大小。
測試的 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
通過:圖片不會拉長,圖片中心的差異不超過 3%,並保留盡可能大的 FoV。
失敗機制:
- 相機未對準平板電腦上顯示的圓圈,該圓圈位於拍攝畫面中央。
- 處理管道會扭曲擷取圖像中的圓形。
- 在圖片處理管線中,解析度較低的圖片會經過兩次裁剪,因此高解析度圖片和低解析度圖片之間的 FoV 會有所不同。
- 由於擷取影像要求的顯示比例過高,導致圖片的高度或寬度減少,因此擷取的圖片中的圓形會遭到裁剪。
- 擷取的圖像中,圓形中心有倒影,且看起來並未完全填滿。
test_multi_camera_alignment
測試攝影機校正參數,與攝影機位置相關,適用於多攝影機系統。使用多相機實體子相機,使用其中一個實體相機拍照。找出圓心。將圓形中心投影至每個攝影機的世界座標。比較相機在世界座標中的圓心差異。將世界座標重新投影至像素座標,並與原始值進行有效性檢查。比較圓形大小,檢查攝影機的焦距是否不同。
測試的 API:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
通過:在投影圖像中,圓形中心和大小與使用相機校正資料和焦距拍攝的圖像相符。
失敗機制:
LENS_INTRINSIC_CALIBRATION
、LENS_POSE_TRANSLATION
和LENS_POSE_ROTATION
是設計值,並非實際校正資料。- 相機系統不適合測試設定,例如使用 RFoV 測試架測試廣角和超廣角相機系統。詳情請參閱 Camera ITS-in-a-box 常見問題 Q1。
test_preview_aspect_ratio_and_crop
與靜態影像擷取的 test_aspect_ratio_and_crop
測試類似,請檢查支援的預覽格式,確認預覽影格不會過度拉伸或裁剪。驗證圓形的顯示比例不會變更、裁剪的圖片會將圓形置於影格中央,且圓形大小不會因固定格式或不同解析度而變更 (檢查視野)。
測試的 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:圖片不會拉長,圖片中心的差異不超過 3%,並保留盡可能大的 FoV。
test_preview_stabilization_fov
檢查支援的預覽大小,確保適當裁剪 FoV。這項測試會擷取兩部影片,一部使用預覽防震功能 ON
,另一部使用預覽防震功能 OFF
。系統會從每部影片中選取代表性影格,並進行分析,以驗證兩部影片中的 FoV 變化是否符合規格。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:圓形的顯示比例大致保持不變,圓形的中心位置保持穩定,且圓形的大小變動幅度不超過 20%。
test_video_aspect_ratio_and_crop
在所有影片格式中拍攝正方形內圓形的影片。擷取關鍵影格,並驗證圓形的顯示比例不會改變、裁剪的圖片會將圓形置中,且圓形大小不會因固定格式或不同解析度而改變 (檢查視野)。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
通過:影片畫格不會拉長,畫格中心的差異不超過 3%,並保留最大可能的 FoV。
scene5
scene5
需要均勻照明的灰色場景。方法是將散光器放在相機鏡頭上。我們建議使用下列擴散器:www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
。
如要準備場景,請在相機前方安裝擴散板,並將相機對準約 2000 勒克斯的光源。拍攝 scene5
所需的圖片必須使用漫射光,且沒有明顯特徵。以下是示例圖片:
圖 117. 場景 5 擷取範例。
test_lens_shading_and_color_uniformity
測試鏡頭陰影校正是否適當套用,以及單色均勻場景的顏色是否均勻分布。在使用自動 3A 的 YUV 影格上執行這項測試。鏡頭陰影會根據 y 通道進行評估。為指定的每個樣本區塊測量平均 y 值,並根據中心 y 值判斷是否通過。顏色均勻度測試會在紅綠和藍綠空間中進行評估。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
通過:在圖片的指定半徑範圍內,紅綠和藍綠值的差異必須低於 20%,才能通過測試。
scene6
scene6
是 ArUco 標記的獨特識別格線。scene6
中的測試可能會對對齊方式過於敏感,因此從 15 版開始,您可以在工具目錄中使用 check_alignment.py
,啟用對 DUT 和圖表對齊方式的檢查。
圖 118. 場景 6 範例。
test_in_sensor_zoom
測試相機內建感應器變焦功能的行為,產生經過裁剪的原始圖像。
將串流用途設為 CROPPED_RAW
後,測試會在變焦範圍內拍攝兩張相片,分別是完整視角原始圖像和裁剪後的原始圖像。這項測試會將圖片轉換為 RGB 陣列,將完整大小裁剪的原始圖片縮小至 SCALER_RAW_CROP_REGION
回報的大小,並計算兩張圖片之間的 3D RMS 差異。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
通過:經過縮小裁剪的原始圖像與完整 FoV 原始圖像之間的 3D RMS 差異低於測試中設定的閾值。
test_zoom
測試相機從超廣角鏡頭變焦到廣角鏡頭的行為。在縮放範圍內拍攝,並檢查 ArUco 標記是否會隨著攝影機縮放而變大。這項測試也會檢查中心標記的位置是否會在每次擷取時發生可預測的變化。從中心標記中心到圖片中心的距離,可以根據縮放比例以固定速率變更,直到實際切換攝影機為止;也可以在實際切換攝影機後,以單調方式變更至相同標記的位置。測試前,必須先在裝置上安裝 Jetpack Camera 應用程式 (JCA)。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:相機根據要求的縮放比例正確顯示所擷取的 ArUco 標記相對大小,以便驗證相機是否正確縮放,且標記與圖片中心的距離會根據測試說明中所述的條件變化。
圖 119. test_zoom 用於找出最接近中心的 ArUco 標記輪廓。
test_low_latency_zoom
測試攝影機低延遲變焦行為。使用 android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
在變焦範圍內進行擷取,並檢查輸出圖片中的標記是否與擷取中繼資料中的變焦比例相符。同一個相機擷取工作階段會用於匯集 3A 並擷取相片。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
通過:相對於縮放比例結果中繼資料,所擷取標記的相對大小正確無誤。
test_preview_video_zoom_match
測試在錄製和縮放時,影片預覽畫面和影片輸出畫面是否顯示及錄製相同的輸出內容。計算在不同縮放比例下,最接近中心的標記大小,並檢查標記的大小是否會隨著縮放比例增加而增加。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:相對於影片和預覽畫面中要求的縮放比例,擷取標記的相對大小正確無誤。
圖 120. HD_1280x720_key_frame.png (縮放前)。
圖 121. preview_1280x720_key_frame.png (縮放前)。
圖 122. HD_1280x720_key_frame.png (縮放後)。
圖 123. preview_1280x720_key_frame.png (縮放後)。
test_preview_zoom
測試每個預覽影格縮放比例是否與超廣角鏡頭至廣角鏡頭的對應擷取中繼資料相符。這項測試會在縮放範圍內擷取預覽影格,並找出最接近中心的 ArUco 標記。然後,測試會檢查中心標記的位置是否會在每次擷取時變化。從中心標記中心到圖片中心的距離,可以根據縮放比例以固定速率變更,直到實際切換攝影機為止;也可以在實際切換攝影機後,以單調方式變更至相同標記的位置。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:所選 ArUco 標記的相對大小,與所有預覽影格中對應擷取結果的回報縮放比例相符。在所有預覽影格中,所回報的對應擷取結果縮放比例,與所選標記與圖片中心的相對距離相符。
圖 124. test_preview_zoom 圖片,顯示選取的最近中心標記
test_session_characteristics_zoom
測試 CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
中列出的所有支援工作階段設定的縮放比例範圍。針對每項設定,如果 CameraDeviceSetup#isSessionConfigurationSupported
傳回 true
,則測試會驗證是否可達到 CameraDeviceSetup#getSessionCharacteristics
中傳回的縮放比例範圍。
測試的 API:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
通過:對於 CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
中列出的每個支援的 SessionConfiguration
,均可達到最小和最大縮放比例。
scene7
scene7
是長方形邊框,可分成四個相等的象限,每個象限都填入不同的顏色。矩形中央的斜邊圖表可用於檢查影像銳利度。四個 ArUco 標記會與矩形的四個外角對齊,以便在不同縮放比例下取得主矩形框架的正確座標。
圖 125. 場景 7。
test_multi_camera_switch
這項測試會驗證在以不同變焦比率錄製預覽畫面時,超廣角 (UW) 和廣角 (W) 鏡頭之間的切換會產生類似的 RGB 值。
這項測試會在預先定義的範圍內使用不同的縮放比例,執行動態預覽錄影,並找出實體相機變更的時間點。這個點代表從 UW 鏡頭切換至 W 鏡頭。
系統會分析在交叉點前後拍攝的畫面,以便進行自動曝光 (AE)、自動白平 (AWB) 和自動對焦 (AF) 等作業。
AE 檢查會驗證 UW 和 W 鏡頭圖片的亮度變化是否在預期範圍內。AWB 檢查會驗證紅綠和藍綠的比例是否在 UW 和 W 鏡頭圖片的閾值範圍內。自動對焦檢查會根據 UW 和 W 鏡頭圖像之間的平均漸層大小,評估銳利度預估值。
執行這項測試時,如果 Moire 效應會影響結果,請使用相機 ITS 核准的平板電腦清單中解析度較高的平板電腦。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
通過:如要通過測試,AE 和 AWB 檢查必須通過。AF 檢查結果僅用於記錄用途。以下是每項檢查的條件:
- AE 檢查:如果裝置同時支援
ae_regions
和awb_regions
,則 UW 和 W 鏡頭圖像之間的亮度變化 (Y 值) 必須低於所有色塊的 4%。如果只支援ae_regions
,則只有灰色色塊值必須符合條件。 - AWB 檢查:如果裝置同時支援
ae_regions
和awb_regions
,則 UW 和 W 鏡頭圖片的紅綠和藍綠值差異,對於灰色色塊必須小於 3%,對於其他色塊則必須小於 10%。 - AF 檢查:W 鏡頭拍攝的圖像清晰度必須高於 UW 拍攝的清晰度。
圖 126. 使用 UW 鏡頭拍攝的灰色圖塊。
圖 127. 使用 W 鏡頭拍攝的灰色測試圖。
scene8
scene8
是矩形框架,可劃分為四個相等的區域,每個區域都包含以不同曝光值拍攝的肖像照,或疊加不同色調 (藍色調、增加曝光、減少曝光、黃色調)。四個 ArUco 標記會與矩形的四個外角對齊,以便取得主矩形框架的正確座標。
圖 128. 場景 8 範例。
test_ae_awb_regions
測試在不同的 AE 和 AWB 區域預覽錄影時,RGB 和亮度值是否不同。
這項測試會記錄 8 秒的預覽錄影,並在每個象限中執行 AE 和 AWB 測量,每次 2 秒。然後從每個區域的預覽錄影中擷取影格,並使用擷取的畫面執行下列 AE 和 AWB 檢查:
- AE 檢查:確認曝光度降低的區域影格測量值,其亮度值增加幅度比曝光度增加的區域影格測量值高出 1% 以上。這可驗證在測量較暗區域時,圖片是否會變亮。
- AWB 檢查:驗證在使用藍色測光區域的影格中,紅色與藍色 (圖片的平均 RGB 值) 的比率,是否比使用黃色測光區域的圖片高出 2%。這項測試可驗證在測量黃色 (暖色) 或藍色 (冷色) 區域時,圖片是否具有平衡的 RGB 值。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
通過:AE 和 AWB 檢查都通過。
圖 129. 以較高曝光值測量黑暗區域。
圖 130. 曝光不足的畫面測量較亮區域。
失敗機制:
這項測試必須準確偵測所有四個 ArUco 標記。如果初始偵測失敗,系統會嘗試使用圖片的黑白版本進行第二次偵測。下列灰階圖片代表次要處理步驟:
圖 131. ArUco 標記未對齊。
test_color_correction_mode_cct
針對不同色溫和色調測試 COLOR_CORRECTION_MODE
,驗證 RGB 比率在擷取場景 scene8 中的變化。
測試的 API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE
android.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
通過:RGB 比率會顯示相對於所選色溫和色調的預期增量或減量。
測試略過條件
如果符合下列任一條件,系統就會略過 test_color_correction_mode_cct
測試:
- 裝置的首個 API 級別 (
first_api_level
) 為 35 以下。 - 裝置未在
COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
中宣傳COLOR_CORRECTION_MODE_CCT
。
scene9
scene9
由數千個隨機大小和顏色的圓形組成,用於建立重複性極低的場景,以便測試 JPEG 壓縮演算法。
圖 132. 場景 9 範例。
test_jpeg_high_entropy
測試相機 JPEG 壓縮功能是否可在熵值高且 JPEG 畫質因子設為 100% 的 scene9
上運作。縮放倍率會增加,以便確認平板電腦上顯示的場景是否會填滿攝影機的 FoV。
測試的 API:
通過:JPEG 檔案已正確壓縮、寫入,並從磁碟讀取。
test_jpeg_quality
測試攝影機的 JPEG 壓縮畫質。透過 android.jpeg.quality
逐步調整 JPEG 品質,並驗證量化表是否正確變更。
測試的 API:
通過:量化矩陣會隨著品質提升而減少。(矩陣代表除數)。
圖 133. Pixel 4 後置鏡頭的亮度和色度 DQT 矩陣平均值與 JPEG 品質。
圖 134. 失敗的測試範例。
scene_video
scene_video
是影片場景,其中包含四個不同顏色的圓圈,以不同的影格速率在白色背景中來回移動。
圖 135. scene_video 示例。
test_preview_frame_drop
測試要求的預覽影格速率是否在動態場景中維持不變。這項測試會在所有向第三方應用程式公開的攝影機上執行。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
通過:預覽影格速率達到要求影格速率範圍的最高值,且連續影格之間的平均變化幅度低於測試中設定的相對容差。
scene_extensions
scene_extensions
測試適用於相機擴充功能,且必須使用 Camera ITS-in-a-Box,因為這類測試需要精確控制測試環境。此外,所有光線洩漏都必須受到控制。這可能需要用防水布蓋住測試架、DUT 和平板電腦,並消除 DUT 前螢幕的光線洩漏。
scene_hdr
scene_hdr
情境包含左側的肖像和右側的低對比 QR code。
圖 136. scene_hdr 範例。
test_hdr_extension
測試 HDR 擴充功能。在啟用和未啟用擴充功能的情況下擷取影像,並檢查擴充功能是否可讓 QR code 更容易偵測。
測試的 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
通過:HDR 擴充功能可減少偵測 QR code 所需的對比度變更次數,或減少 QR code 的漸層。
scene_low_light
scene_low_light
場景由黑色背景上的不同灰階方塊網格組成,而方塊網格則以紅色輪廓框住。正方形會以 Hilbert 曲線方向排列。
圖 137. scene_low_light 示例。
test_night_extension
測試 Night 擴充功能。啟用擴充功能後進行擷取,並執行下列操作:
- 偵測 20 個方塊
- 計算每個正方形所界定的亮度
- 根據 Hilbert 曲線格線方向,計算前 6 個方塊的平均亮度值
- 計算連續方塊的亮度值差異 (例如方塊 2 減去方塊 1) 至方塊 5 和 6 (方塊 6 減去方塊 5),並找出這 5 個計算差異的平均值。
如果是搭載 Android 16 以上版本的裝置,擷取要求會包含計量區域,對應矩形會界定方格網格。這項新增功能會變更通過門檻的條件。
測試的 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Pass:
- 如果是搭載 Android 16 以上版本的裝置,前 6 個方塊的平均亮度值必須至少為 80,且連續方塊的平均亮度差異 (至第 5 和第 6 個方塊) 至少為 18.75。
- 對於搭載 Android 15 以下版本的裝置,前 6 個方塊的亮度平均值必須至少為 85,且連續方塊 (至第 5 和第 6 個方塊) 的亮度平均差異至少為 17。
下列亮度圖表顯示通過測試的結果。
圖 138. 低光源夜景通過測試的範例。
test_low_light_boost_extension
測試 低光源增強 AE 模式。如果 Camera2 支援低光增強 AE 模式,則會為 Camera2 執行這項測試。如果支援夜間模式相機擴充功能,且擴充功能支援低光增強自動曝光模式,則也會針對夜間模式相機擴充功能執行這項測試。這項測試會將 AE 模式設為低光源增強模式,從預覽畫面擷取影格,並執行下列操作:
- 偵測 20 個盒子
- 計算每個方塊內的亮度
- 根據 Hilbert 曲線格線方向,計算前 6 個方塊的平均亮度值
- 計算連續方塊的亮度值差異 (例如方塊 2 減去方塊 1) 至方塊 5 和 6 (方塊 6 減去方塊 5),並找出這 5 個計算差異的平均值。
如果是搭載 Android 16 以上版本的裝置,擷取要求會包含計量區域,對應矩形會界定方格網格。這項新增功能會變更通過門檻的條件。
測試的 API:
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass:
對於搭載 Android 16 以上版本的裝置,前 6 個方塊的平均亮度值至少須為 54,且連續方塊的平均亮度差異 (至第 5 和第 6 個方塊) 至少須為 17。
搭載 Android 15 以下版本的裝置,前 6 個方塊的亮度平均值必須至少為 70,且連續方塊 (至第 5 和第 6 個方塊) 的亮度平均差異至少為 18。
scene_tele
scene_tele
測試的一項重要規定是,圖表距離至少必須是望遠鏡頭的最小對焦距離。由於不同裝置的最低對焦距離可能不同,您必須根據特定望遠鏡頭設定裝置。
圖 139. 根據廣角和望遠鏡頭的對焦距離設定 scene_tele。
如要進一步瞭解測試硬體設定,請參閱「Tele 擴充裝置設定」。
scene6_tele
scene6_tele
場景包含白色背景上的 ArUco 標記格狀排列。
如果 scene6_tele
擷取畫面在模組式裝置架中看起來過曝,請移除模組式裝置架的前板。
將 WFoV 測試架從延長線中拔除,並移除手機架。
圖 140. 將 WFoV 測試架從延長線中拔除,並移除手機架。
圖 141. 取下前面板。
test_zoom_tele
測試相機從廣角鏡頭變焦到望遠鏡頭的行為。這項測試與 test_zoom
相同,但會測試相機從廣角鏡頭變焦到望遠鏡頭的行為。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:相機根據要求的縮放比例正確顯示所擷取的 ArUco 標記相對大小,以便確認相機是否正確縮放,且標記與圖片中心的距離會根據 test_zoom
中列出的條件變更。
test_preview_zoom_tele
測試相機從廣角鏡頭變換到望遠鏡頭時,預覽影格變焦的行為。這項測試與 test_preview_zoom
相同,但會測試相機從廣角鏡頭變焦到望遠鏡頭的預覽影格行為。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:相對於要求的縮放比例,擷取的 ArUco 標記的相對大小正確無誤,可驗證相機是否正確縮放,且標記與圖片中心的距離會根據 test_preview_zoom 中列出的條件變更。
scene7_tele
scene7_tele
與 scene7
相同,但已設定為測試望遠鏡頭。這是一個矩形框架,分成四個相等的象限,每個象限都填入不同的顏色。矩形中央的斜邊圖表可用於檢查影像銳利度。四個 ArUco 標記會與矩形的四個外角對齊,以便在不同縮放比例下取得主矩形框架的正確座標。
test_multi_camera_switch_tele
這項測試會驗證在以不同變焦比率錄製預覽畫面時,廣角 (W) 和望遠 (tele) 鏡頭之間的切換會產生相似的 RGB 值。
這項測試會在預先定義的範圍內使用不同的縮放比例,執行動態預覽錄影,並找出實體相機變更的時間點。這個點代表從廣角鏡頭切換到望遠鏡頭。
系統會分析在交叉點及交叉點之前擷取的畫面,以便進行 AE、AWB 和 AF 分析。
AE 檢查會驗證亮度變化是否在預期範圍內,無論是廣角鏡頭或望遠鏡頭的圖像皆是如此。AWB 檢查會驗證紅綠和藍綠的比例是否在廣角和望遠鏡頭圖像的閾值範圍內。自動對焦檢查會根據 W 和望遠鏡頭圖像之間的平均漸層大小,評估銳利度預估值。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
通過:AE、AWB 和 AF 檢查都必須通過,測試才能通過。以下是各項檢查的標準:
- AE 檢查:廣角鏡頭和望遠鏡頭圖像之間的亮度差異必須小於 4%。
- AWB 檢查:在 LAB 色彩空間中,廣角和望遠鏡的紅綠和藍綠之間的差異值不得超過 10。
- AF 檢查:望遠鏡頭的圖像清晰度必須高於廣角鏡頭。
scene_flash
scene_flash
測試需要在感應器融合方塊中顯示黑暗場景。
test_auto_flash
測試後置鏡頭和前置鏡頭在昏暗場景中是否會觸發自動閃光燈。對於前置鏡頭,自動閃光燈會使用螢幕照亮場景,而不是實體閃光燈。這項測試會檢查啟用自動閃光功能時,圖塊圖片的中心是否較亮,藉此驗證系統是否已觸發自動閃光功能。如要觸發自動閃光功能,必須關閉測試架中的燈光。您可以使用 Arduino 控制器自動關閉燈光。場景必須完全無光,測試才能正常運作。測試前,必須先在裝置上安裝 Jetpack Camera 應用程式 (JCA)。後置鏡頭的自動閃光燈會依據 AE 狀態觸發,但前置鏡頭的自動閃光燈不會依據 AE 狀態觸發,且一律會觸發。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
通過:啟用自動閃光燈的圖塊圖片中心比所有攝影機的原始場景圖片更亮。
test_flash_strength
測試 SINGLE
模式中的閃光燈強度控制是否正確實作。
確認裝置在 SINGLE
模式下使用相機時,是否支援閃光燈強度控制功能,並根據不同的要求強度等級變更閃光燈強度。驗證閃光燈強度控制功能是否可與不同的 AE_MODES
搭配運作。舉例來說,如果自動曝光模式為 ON
或 OFF
,閃光燈強度等級就會影響亮度;如果模式為 ON_AUTO_FLASH
,閃光燈強度等級就不會影響亮度。
如要進行測試,必須關閉測試架中的燈光。燈光可透過 Arduino 控制器自動關閉。場景必須完全無光,測試才能正常運作。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Pass:
當自動曝光模式為 ON
或 OFF
時,閃光燈強度等級從無閃光增加到 FLASH_SINGLE_STRENGTH_MAX_LEVEL
,圖片區塊的亮度也會隨之增加。當自動曝光模式為 ON_AUTO_FLASH
時,當閃光燈強度從不閃光增加到 FLASH_SINGLE_STRENGTH_MAX_LEVEL
時,圖片補丁的亮度差異會在容許值範圍內。
test_led_snapshot
測試 LED 快照是否不會使圖像過飽和或產生色調。
這項測試會在 Sensor Fusion Box 中新增照明控制器,用於控制燈具。當燈光設為 OFF
時,測試會擷取設定為 AUTO_FLASH
的 AUTO_FLASH
模式。ON
在這個擷取期間,測試會執行預擷取序列,並將 aePrecapture
觸發條件設為 START
,並將擷取意圖設為 Preview
,以便使用閃光燈擷取相片。
由於快門有閃光造成的特殊熱點,因此這項測試會計算整個快照的閃光圖片平均值,並驗證該值是否在 (68, 102) 範圍內。為了檢查圖片是否有合理的白平衡,這項測試會計算紅綠和藍綠的比例,並驗證比例是否介於 0.95 和 1.05 之間。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
通過:紅綠和藍綠比率介於 0.95 和 1.05 之間。閃光圖片的平均值介於 (68, 102) 之間。
test_night_mode_indicator
測試夜間模式指標的功能。這項功能可指出相機是否在低光源環境下運作,並可從夜間模式相機擴充功能的靜態影像擷取功能中受益。這項功能僅適用於支援夜間模式相機擴充功能的裝置。
這項測試會檢查夜間模式指示燈是否正確反映相機預覽畫面中的光線條件。測試會執行下列步驟:
- 初始化:這項測試會初始化
ItsSession
,並擷取相機屬性。並與照明控制器建立連線。 - 略過條件:如果裝置不支援所需的 API 級別或夜間模式指標功能,系統會略過測試。
- Camera2 工作階段:
- 這項測試會使用
Camera2
工作階段啟動預覽擷取工作階段。 - 燈號會亮起,並擷取預覽畫面。
- 這項測試會驗證夜間模式指標是否處於
OFF
狀態。 - 燈光關閉,並擷取預覽畫面。
- 這項測試會驗證夜間模式指標是否處於
ON
狀態。
- 這項測試會使用
- 相機擴充功能工作階段:
- 這項測試會重複
Camera2
工作階段的相同程序,但使用CameraExtension
工作階段和EXTENSION_NIGHT
擴充功能。
- 這項測試會重複
- 清理:測試會關閉
ItsSession
並釋放照明控制器。
測試的 API:
Pass:
- 燈亮時,夜間模式指示燈應處於
OFF
狀態。 - 燈光關閉時,夜間模式指示燈應處於
ON
狀態。 - 適用於
Camera2
和CameraExtension
工作階段。
test_preview_min_frame_rate
測試預覽畫面在昏暗場景中是否正確降低影格速率。為確保這項測試能正常運作,測試裝置中的燈光必須由控制器關閉,或由測試操作員手動關閉。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
通過:預覽影格速率達到要求的影格速率範圍下限,且影格之間的差異小於測試中設定的絕對容差。
test_torch_strength
測試 TORCH
模式中的閃光燈強度控制是否正確實作。
確認裝置在 TORCH
模式下使用相機時,是否支援閃光燈強度控制功能,並根據不同的要求強度等級變更手電筒強度。驗證閃光燈強度控制功能是否可與不同的 AE_MODES
搭配運作。舉例來說,如果自動曝光模式為 ON
或 OFF
,閃光燈強度等級會影響亮度;如果模式為 ON_AUTO_FLASH
,閃光燈強度等級就不會影響亮度。驗證在連拍期間,手電筒強度是否維持不變,模擬錄影工作階段。如要進行測試,必須關閉測試架中的燈光。您可以使用 Arduino 控制器自動關閉燈光。場景必須完全黑暗,測試才能正常運作。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Pass:
當自動曝光模式為 ON
或 OFF
時,圖片快門斑塊的亮度會隨著閃光燈強度等級從無閃光燈到 FLASH_TORCH_STRENGTH_MAX_LEVEL
而增加。當自動曝光模式為 ON_AUTO_FLASH
時,隨著閃光燈強度等級從無閃光到 FLASH_TORCH_STRENGTH_MAX_LEVEL
,圖片連拍區塊的亮度差異會在容許範圍內。
sensor_fusion
感應器融合測試需要在格狀圖案和 ArUco 標記前,以特定方式移動手機。為獲得最佳結果,請確認測試圖表已平放。非平面圖表會影響許多測試的旋轉計算。圖表必須以 17x17 英寸的尺寸列印,填滿感應器融合盒的背面。(43x43 cm)。sensor_fusion
測試可透過 Sensor Fusion Box 自動執行。
圖 142. 感應器融合圖表。
圖 143. 填滿感應器融合方塊背面的感應器融合圖表。
test_lens_intrinsic_calibration
測試鏡頭因光學影像穩定技術 (OIS) 而移動時,鏡頭內在的光學中心是否會變更。如果支援鏡頭內在樣本,請測試鏡頭因 OIS 而移動時,鏡頭內在樣本的光學中心是否會變更。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
通過:鏡頭的光學中心發生 1 像素或以上的內在變化。如果支援鏡頭內在樣本,鏡頭內在樣本的光學中心會變更 1 個像素以上。
下圖為 test_lens_intrinsic_calibration
圖表範例,顯示每個影格在像素中的主要點變化:
圖 144. 範例:test_lens_intrinsic_calibration 圖表,顯示每個影格在像素中的主要點變化。
test_multi_camera_frame_sync
透過計算格狀圖中的正方形角度來判斷時間戳記,測試邏輯攝影機擷取的框架時間戳記是否在 10 毫秒內。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
通過:當手機旋轉時,各鏡頭之間的圖像角度不會有明顯變化。
test_preview_distortion
測試在不同縮放等級下拍攝的每個預覽影格,是否已修正失真情形。針對每個預覽影格,測試會根據相機內在和外在參數計算理想點。
在示例圖片中,理想點以綠色顯示,實際點則以紅色顯示。系統會根據實際點與理想點之間的 RMS 像素距離,計算失真誤差。圖片上的綠色和紅色醒目顯示用於視覺偵測失真錯誤的區域。
圖 145. 圖片:棋盤格圖,其中理想點為綠色,實際點為紅色。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
通過:每個預覽影格經過標準化後的失真誤差低於測試中設定的門檻。
test_preview_stabilization
測試穩定的預覽影片旋轉角度是否小於陀螺儀。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:影格中角度旋轉的最大值小於陀螺儀旋轉的 70%。
以下是含有及不含穩定功能的影片範例:
圖 146. 使用防震功能的影片範例。
圖 147. 未使用防震功能的影片範例。
test_sensor_fusion
測試 AR 和 VR 應用程式相機與陀螺儀之間的時間戳記差異。在棋盤格圖案前,手機旋轉 90 度 10 次。移動時間約為 2 秒。如果未納入陀螺儀,或未啟用時間戳記來源 REALTIME
參數,系統會略過這項測試。
test_sensor_fusion
測試會產生多個圖表。偵錯時最重要的兩個圖表如下:
test_sensor_fusion_gyro_events
:顯示手機在測試期間的陀螺儀事件。在 x 和 y 方向的移動表示手機未穩固固定在固定板上,因此測試通過的機率會降低。圖表中的週期數量取決於儲存影格時的寫入速度。圖 148. test_sensor_fusion 陀螺儀事件範例。
test_sensor_fusion_plot_rotations
:顯示陀螺儀和攝影機事件的對齊情形。這張圖表必須顯示相機和陀螺儀之間的移動相符,誤差範圍為 +/-1 毫秒。圖 149. test_sensor_fusion 圖表旋轉示例。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
通過:根據 CDD 中的 7.3.9 高保真感應器,相機和陀螺儀時間戳記的偏移量小於 1 毫秒。
失敗機制:
- 偏移誤差:相機-陀螺儀偏移未正確校正至 +/-1 毫秒內。
- 影格掉落:管道速度不夠快,無法連續擷取 200 個影格。
- 通訊端錯誤:
adb
無法可靠地連線至 DUT,導致執行測試的時間不足。 - 圖表未平整安裝。圖表
test_sensor_fusion_plot_rotations
包含影格,當相機旋轉至圖表中非平坦的部分時,陀螺儀和相機旋轉角度會大幅變化。 - 攝影機未平放。圖表
test_sensor_fusion_gyro_events
會顯示 X 和 Y 平面的移動情形。這種故障最常發生在前置鏡頭,因為後置鏡頭通常會比手機機身其他部分突出,因此當手機背面安裝在固定板時,會產生傾斜。
test_video_stabilization
測試穩定的影片旋轉角度是否小於陀螺儀。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:影格上角度旋轉的最大值小於陀螺儀旋轉的 60%。
以下是含有及不含防震功能的影片範例。
圖 150. 使用防震功能的影片範例。
圖 151. 未使用防震功能的影片範例。
test_video_stabilization_jca
測試結果顯示,使用 JCA 擷取的穩定影片旋轉角度小於陀螺儀。測試前必須先在裝置上安裝 JCA。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.CamcorderProfile
android.media.MediaRecorder
通過:從使用 JCA 擷取的影片中擷取影格時,影格最大角度旋轉角度小於陀螺儀旋轉角度的 70%。
feature_combination
feature_combination
測試會驗證在同時啟用多個攝影機功能時,功能是否能正常運作。這些測試會使用與感應器融合場景相同的格紋圖片。
test_feature_combination
測試攝影機裝置支援的所有串流組合、影片防震模式、目標 FPS 範圍、10 位元 HDR 影片和 Ultra HDR 的組合。
針對 Android 16 以上版本,測試會執行所有支援功能的組合,並將結果記錄到 proto 檔案中。只有在 isSessionConfigurationSupported
傳回 True
的功能組合時,才會呼叫失敗斷言。
測試的 API:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
通過:針對每個支援的功能組合:
- 開啟預覽防震功能後,預覽串流會保持穩定。
- 預覽影格速率落在設定的
AE_TARGET_FPS_RANGE
範圍內。 - 錄製的預覽串流色域與設定的色域相符。
- Ultra HDR 擷取內容含有有效的增益對應圖。
scene_ip
在 Android 16 以上版本中,場景 scene_ip
會啟用預設相機應用程式和 Jetpack 相機應用程式 (JCA) 之間的圖片對應檢查功能,以便找出擷取圖片之間的主要差異。JCA 會複製社群媒體應用程式擷取的內容,並提供基準圖片,供社群媒體應用程式處理及精修。
硬體設定需求
scene_ip
測試需要下列硬體設定:
- 測試會在 第 2 代攝影機 ITS-in-a-box 中執行。
- Gen2 架構的照明和伺服控制器可用於控制測試環境
- 第 2 代測試裝置內放置測試功能圖表。
圖 152. Gen2chart_sample 範例。
測試略過條件
如符合下列任一條件,系統就會略過 scene_ip
測試:
- 裝置的首個 API 級別 (
first_api_level
) 為 35 以下。 - 裝置不是具備前後置主要攝影機的手機裝置 (例如平板電腦或電視)。
test_default_jca_ip
使用預設相機應用程式和 JCA,在受控光源條件下拍攝測試功能圖表,並執行下列檢查:
FoV:檢查預設相機應用程式和 JCA 擷取的內容是否有相同的 FoV。這項檢查會使用從擷取的圖表圖像中擷取的中心 QR code 功能。
亮度:檢查預設相機應用程式和 JCA 之間的亮度差異是否不超過 10。這項檢查會使用動態範圍修正程式來測量亮度。
白平衡:檢查預設相機應用程式和 JCA 之間的白平衡差異是否不超過 4。這項檢查會使用動態範圍修正程式來測量亮度。
通過基本測試:測試通過 FoV、亮度和白平檢查。在 Android 16 中,這項測試並非強制執行 (NOT_YET_MANDATED
)。