本頁面提供 Camera Image Test Suite (ITS) 的完整測試清單,這是 Android Compatibility Test Suite (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
:縮放scene7
:多部攝影機切換裝置scene8
:自動曝光 (AE) 和自動白平衡 (AWB) 區域測光scene9
:JPEG 壓縮scene_extensions
:相機擴充功能scene_tele
: 切換望遠鏡頭scene_flash
:自動閃爍、最低影格速率scene_video
:影格遺失sensor_fusion
:攝影機和陀螺儀時間偏移feature_combination
: 特徵組合scene_ip
:預設相機應用程式和 Jetpack 相機應用程式 (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
測試是否能為攝影機靜音功能正確產生純色測試模式。 如果支援攝影機靜音,就必須支援純色測試模式。 如果系統不支援攝影機靜音,只有在廣告宣傳這項功能時,才會測試純色測試模式。
如果支援原始圖片,系統也會測試色彩指派功能。測試的顏色包括黑色、白色、紅色、藍色和綠色。如果相機不支援 RAW 影像,系統只會測試黑色。
測試的 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
是灰色圖表。灰色圖表必須涵蓋攝影機視野的中央 30%。灰色圖表預期會適度挑戰 3A (AE、AWB 和 AF),因為中心區域沒有特徵。不過,擷取要求會指定整個場景,其中包含足夠的 3A 收斂功能。
您可以在 WFoV 或 RFoV 測試架上測試 RFoV 攝影機。如果在 WFoV 測試裝置中測試 RFoV 攝影機,圖表會縮放 2/3,指定 FoV 中灰色圖表的某些界線,協助 3A 聚合。如要進一步瞭解攝影機測試裝置,請參閱「Camera 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
Pass:產生黑白圖片。白色圖片的飽和通道 RGB 值為 [255, 255, 255],誤差範圍小於 1%。
圖 9. test_black_white,黑色範例。
圖 10. test_black_white,白色範例。
圖 11. test_black_white,繪製平均值範例。
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 comp raw crop 示例。
圖 15. test_crop_region_raw comp 原始完整範例。
圖 16. test_crop_region_raw comp 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) 補償。測驗分為基本和進階兩部分。
基本部分會測試 EV 補償是否使用以 CONTROL_AE_COMPENSATION_STEP
建立的範圍套用。每個補償值都會擷取八個影格。
進階部分會分八個步驟增加曝光度,並檢查測得的亮度與預期亮度是否相符。預期值是根據未套用 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*exposure 值保持不變時,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 影格 1 範例。
圖 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 = unity、1 = 紅色增強,2 = 藍色增強。
圖 42. test_param_color_correction req=0 Unity 範例。
圖 43. test_param_color_correctness req=1 紅色提升範例。
圖 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 關閉的影像,並將此影像的變異數做為基準。訊噪比越高,圖像品質越好。
測試的 API:
通過:訊噪比會因降噪模式而異,且與下圖類似:
圖 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 高增益 nr=1 範例。
圖 52. test_param_noise_reduction 高增益 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. test_param_tonemap_mode,n=1。
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 原始 s=1792 boost=0200 範例。
圖 62. test_post_raw_sensitivity_boost 原始 s=0896 boost=0400 示例。
圖 63. test_post_raw_sensitivity_boost raw s=0448 boost=0800 範例。
圖 64. test_post_raw_sensitivity_boost 原始 s=0224 boost=1600 範例。
圖 65. test_post_raw_sensitivity_boost 原始 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、快速和高品質。擷取低增益和 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
測試所有回報的圖片擷取大小和格式是否正常運作。使用線性色調對應的手動要求,讓 image_processing_utils
模組轉換 YUV 和 JPEG 時,兩者看起來相同。系統預設不會儲存圖片,但你可以啟用 debug_mode
來儲存圖片。
測試的 API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
通過:所有圖片中心在 RGB 轉換圖片中的均方根 (RMS) 差異 (訊號值) 上限,為最高解析度 YUV 圖片的 3%。
圖 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 雜訊模型,請下載這份文件。
測試的 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
通過:由於增益增加,每張相片都比前一張相片更吵雜。
使用中心統計資料格線儲存格的變異數。
圖 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
通過:每次拍攝時,差異都會增加。
圖 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
測試各種 ISO 設定,確認 ISO 值越高,雜訊程度就越高。CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
測試的 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
測試
顯示 P3
使用 ColorSpaceProfiles
API 以 JPEG 格式擷取。測試擷取的 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
這項測試會比較啟用 AE 的擷取畫面與停用 AE 的擷取畫面,後者會手動套用在啟用 AE 的擷取畫面 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 圖片與 STILL_CAPTURE
用途的 YUV 圖片的 RMS 差異小於 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
根據 CDD 2.2.7.2 節「相機」的規定,測試 S 效能類別的 JPEG 擷取延遲時間。
通過:在 ITS 照明條件 (3000K) 下,使用 CTS 攝影機 PerformanceTest 測量時,主要攝影機的 camera2 JPEG 擷取延遲時間必須 < 1000 毫秒 (1080p 解析度)。
test_camera_launch_perf_class
根據 CDD 2.2.7.2 節「相機」的規定,測試 S 效能類別的相機啟動延遲。
通過:在 ITS 照明條件 (3000K) 下,使用 CTS 攝影機 PerformanceTest 測量時,主要攝影機的 camera2 啟動延遲時間 (開啟攝影機到第一個預覽影格) 必須小於 600 毫秒。
test_default_camera_hdr
測試預設相機擷取功能是否為 Ultra HDR,以符合 CDD 2.2.7.2 節「相機」中規定的效能等級 15。
通過:預設相機套件擷取內容必須為 Ultra HDR,才能達到效能等級 15 裝置的要求。
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
通過:3A 系統會在擷取 50 個影格後完成調整。
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 rad2/s2/Hz。
- 在測試期間,旋轉向量的飄移量小於 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
清晰度有變化。
失敗機制:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
is asserted only in frames where sharpness isn't changing.- 與最佳焦距的前幾個影格或最短焦距的後幾個影格相比,
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) 的影格清晰度有差異。test_log.DEBUG
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 開始,您可以在工具目錄中使用 check_alignment.py
,檢查 DUT 和圖表是否對齊。
圖 116. scene4 範例。
test_30_60fps_preview_fov_match
測試 30 FPS 和 60 FPS 的預覽影片是否具有相同的視野。這項測試會擷取兩部影片,一部為 30 FPS,另一部為 60 FPS。系統會從每部影片中選取代表性影格並進行分析,確認兩部影片的視野變化符合規格。測試圓形的長寬比是否維持不變、圓心是否保持穩定,以及圓形半徑是否維持不變。
測試的 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%,且保留最大可能視野。
失敗機制:
- 攝影機未對齊平板電腦上顯示的圓圈,該圓圈位於拍攝場景的中央。
- 處理管道會使擷取的圖片中的圓形失真。
- 圖片管道會將低解析度圖片裁剪兩次,因此高解析度和低解析度圖片的視野不同。
- 由於擷取要求採用極端的顯示比例,導致圖片高度或寬度縮小,因此擷取圖片中的圓圈會遭到裁剪。
- 拍攝的圓形圖片中央有倒影,且未完全填滿。
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%,且保留最大可能視野。
test_preview_stabilization_fov
檢查支援的預覽大小,確保視野已適當裁剪。測試會擷取兩部影片,一部使用預覽防震功能 ON
,另一部則使用預覽防震功能 OFF
。系統會從每部影片中選取代表性影格,並進行分析,確認兩部影片的視野變化符合規格。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:圓圈的顯示比例大致維持不變、圓圈中心位置保持穩定,且圓圈大小的變化幅度不超過 20%。
test_video_aspect_ratio_and_crop
以所有影片格式拍攝正方形內的圓形。擷取關鍵影格,並確認圓形的長寬比不會改變、裁剪後的圖片會將圓形置中,且圓形大小不會因格式或解析度不同而改變 (FoV 檢查)。
測試的 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%,且保留最大可能視野。
scene5
scene5
需要光線均勻的灰色場景。方法是在相機鏡頭上放置擴散器。建議使用以下擴香器:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
。
如要準備場景,請在攝影機前方裝上柔光罩,並將攝影機對準約 2000 勒克斯的光源。為 scene5
拍攝的影像必須採用漫射光,且不得有明顯特徵。以下是範例圖片:
圖 117. scene5 擷取範例。
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. scene6 範例。
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
通過:縮小裁剪後的原始影像與完整視野原始影像之間的 3D RMS 差異,小於測試中設定的門檻。
test_zoom
測試相機從超廣角鏡頭到廣角鏡頭的變焦行為。在縮放範圍內拍攝影像,並檢查 ArUco 標記是否會隨著攝影機鏡頭拉近而變大。這項測試也會檢查中心標記的位置是否在每次擷取時,以可預測的方式變更。中心標記中心到圖片中心的距離,可以根據縮放比例以固定速率變化,直到切換實體攝影機為止;也可以在切換實體攝影機後,朝向同一標記的位置單調變化。測試前,裝置必須安裝 Jetpack Camera App (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:測試縮放,找出最靠近中心的 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
通過:每個支援的 SessionConfiguration
都能達到最小和最大縮放比例,如 CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
所列。
scene7
scene7
是矩形框架,分成四個大小相等的象限,每個象限填入不同顏色。矩形中央是斜邊圖表,用於檢查銳利度。四個 ArUco 標記會與矩形的四個外角對齊,協助在不同縮放比例下取得主要矩形框架的準確座標。
圖 125. scene7。
test_multi_camera_switch
這項測試會驗證在不同縮放比例的預覽錄影期間,切換超廣角 (UW) 和廣角 (W) 鏡頭時,是否會產生類似的 RGB 值。
這項測試會使用預先定義範圍內的不同縮放比例,執行動態預覽錄製作業,並找出實體相機變更的點。這個點標示從 UW 鏡頭到 W 鏡頭的交叉點。
系統會分析在交叉點和之前擷取的影格,以進行自動曝光 (AE)、自動白平衡 (AWB) 和自動對焦 (AF)。
AE 檢查會驗證 UW 和 W 鏡頭影像的亮度變化是否在預期範圍內。AWB 檢查會驗證 UW 和 W 鏡頭圖片的紅綠和藍綠比例是否在閾值內。AF 檢查會根據 UW 和 W 鏡頭影像之間的平均梯度大小,評估銳利度估計值。
執行這項測試時,如果疊紋效應干擾結果,請使用相機 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_regions
和awb_regions
,UW 和 W 鏡頭影像之間所有色塊的亮度變化 (Y 值) 必須小於 4%。如果只支援ae_regions
,則只有灰色的色塊值必須符合條件。 - 自動白平衡檢查:如果裝置同時支援
ae_regions
和awb_regions
,UW 和 W 鏡頭圖像的紅綠和藍綠值差異必須小於 3% (適用於灰色色塊),且小於 10% (適用於其他色塊)。 - 自動對焦檢查:W 鏡頭拍攝的影像銳利度必須高於 UW 鏡頭拍攝的影像銳利度。
圖 126. 使用超廣角鏡頭拍攝的灰色色塊。
圖 127. 使用 W 鏡頭拍攝的灰色色塊。
scene8
scene8
是劃分成四個相等區域的矩形框架,每個區域都包含以不同曝光度拍攝或疊加不同色調 (藍色調、增加曝光度、減少曝光度、黃色調) 的人像照。四個 ArUco 標記與矩形的四個外角對齊,可取得主矩形框架的準確座標。
圖 128. scene8 示例。
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
不同色溫和色調,根據擷取場景 (scene8) 驗證 RGB 比例變化。
測試的 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. scene9 範例。
test_jpeg_high_entropy
測試相機 JPEG 壓縮功能是否適用於高熵的 scene9
,且 JPEG 品質因數設為 100%。放大倍率會增加,以確認平板電腦上顯示的場景填滿攝影機的視野。
測試的 API:
通過:JPEG 檔案已正確壓縮、寫入,並從磁碟讀回。
test_jpeg_quality
測試攝影機的 JPEG 壓縮品質。逐步調整 JPEG 品質,並驗證量化表是否正確變更。android.jpeg.quality
測試的 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
場景:黑色背景上有一格格不同深淺的灰色方塊,這些方塊以紅色外框為界。這些方塊會以希爾伯特曲線方向排列。
圖 137. scene_low_light 範例。
test_night_extension
測試 Night extension。 啟用擴充功能後擷取畫面,並執行下列操作:
- 偵測 20 個正方形
- 計算每個方塊所限定的亮度
- 根據希爾伯特曲線格線方向,計算前 6 個方格的平均亮度值
- 計算連續方格的亮度值差異 (例如方格 2 - 方格 1),最多計算到方格 5 和 6 (方格 6 - 方格 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 模式,系統也會對夜間模式相機擴充功能執行這項測試。這項測試會將 AE 模式設為低光源增強,從預覽畫面擷取影格,並執行下列動作:
- 偵測 20 個方塊是否存在
- 計算每個方塊所限定的亮度
- 根據希爾伯特曲線格線方向,計算前 6 個方格的平均亮度值
- 計算連續方格的亮度值差異 (例如方格 2 - 方格 1),最多計算到方格 5 和 6 (方格 6 - 方格 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) 和望遠鏡頭時,是否會產生類似的 RGB 值。
這項測試會使用預先定義範圍內的不同縮放比例,執行動態預覽錄製作業,並找出實體相機變更的點。這個點代表從 W 鏡頭切換到望遠鏡頭。
系統會分析在交叉點和交叉點之前擷取的影格,以瞭解 AE、AWB 和 AF。
AE 檢查會驗證 W 和望遠鏡頭影像的亮度變化是否在預期範圍內。AWB 檢查會驗證 W 和望遠鏡頭圖片的紅綠和藍綠比率是否在閾值內。AF 檢查會根據 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 檢查:W 和望遠鏡頭圖片之間的亮度變化必須小於 4%。
- 自動白平衡檢查:在 LAB 色域中,廣角和望遠鏡頭的紅綠色和藍綠色之間的 Delta C 不得超過 10。
- 自動對焦檢查:望遠鏡頭的影像銳利度必須高於廣角鏡頭。
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 快照是否會使圖片飽和或染色。
這項測試會在感應器融合盒中新增燈光控制器,藉此控制燈光。將燈光設為 OFF
後,測試會以 ON
模式擷取畫面。AUTO_FLASH
在擷取期間,測試會執行前擷取序列,並將 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 公分)。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_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 個影格。
- Socket 錯誤:
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 擷取測試功能圖表,並執行下列檢查:
視野:檢查預設相機應用程式和 JCA 擷取的視野是否相同。這項檢查會使用從擷取圖表圖片中擷取的中心 QR code 功能。
亮度:檢查預設相機應用程式和 JCA 測得的亮度差異是否超過 10。這項檢查會使用動態範圍修補程式來測量亮度。
白平衡:檢查預設相機應用程式和 JCA 之間的白平衡差異是否超過 4。這項檢查會使用動態範圍修補程式來測量亮度。
通過基本部分:通過視野、亮度及白平衡檢查。在 Android 16 中,這項測試並非必要 (NOT_YET_MANDATED
)。