本頁面提供相機影像測試套件 (ITS) 的完整測試清單,該套件是 Android Compatibility Test Suite (CTS) 驗證工具的一部分。ITS 測試屬於功能測試,也就是說,這類測試不會評估影像品質,而是確認所有宣傳的相機功能是否正常運作。這份文件可協助開發人員和測試人員瞭解個別測試的作用,以及如何對測試失敗進行偵錯。
ITS 測試會隨著每個 Android 版本更新或新增,詳情請參閱該 Android 版本的 Camera ITS 版本資訊。更新內容是根據使用者或開發人員回報的錯誤而定。新增項目是由使用者或開發人員回報的錯誤,以及驗證新相機架構功能的正確行為所驅動。
在 Android 17 以上版本中,Camera ITS 測試在 CTS 驗證器中會分割為兩項活動,以便平行執行並縮短測試時間:一項活動用於 feature_combination 和 sensor_fusion 測試,另一項活動則用於所有其他測試。詳情請參閱「縮短測試時間」。
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:顯示比例、裁剪、視野scene6:Zoomscene7:多鏡頭切換scene8:自動曝光 (AE) 和自動白平衡 (AWB) 區域測光scene9:JPEG 壓縮scene_extensions:相機擴充功能scene_tele:切換望遠鏡頭scene_video:影格遺失
feature_combination:功能組合scene_flash:自動閃光燈、最低影格率scene_gen2_chart:使用 Gen2 紙圖表進行測試scene_ip:預設相機應用程式和 Jetpack Camera App (JCA) 的圖片一致性sensor_fusion:相機和陀螺儀時間偏移
scene5:鏡頭陰影
scene_wide_gamut:廣色域色彩設定檔和範圍
如需各場景的說明,請參閱個別章節。
平板電腦測試場景
scene0
測試不需要特定場景資訊。不過,手機必須保持靜止,才能進行陀螺儀和震動測試。
test_jitter
測量相機時間戳記的抖動。
測試的 API:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
通過:影格之間的差異至少為 30 毫秒。
在下圖中,請注意 y 軸範圍很小。這張圖中的抖動其實很小。
圖 1. test_jitter 圖。
test_metadata
測試中繼資料項目的有效性,查看擷取結果和相機特性物件。這項測試會使用 auto_capture_request 曝光和增益值,因為圖片內容並不重要。這項測試會快速失敗,因為執行時間短、設定需求極低,且會指出下游有大量測試失敗。test_metadata 測試通過前,不應執行整個測試套件。
測試的 API:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVELandroid.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPEandroid.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERNandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
通過:硬體層級、rollingShutterSkew、frameDuration 標記、timestampSource、croppingType、blackLevelPattern、pixel_pitch、視野 (FoV) 和超焦距均存在且具有有效值。
test_request_capture_match
測試裝置是否透過讀回擷取中繼資料,寫入正確的曝光和增益值。這項測試會快速失敗,因為只需要最少的設定,且會指出下游有大量測試失敗。test_request_capture_match 通過前,不應執行整個測試套件。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
通過:要求和擷取的中繼資料值在所有鏡頭中都相符。
test_sensor_events
如果裝置宣稱支援感應器融合,這項測試會檢查裝置是否查詢並列印感應器事件。預期的感應器包括加速計、陀螺儀和磁力儀。只有在螢幕開啟時,這項測試才會運作,也就是說,裝置不能處於待機模式。這項測試會快速失敗,因為執行時間短、設定需求低,且會指出感應器融合測試失敗。除非 test_sensor_events 為「通過」或「略過」,否則不應執行 sensor_fusion 場景測試。
測試的 API:
通過:系統會接收每個感應器的事件。
test_solid_color_test_pattern
測試相機靜音時,是否能正確產生純色測試圖案。如果支援攝影機靜音功能,就必須支援純色測試模式。如果裝置不支援攝影機靜音功能,只有在裝置宣稱支援這項功能時,才會測試純色測試圖案。
如果支援原始圖片,系統也會測試顏色指派。測試的顏色包括黑色、白色、紅色、藍色和綠色。如果相機不支援 RAW 圖片,則只會測試黑色。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATAandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
通過:支援的純色測試圖案顏色正確,且圖片差異不大。
test_test_pattern
測試 android.sensor.testPatternMode 參數,擷取每個有效測試模式的影格,並檢查是否正確產生純色和彩條的影格。這項測試包含下列步驟:
- 擷取所有支援測試模式的圖片。
- 對純色測試圖案和彩條執行正確性檢查。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.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_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
通過:YUV 和 RAW 看起來很相似。
圖 3. test_tonemap_curve 原始範例。
圖 4. test_tonemap_curve YUV 範例。
test_unified_timestamp
測試圖片和動作感應器事件是否在同一個時間網域。這項測試會快速失敗,因為執行時間短、設定需求低,且會指出感應器融合測試失敗。除非 test_unified_timestamp 為「PASS」或「SKIP」,否則不應執行 sensor_fusion 場景測試。
測試的 API:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.hardware.Sensor#TYPE_GYROSCOPE
通過:動作時間戳記介於兩個圖片時間戳記之間。
test_vibration_restriction
測試裝置的震動功能是否正常運作。
測試的 API:
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.os.Vibratorandroid.hardware.camera2.CameraDevice#setCameraAudioRestriction
通過:裝置在相機音訊限制 API 靜音時不會震動。
scene1_1
scene1是灰色圖表。灰階圖表必須涵蓋相機視野中央 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_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATE
通過:AE 收斂。
test_auto_vs_manual
測試自動和手動拍攝的相片,確認兩者看起來相同。
測試的 API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.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_TIMEandroid.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:
Pass:拍攝一系列完整大小的圖片,檢查是否有影格遺失和圖片亮度問題。
test_burst_sameness_manual
使用手動拍攝設定連拍 5 次,每次 50 張,並檢查所有相片是否完全相同。這項測試可用來判斷是否有零星影格的處理方式不同,或有不自然感。
測試的 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSORandroid.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_SIZEandroid.hardware.camera2.CaptureResult#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
通過:YUV 圖片會置中裁剪,但 RAW 圖片不會。
圖 14. test_crop_region_raw comp raw 裁剪範例。
圖 15. test_crop_region_raw comp raw 完整範例。
圖 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_SIZEandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
合格:裁剪區域的圖片與裁剪圖片對應的小塊相符。
test_ev_compensation
測試是否已套用曝光值 (EV) 補償。測驗分為基本和進階兩部分。
基本部分會使用 CONTROL_AE_COMPENSATION_STEP 建立的範圍,測試是否套用 EV 補償。每個補償值會擷取八個影格。
進階部分會分八個步驟增加曝光,並檢查測得的亮度與預期亮度。預期值是根據未套用 EV 補償的圖片亮度計算得出,如果計算出的值超過實際圖片值範圍,預期值就會飽和。如果預期值和測量值不符,或圖片在五個步驟內過度曝光,測試就會失敗。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATIONandroid.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCKandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.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_TIMEandroid.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_RANGEandroid.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCKandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
通過:R、G、B 值必須隨著敏感度提高而線性增加。
圖 37. test_linearity 圖表平均值範例。
test_locked_burst
測試 3A 鎖定和 YUV 爆發 (使用自動設定)。這項測試旨在確保即使在沒有 MANUAL_SENSOR 或 PER_FRAME_CONTROLS 的受限裝置上也能通過。這項測試會檢查 YUV 圖片的一致性,而影格率檢查則在 CTS 中進行。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.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_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.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 紅色強化範例。
圖 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 的圖片,並以其變異數做為基準。訊噪比 (SNR) 越高,影像品質越好。
測試的 API:
通過:信噪比會因不同的雜訊抑制模式而異,行為與下圖類似:
圖 49. test_param_noise_reduction 圖表信噪比範例。
0:關閉、1:快速、2:高畫質、3:最低、4:ZSL
圖 50. test_param_noise_reduction 高增益 nr=0 範例。
圖 51. test_param_noise_reduction 高增益 nr=1 範例。
圖 52. test_param_noise_reduction 高增益 nr=2 範例。
圖 53. test_param_noise_reduction 高增益 nr=3 範例。
圖 54. test_param_noise_reduction 低增益範例。
test_param_shading_mode
測試是否已套用 android.shading.mode 參數。
測試的 API:
android.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.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_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass:
test1:兩張圖片都有線性色調對應,但n=1的漸層較陡。n=1圖片的 G (綠色) 色板較亮。test2:色調對應相同,但長度不同。圖片相同。
圖 58. test_param_tonemap_mode,n=0。
圖 59. test_param_tonemap_mode,n=1。
test_post_raw_sensitivity_boost
檢查原始敏感度提升後的結果。擷取一組具有不同感光度、後置原始感光度提升組合的原始和 YUV 圖片,並檢查輸出像素平均值是否符合要求設定。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGEandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOSTandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:原始圖片會隨著增強值增加而變暗,而 YUV 圖片的亮度則保持不變。
圖 60. test_post_raw_sensitivity_boost 原始 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_RAWandroid.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 套用至重新處理要求。在相機光線昏暗時,擷取重新處理的圖片。使用高類比增益,確認擷取的圖片有雜訊。擷取三張重新處理的圖片,分別用於關閉降噪、快速和高畫質。擷取低增益且關閉雜訊抑制的重新處理圖片,並以其變異數做為基準。
測試的 API:
通過:FAST >= OFF、HQ >= FAST,以及 HQ >> OFF。
圖 79. 一般信噪比與降噪模式圖表示例。
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_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.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_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AF_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAPandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.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_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:DNG RAW 模型參數正確。預期 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_SIZEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.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_SIZEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
通過:每次射擊的變異數都會增加。
圖 93. test_raw_sensitivity_variance。
test_yuv_plus_jpeg
測試擷取單一影格做為 YUV 和 JPEG 輸出。使用線性色調對應的手動要求,讓 YUV 和 JPEG 在由 image_processing_utils 模組轉換時看起來相同。
測試的 API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.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_RAWandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAPandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_MODEandroid.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#RAW10android.graphics.ImageFormat#RAW12
通過:YUV 和原始圖片相似,且均方根 (信號的均方根值) 差異小於 3.5%。
圖 96. test_yuv_plus_raw_shading=1_raw.jpg。
圖 97. test_yuv_plus_raw_shading=1_yuv.jpg。
test_sensitivity_priority
在各種 ISO 設定下測試 CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY,確認較高的 ISO 與雜訊程度增加之間的關聯。
測試的 API:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITYandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_MODEandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ONandroid.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
通過:ISO 越高,雜訊等級越高。
測試略過條件
如果符合下列任一條件,系統就會略過 test_sensitivity_priority.py 測試:
- 裝置的第一個 API 級別 (
first_api_level) 為 35 以下。 - 裝置不會在
CONTROL_AE_AVAILABLE_PRIORITY_MODES中 advertiseCONTROL_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_PRIORITYandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_MODEandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ONandroid.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
合格:如果 ISO 在補償範圍內,則不同曝光時間的亮度穩定 (在容許範圍內)。
測試略過條件
如果符合下列任一條件,系統就會略過 test_exposure_time_priority 測試:
- 裝置的第一個 API 級別 (
first_api_level) 為 35 以下。 - 裝置不會在
CONTROL_AE_AVAILABLE_PRIORITY_MODES中 advertiseCONTROL_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_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
通過:偵測到所有三張臉孔。
test_display_p3
使用 ColorSpaceProfiles API 測試 JPEG 格式的 Display P3 擷取功能。測試擷取的 JPEG 標頭中是否有適當的 ICC 色彩描述檔,以及圖片是否包含 sRGB 色域以外的顏色。
測試的 API:
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
通過:JPEG 包含 Display P3 ICC 色彩描述檔,以及 sRGB 色域以外的顏色。
test_effects
擷取支援的相機效果影格,並檢查是否正確生成。測試只會檢查效果 OFF 和 MONO,但會儲存所有支援效果的圖片。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTSandroid.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_SENSITIVITYandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOSTandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
通過:兩次擷取之間的相對亮度差異小於 4%。
test_format_combos
測試不同的輸出格式組合。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAPandroid.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()android.hardware.camera2.CameraCaptureSession#captureBurst()
通過:所有組合都成功擷取。
test_num_faces
測試臉部偵測。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.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#createCaptureSessionandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSINGandroid.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
通過:U 和 V 平面未互換。
圖 101. test_reprocess_uv_swap 範例。
scene2_b
scene2_b 有三張臉,背景為灰色,穿著中性色調的衣服。我們選擇了各種膚色的臉孔。圖表必須正確擺放,臉部偵測功能才能發揮最佳效果。
test_preview_num_faces
測試預覽畫面中的臉部偵測功能,在臉部場景中增加膚色多樣性。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.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_CASESandroid.hardware.camera2.CaptureRequest#JPEG_QUALITYandroid.graphics.ImageFormat#JPEG
通過:STILL_CAPTURE 用途的 YUV 和 JPEG 圖片 RMS (信號均方根值) 差異小於 3%;所有支援用途的 YUV 圖片與 STILL_CAPTURE 用途的 YUV 圖片 CIELAB 差異小於 4%。
scene2_c
test_num_faces
測試臉部偵測功能,在臉部場景中加入更多膚色。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到三張臉孔。
圖 103. test_num_faces 臉部偵測模式範例。
test_jpeg_capture_perf_class
測試 S 效能等級的 JPEG 擷取延遲時間,如 CDD 的第 2.2.7.2 節「相機」所述。
通過:在 ITS 照明條件 (3000K) 下,透過 CTS 相機 PerformanceTest 測量兩個主要相機,1080p 解析度的 camera2 JPEG 擷取延遲時間「必須」< 1000 毫秒。
test_camera_launch_perf_class
測試 S 效能等級的相機啟動延遲時間,如 CDD 的第 2.2.7.2 節「相機」所述。
通過:在 ITS 光源條件 (3000K) 下,兩個主要鏡頭的 Camera2 啟動延遲時間 (從開啟鏡頭到第一個預覽影格) 必須 < 600 毫秒 (由 CTS 鏡頭 PerformanceTest 測量)。
test_default_camera_hdr
測試效能等級 15 的預設相機拍攝功能是否為 Ultra HDR,如 CDD 2.2.7.2 節「相機」所述。
通過:效能等級 15 裝置的預設相機套件擷取功能必須為 Ultra HDR。
scene2_d
test_preview_num_faces
測試預覽畫面中的臉部偵測功能,在臉部場景中增加膚色多樣性。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:在臉部定界框中找到三個臉孔和臉部特徵。
scene2_e
test_continuous_picture
使用擷取要求優先設定 android.control.afMode = 4 (CONTINUOUS_PICTURE). 擷取 50 個 VGA 解析度影格
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureResult#CONTROL_AF_STATEandroid.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
通過:3A 系統在 50 影格擷取結束前穩定下來。
test_num_faces
測試臉部偵測功能,在臉部場景中加入更多膚色。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.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_FACESandroid.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_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:在臉部定界框中找到三個臉孔和臉部特徵。
圖 107. test_preview_num_faces 範例。
scene3
scene3 使用 ISO12233 圖表,且大多數測試都使用圖表擷取器方法,在場景中尋找圖表。因此,大部分儲存的圖片都沒有邊框 (例如場景 1、2 或 4 的圖片),只有圖表。圖表必須朝向正確方向,圖表搜尋器才能發揮最佳效果。在 Android 17 以上版本中,scene3 會使用 ArUco 標記偵測圖表。
圖 108. scene3 圖表。
test_edge_enhancement
測試 android.edge.mode 參數是否正確套用。擷取各邊緣模式的非重新處理圖片,並傳回輸出圖片的銳利度和擷取結果中繼資料。使用指定的邊緣模式、感光度、曝光時間、焦距和輸出途徑參數,處理擷取要求。在 Android 17 以上版本中,使用 ArUco 標記定義包含必要銳利邊緣的圖表區域。
通過: HQ 模式 (2) 比 OFF 模式 (0) 更清晰。FAST 模式 (1) 比 OFF 模式更清晰。HQ模式比FAST模式更清晰或相同。
測試的 API:
受影響的攝影機參數:
EDGE_MODE
圖 109. test_edge_enhancement edge=0 範例。
圖 110. test_edge_enhancement edge=1 (快速模式) 範例。
圖 111. test_edge_enhancement edge=2 (高畫質模式) 範例。
test_flip_mirror
測試圖片是否按照 CDD 的「7.5.2 前置鏡頭」規定正確定向。在 Android 17 以上版本中,系統會使用 ArUco 標記驗證圖表是否存在和方向。鏡像、翻轉或旋轉的圖片,可透過中心附近的菱形特徵來識別。
通過:系統偵測到所有標記,且標記正確對齊。圖片未翻轉、鏡像或旋轉。
圖 112. test_flip_mirror 場景修補範例。
test_imu_drift
測試裝置靜止不動並擷取高畫質預覽畫面時,慣性測量單元 (IMU) 是否能穩定輸出 30 秒。
測試的 API:
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_GYROSCOPEandroid.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass:
- 在測試期間,陀螺儀的漂移值小於 0.01 弧度。
- 在測試期間,陀螺儀讀數的變異數小於 1E-7 rad2/s2/Hz。
- 在測試期間,旋轉向量的漂移小於 0.01 rad。
- (尚未強制規定) 陀螺儀的漂移值小於每秒 1 度。
圖 113. test_imu_drift 陀螺儀漂移範例。
圖 114. test_imu_drift 旋轉向量漂移範例。
test_landscape_to_portrait
測試橫向感應器的橫向到直向覆寫功能是否正常運作。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODESandroid.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATIONandroid.hardware.camera2.CameraManager#getCameraCharacteristics
通過:測試會找出預期旋轉角度的圖表 (停用橫向到直向覆寫時為 0 度,啟用時為 90 度)。
圖 115. test_landscape_to_portrait 範例。
test_lens_movement_reporting
測試鏡頭移動標記是否正確回報。連拍 24 張圖片,前 12 幀採用最佳焦距 (由 3A 決定),後 12 幀採用最短焦距。在第 12 個影格附近,鏡頭移動導致清晰度下降。鏡頭移至最終位置時,銳利度最終會穩定下來。
在所有影格中,如果鏡頭在最佳焦距處靜止的前幾個影格,以及鏡頭在最小焦距處靜止的最後幾個影格,其清晰度介於中間,則應宣告鏡頭移動標記。鏡頭移動的確切影格並不重要,重要的是鏡頭移動時,移動標記會設為 true。
在 Android 17 以上版本中,這項測試會使用 ArUco 標記定義包含必要銳利邊緣的圖表區域。這種方法可為超廣角 (UW) 到望遠應用程式的相機提供穩定的偵測功能。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCEandroid.hardware.camera2.CaptureResult#LENS_STATEandroid.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCEandroid.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.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
測試 Edge Enhance 支援的重新處理方法是否正常運作。使用指定的重新處理邊緣模式處理擷取要求,並比較不同的模式,以便在停用重新處理邊緣模式的情況下擷取。
測試的 API:
android.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
通過:不同邊緣模式的銳利度正確。HQ (模式 2) 比 OFF (模式 0) 更清晰,不同模式之間的改善程度相似。
圖 116. test_reprocess_edge_enhancement 圖表範例。
scene4
scene4 由白色背景上的黑色圓圈組成,位於正方形內。
scene4 中的測試可能對對齊方式較為敏感,因此從 Android 15 開始,您可以使用工具目錄中的 check_alignment.py,啟用 DUT 和圖表對齊方式檢查。
圖 117. scene4 範例。
test_30_60fps_preview_fov_match
測試 30 FPS 和 60 FPS 預覽影片是否具有相同的視野。這項測試會擷取兩部影片,一部為 30 FPS,另一部為 60 FPS。系統會從每部影片中選取代表性影格並進行分析,確認兩部影片的 FoV 變化符合規格。測試圓形的顯示比例是否保持不變、圓形中心是否保持穩定,以及圓形半徑是否保持不變。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.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_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
通過:圖片未拉伸、圖片中心差異不超過 3%,且保留最大可能視野。
失敗機制:
- 攝影機未對準平板電腦上顯示的圓圈,該圓圈位於拍攝場景的中央。
- 擷取圖片中的圓形因處理管道而失真。
- 低解析度圖片在圖片管道中經過兩次裁剪,因此高解析度和低解析度圖片的視野不同。
- 由於極端顯示比例擷取要求會縮減圖片的高度或寬度,因此擷取圖片中的圓圈會遭到裁剪。
- 擷取圖片中的圓圈中央有反光,看起來未完全填滿。
test_multi_camera_alignment
測試多相機系統中與相機定位相關的相機校準參數。使用多鏡頭實體子相機,透過其中一部實體相機拍照。找出圓心。將圓心投影到每部相機的世界座標。比較世界座標中攝影機圓心的差異。將世界座標重新投影回像素座標,並與原始座標進行比較,以檢查有效性。比較圓圈大小,檢查相機焦距是否不同。
測試的 API:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.hardware.camera2.CameraCharacteristics#LENS_DISTORTIONandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATIONandroid.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATIONandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
通過:與使用相機校正資料和焦距拍攝的圖片相比,投影圖片中的圓圈中心和大小符合預期。
失敗機制:
LENS_INTRINSIC_CALIBRATION、LENS_POSE_TRANSLATION和LENS_POSE_ROTATION是設計值,而非實際校正資料。- 相機系統不適合測試設定,例如使用 RFoV 測試裝置測試廣角和超廣角相機系統。詳情請參閱相機 ITS-in-a-box 常見問題 Q1。
test_preview_aspect_ratio_and_crop
與靜態擷取的 test_aspect_ratio_and_crop 測試類似,這項測試會檢查支援的預覽格式,確認預覽畫面未不當延展或裁剪。確認圓形的顯示比例不變、裁剪後的圖片將圓形保持在畫面中央,且圓形大小不會因格式不變或解析度不同而改變 (FoV 檢查)。
測試的 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATIONandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
通過:圖片未拉伸、圖片中心差異不超過 3%,且保留最大可能視野。
test_preview_stabilization_fov
檢查支援的預覽大小,確保視野經過適當裁剪。這項測試會擷取兩部影片,一部啟用預覽防震功能 ON,另一部則啟用預覽防震功能 OFF。系統會從每部影片中選取代表性影格,並進行分析,確認兩部影片的 FoV 變化符合規格。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
通過:圓圈顯示比例大致保持不變,圓圈中心位置保持穩定,圓圈大小變化不超過 20%。
test_video_aspect_ratio_and_crop
拍攝正方形內有圓形的影片,並採用所有影片格式。擷取主影格,並確認圓圈的顯示比例不變、裁剪後的圖片將圓圈置中,且圓圈大小不會因格式固定或解析度不同而改變 (FoV 檢查)。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
通過:影片影格未拉伸、影格中心差異不超過 3%,且保留最大可能的視野。
scene6
scene6 是由可明確識別的 ArUco 標記組成的格線。scene6 中的測試可能對對齊方式較為敏感,因此從 15 開始,您可以使用工具目錄中的 check_alignment.py,啟用 DUT 和圖表對齊方式檢查。
圖 118. scene6 範例。
test_in_sensor_zoom
測試相機感應器內變焦功能的行為,這項功能會產生裁剪過的原始圖片。
如果串流用途設為 CROPPED_RAW,測試會在縮放範圍內拍攝兩張相片:一張是完整視野的 RAW 圖片,另一張是裁剪過的 RAW 圖片。測試會將圖片轉換為 RGB 陣列,將完整大小的裁剪原始圖片縮小至 SCALER_RAW_CROP_REGION 回報的大小,並計算兩張圖片之間的 3D RMS 差異。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAWandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
通過:縮小裁剪的原始圖片與完整 FoV 原始圖片之間的 3D RMS 差異小於測試中設定的門檻。
test_zoom
測試相機從超廣角鏡頭到廣角鏡頭的變焦行為。在變焦範圍內拍攝,並檢查 ArUco 標記是否隨著相機放大而變大。這項測試也會檢查中心標記的位置是否在每次擷取時,都以可預測的方式變更。中心標記中心與圖片中心之間的距離,可以根據縮放比例以固定速率變化,直到實體相機切換為止;也可以在實體相機切換後,朝同一標記的位置單調變化。測試前,裝置必須安裝 Jetpack Camera 應用程式 (JCA)。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.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_OVERRIDESandroid.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
通過:擷取的標記相對大小與變焦比結果中繼資料相符。
test_preview_video_zoom_match
測試在錄製和縮放時,影片預覽和影片輸出是否顯示及錄製相同的輸出內容。計算不同變焦比例下最接近中心的標記大小,並檢查標記大小是否隨著變焦比例增加而增加。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.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_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.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_VERSIONandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
通過:CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION 中列出的每個支援 SessionConfiguration 都能達到最小和最大變焦比例。
scene7
scene7 是一個矩形框架,分為四個相等的象限,每個象限都填滿不同的顏色。矩形中央是斜邊圖表,用於檢查清晰度。四個 ArUco 標記與矩形的四個外角對齊,有助於在不同縮放比例下,取得主矩形框的準確座標。
圖 125. scene7。
test_multi_camera_switch
這項測試會驗證在以不同變焦比例預覽錄製時,切換超廣角 (UW) 和廣角 (W) 鏡頭是否會產生相似的 RGB 值。
這項測試會在預先定義的範圍內使用不同的縮放比例,執行動態預覽錄製,並找出實體相機變更的時間點。這個點代表從超廣角鏡頭切換到廣角鏡頭。
系統會分析在交叉點和交叉點之前擷取的影格,以進行自動曝光 (AE)、自動白平衡 (AWB) 和自動對焦 (AF)。
AE 檢查會確認 UW 和 W 鏡頭圖片的亮度變化是否在預期範圍內。AWB 檢查會驗證超廣角和廣角鏡頭圖片的紅綠和藍綠比例是否在門檻值內。自動對焦檢查會根據超廣角和廣角鏡頭影像之間的平均梯度大小,評估清晰度估計值。
執行這項測試時,如果波紋效果干擾結果,請從相機 ITS 核准的平板電腦清單中,使用解析度較高的平板電腦。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.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. 使用超廣角鏡頭拍攝的灰色色塊。
圖 127. 使用廣角鏡頭拍攝的灰色色塊。
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_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONSandroid.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AEandroid.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_MODEandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATUREandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATUREandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINTandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINTandroid.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGEandroid.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCTandroid.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
通過:RGB 比率會根據所選色溫和色調,呈現預期的增減。
測試略過條件
如果符合下列任一條件,系統就會略過 test_color_correction_mode_cct 測試:
- 裝置的第一個 API 級別 (
first_api_level) 為 35 以下。 - 裝置不會在
COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES中 advertiseCOLOR_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_extensions
scene_extensions 測試適用於相機擴充功能,且必須使用 Camera ITS-in-a-Box,因為這類測試需要精確控制測試環境。此外,所有漏光都必須控制。這可能需要用遮光布蓋住測試裝置、待測裝置和平板電腦,並消除待測裝置前螢幕的漏光。
scene_hdr
scene_hdr 場景包含左側的肖像和右側的低對比度 QR code。
圖 135. scene_hdr 範例。
test_hdr_extension
測試 HDR 擴充功能。在啟用和停用擴充功能的情況下擷取畫面,並檢查擴充功能是否能提高 QR code 的偵測率。
測試的 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
通過:HDR 擴充功能可減少偵測 QR code 所需的對比度變化次數,或減少 QR code 的漸層。
scene_low_light
scene_low_light 場景由黑色背景上不同灰階的方塊網格組成,方塊網格則由紅色外框包圍。方塊會以希爾伯特曲線方向排列。
圖 136. scene_low_light 範例。
test_night_extension
測試夜間擴充功能。在啟用擴充功能的情況下擷取資料,並執行下列操作:
- 偵測到 20 個正方形
- 計算每個正方形的亮度
- 根據希爾伯特曲線格線方向,計算前 6 個正方形的平均亮度值
- 計算連續方塊的亮度值差異 (例如 square2 - square1),直到方塊 5 和 6 (square6 - square5),然後找出五個計算差異的平均值。
如果是搭載 Android 16 以上版本的裝置,擷取要求會包含一個測光區域,對應至方格網格的矩形邊界。這項新增功能會變更門檻通過條件。
測試的 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
Pass:
- 如果是搭載 Android 16 以上版本的裝置,前 6 個方塊的平均亮度值必須至少為 80,且連續方塊 (最多到第 5 和第 6 個方塊) 的平均亮度值差異必須至少為 18.75。
- 如果是搭載 Android 15 以下版本的裝置,前 6 個方塊的平均亮度值必須至少為 85,且連續方塊 (最多到方塊 5 和 6) 的平均亮度值差異必須至少為 17。
以下亮度圖表顯示通過測試的結果。
圖 137.低光源夜景通過測試範例。
test_low_light_boost_extension
測試低光源增強 AE 模式。如果 Camera2 支援低光源強化 AE 模式,則會對 Camera2 執行這項測試。如果支援夜間模式相機擴充功能,且擴充功能支援低光源強化 AE 模式,則也會針對夜間模式相機擴充功能執行這項測試。這項測試會將 AE 模式設為低光源強化,從預覽畫面擷取影格,並執行下列操作:
- 偵測到 20 個盒子
- 計算每個方塊的亮度
- 根據希爾伯特曲線格線方向,計算前 6 個正方形的平均亮度值
- 計算連續方塊的亮度值差異 (例如 square2 - square1),直到方塊 5 和 6 (square6 - square5),然後找出五個計算差異的平均值。
如果是搭載 Android 16 以上版本的裝置,擷取要求會包含一個測光區域,對應至方格網格的矩形邊界。這項新增功能會變更門檻通過條件。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_MODESandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITYandroid.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass:
如果是搭載 Android 16 以上版本的裝置,前 6 個方塊的平均亮度值必須至少為 54,且連續方塊 (最多到方塊 5 和 6) 的平均亮度值差異必須至少為 17。
如果是搭載 Android 15 以下版本的裝置,前 6 個方塊的平均亮度值必須至少為 70,且連續方塊 (最多到第 5 和第 6 個方塊) 的亮度值平均差異必須至少為 18。
scene_tele
scene_tele 測試的一項重要規定是,圖表距離必須至少為望遠鏡頭的最小對焦距離。由於這項最短對焦距離可能因裝置而異,因此您必須根據特定望遠相機調整設定。
圖 138. 根據廣角和望遠相機的焦距設定 scene_tele。
如要進一步瞭解測試硬體設定,請參閱「望遠鏡延伸裝置設定」。
scene6_tele
scene6_tele 場景由白色背景上的 ArUco 標記網格組成。
如果 scene6_tele 擷取畫面在模組化裝置中看起來曝光過度,請移除模組化裝置的前面板。
從延伸桿上拔除 WFoV 測試架,並取下手機固定座。
圖 139.從延伸桿上拔除 WFoV 測試架,並取下手機固定座。
圖 140. 取下前蓋。
test_zoom_tele
測試相機從廣角鏡頭到望遠鏡頭的變焦行為。這項測試與 test_zoom 相同,但會測試相機從廣角鏡頭到望遠鏡頭的變焦行為。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:擷取的 ArUco 標記相對大小與要求的縮放比例相符,可驗證相機是否正確縮放,且標記與圖片中心的距離會根據 test_zoom 中列出的條件變更。
test_preview_zoom_tele
測試相機變焦行為,預覽從廣角鏡頭到望遠鏡頭的影格。這項測試與 test_preview_zoom 相同,但會測試從廣角鏡頭到望遠鏡頭的預覽畫面相機變焦行為。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
通過:擷取的 ArUco 標記相對大小與要求的縮放比例相符,確認相機正確縮放,且標記與圖片中心的距離會根據 test_preview_zoom 中列出的條件變更。
scene7_tele
scene7_tele 與 scene7 相同,但設定為望遠鏡頭測試。這是一個矩形框架,分成四個等大的象限,每個象限都填滿不同的顏色。矩形中央是斜邊圖表,用於檢查清晰度。四個 ArUco 標記與矩形的四個外角對齊,有助於在不同縮放比例下,取得主矩形框架的準確座標。
test_multi_camera_switch_tele
這項測試會驗證在以不同變焦比例預覽錄製時,切換廣角 (W) 和望遠 (tele) 鏡頭是否會產生相似的 RGB 值。
這項測試會在預先定義的範圍內使用不同的縮放比例,執行動態預覽錄製,並找出實體相機變更的時間點。這個點代表從 W 鏡頭切換到望遠鏡頭。
系統會分析在交叉點和交叉點之前擷取的影格,以進行 AE、AWB 和 AF。
AE 檢查會驗證 W 和望遠鏡頭影像的亮度變化是否在預期範圍內。AWB 檢查會驗證廣角和望遠鏡頭影像的紅綠和藍綠比例是否在門檻值內。自動對焦檢查會根據廣角和望遠鏡頭影像之間的平均梯度大小,評估清晰度估計值。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
通過:AE、AWB 和 AF 檢查都必須通過,測試才算通過。以下是各項檢查的標準:
- 自動曝光檢查:廣角和望遠鏡頭影像之間的亮度變化必須小於 4%。
- AWB 檢查:在 LAB 色域中,廣角和望遠鏡頭的紅綠和藍綠之間的 delta C 不得超過 10。
- 自動對焦檢查:望遠鏡頭的影像銳利度必須高於廣角鏡頭。
scene_video
scene_video 是一部影片場景,由四個不同顏色的圓圈組成,在白色背景上以不同的影格率來回移動。
圖 141. scene_video 範例。
test_preview_frame_drop
測試動態場景是否能維持要求的預覽影格率。 這項測試會在所有向第三方應用程式公開的相機上執行。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGESandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGEandroid.media.CamcorderProfileandroid.media.MediaRecorder
通過:預覽影格率達到要求的影格率範圍上限,且連續影格之間的平均變化小於測試中設定的相對容許值。
Gen2 裝置 / sensor_fusion 測試場景
feature_combination
feature_combination 測試會驗證同時啟用多項相機功能時,這些功能是否能正常運作。這些測試使用的棋盤格圖片,與感應器融合場景中使用的圖片相同。
test_feature_combination
測試相機裝置支援的不同串流組合、影片防震模式、目標每秒影格數範圍、10 位元 HDR 影片和 Ultra HDR 的所有組合。
在 Android 16 以上版本中,測試會執行支援功能的所有組合,並將結果記錄到 proto 檔案。只有在 isSessionConfigurationSupported 針對特徵組合傳回 True 時,系統才會呼叫失敗斷言。
測試的 API:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass:針對每種支援的功能組合:
- 如果開啟預覽防震功能,預覽串流就會穩定。
- 預覽影格率落在設定的
AE_TARGET_FPS_RANGE範圍內。 - 錄製的預覽串流色域與設定相符。
- Ultra HDR 拍攝內容具有有效的增益圖。
scene_flash
scene_flash 測試需要在感應器融合盒中進行暗色場景。在 Android 17 以上版本中,可以使用 Gen2 裝置執行 scene_flash 測試。
test_auto_flash
測試在黑暗場景中,後置和前置鏡頭是否會觸發自動閃光燈。前置鏡頭的自動閃光燈功能會使用螢幕照亮場景,而非實體閃光燈。測試會確認啟用自動閃光燈時,圖塊圖片的中心是否較亮,藉此驗證自動閃光燈是否觸發。如要觸發自動閃光燈,必須關閉測試裝置中的燈光。您可以使用 Arduino 控制器自動關閉燈光。場景必須完全黑暗,測試才能正確運作。測試前,裝置必須安裝 Jetpack Camera 應用程式 (JCA)。後置鏡頭的自動閃光燈會根據 AE 狀態觸發,但前置鏡頭的自動閃光燈則不依賴 AE,一律會觸發。
在 Android 17 以上版本中,測試非 1 倍縮放等級,確認所有支援的縮放範圍都能正常運作。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.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_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVELandroid.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 模式設為 ON 並擷取畫面。在這項擷取作業中,測試會執行預先擷取序列,並將 aePrecapture 觸發條件設為 START,然後將擷取意圖設為 Preview,以便使用閃光燈進行擷取。
由於閃光燈會導致拍攝畫面出現明顯的熱點,因此測試會計算整個拍攝畫面的閃光燈影像平均值,並驗證該值是否在 (68, 102) 範圍內。為確認圖片是否經過合理的白平衡處理,測試會計算紅綠和藍綠比例,並驗證比例是否介於 0.95 和 1.05 之間。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#FLASH_MODE
通過:紅綠和藍綠比率介於 0.95 和 1.05 之間。閃光燈圖片平均值介於 (68, 102) 範圍內。
test_night_mode_indicator
測試夜間模式指標的功能,這項功能會指出相機是否在低光源環境下運作,以及是否能透過夜間模式相機擴充功能靜態拍攝功能提升效果。這項功能僅適用於支援夜間模式相機擴充功能的裝置。
這項測試會檢查夜間模式指標是否正確反映相機預覽期間的光線條件。測試會執行下列步驟:
- 初始化:測試會初始化
ItsSession並擷取相機屬性。並與照明控制器建立連線。 - 略過條件:如果裝置不支援必要的 API 級別或夜間模式指標功能,系統會略過測試。
- Camera2 工作階段:
- 測試會使用
Camera2工作階段,啟動預覽擷取工作階段。 - 閃光燈會亮起,並擷取預覽畫面。
- 測試會驗證夜間模式指標是否處於
OFF狀態。 - 系統會關閉燈光,並擷取預覽畫面。
- 測試會驗證夜間模式指標是否處於
ON狀態。
- 測試會使用
- 相機擴充功能工作階段:
- 測試會重複與
Camera2工作階段相同的程序,但會使用具有EXTENSION_NIGHT擴充功能的CameraExtension工作階段。
- 測試會重複與
- 清除:測試會關閉
ItsSession並釋出照明控制器。
測試的 API:
Pass:
- 燈亮起時,夜間模式指標應處於
OFF狀態。 - 關燈時,夜間模式指標應處於
ON狀態。 - 適用於
Camera2和CameraExtension工作階段。
test_preview_min_frame_rate
測試預覽影格率是否在昏暗場景中正確降低。為確保這項測試正常運作,測試裝置中的燈光必須由控制器關閉,或由測試操作人員手動關閉。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGESandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGEandroid.media.CamcorderProfileandroid.media.MediaRecorder
通過:預覽影格率達到要求的影格率範圍下限,且影格之間的變化小於測試中設定的絕對容許值。
test_torch_strength
測試 TORCH 模式中的閃光燈強度控制項是否正確導入。
確認裝置在 TORCH 模式下使用相機時,如果支援閃光燈強度控制,手電筒強度會隨著要求的強度等級而變更。確認閃光燈強度控制項可與不同的 AE_MODES 搭配使用。舉例來說,如果自動曝光模式為 ON 或 OFF,閃光燈強度等級會影響亮度;如果模式為 ON_AUTO_FLASH,閃光燈強度等級則不會影響亮度。確認手電筒強度在連拍期間保持不變,模擬影片拍攝工作階段。進行測試時,必須關閉測試裝置中的燈光。您可以使用 Arduino 控制器自動關閉燈光。場景必須完全黑暗,測試才能正確運作。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Pass:
當自動曝光模式為 ON 或 OFF 時,隨著閃光燈強度等級從無閃光燈增加到 FLASH_TORCH_STRENGTH_MAX_LEVEL,連拍圖片修補程式的亮度也會增加。自動曝光模式為 ON_AUTO_FLASH 時,隨著閃光燈強度等級從無閃光燈提高到 FLASH_TORCH_STRENGTH_MAX_LEVEL,連拍圖像區塊的亮度差異在容許範圍內。
scene_gen2_chart
在 Android 17 以上版本中,scene_gen2_chart 會使用 Gen2 紙張圖表。
這張測試圖表包含臉部樣本、QR code、灰階色塊、西門子星、色卡和斜方形。
圖 142.第 2 代圖表範例。
test_tonemap_sequence
這項測試會根據線性曲線和兩條指數曲線 (一條具有均勻點,另一條具有非均勻點),評估裝置的預設色調映射曲線。如要通過測試,預設曲線的亮度必須超過線性曲線和指數曲線。此外,線性曲線必須比指數曲線更亮,且兩條指數曲線的亮度等級應相似。
這項測試也會驗證裝置預設曲線的準確度。做法是擷取預設曲線、重新輸入,然後比較產生的圖片亮度與原始預設曲線的圖片。
圖 143.測試色調對應序列圖。
測試的 API:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
通過:預設曲線和線性曲線之間的亮度差異超過 15%,而兩條指數曲線之間的差異小於 8%。
test_multi_camera_switch
這項測試會驗證動態變焦轉換期間的色彩和曝光一致性。這項測試會驗證在預覽錄製期間,切換超廣角 (UW) 和廣角 (W) 鏡頭時,是否能維持幾乎相同的 CIELAB 值,避免使用者體驗出現明顯變化。
測試會在預先定義的變焦範圍內執行動態預覽錄製,觸發實體相機的「交叉」點,也就是超廣角鏡頭切換至廣角鏡頭的位置。這項測試會找出鏡頭切換的確切影格。系統會擷取並分析這個交叉點前後的影格,確保自動曝光 (AE) 和自動白平衡 (AWB) 的穩定性。
自動曝光檢查會確認鏡頭切換期間,亮度波動是否在可接受範圍內。AWB 檢查會確認紅綠和藍綠比例是否在定義的色彩中性門檻內。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
通過:如要通過測試,必須通過下列 AE 和 AWB 檢查:
- AE 檢查:如果裝置同時支援
ae_regions和awb_regions,則 UW 和 W 鏡頭影像之間的亮度變化 (Y 值) 必須小於所有色塊的 4%。如果僅支援ae_regions,則只有灰色色塊值必須符合條件。 - AWB 檢查:如果裝置同時支援
ae_regions和awb_regions,則 UW 和 W 鏡頭影像的紅綠和藍綠值差異,在灰色色塊上必須小於 3%,在其他色塊上則必須小於 10%。
圖 144.使用超廣角鏡頭拍攝的灰色色塊。
圖 145. 使用廣角鏡頭拍攝的灰色色塊。
scene_ip
在 Android 16 以上版本中,場景 scene_ip 可在預設相機應用程式和 Jetpack 相機應用程式 (JCA) 之間進行圖片同位檢查,找出拍攝圖片之間的主要差異。JCA 會複製社群媒體應用程式擷取的內容,並提供基準圖片,供社群媒體應用程式處理及調整。
硬體設定需求
scene_ip 測試需要下列硬體設定:
- 測試會在 Gen2 相機 ITS-in-a-box 中執行。
- Gen2 裝置中的照明和伺服控制器,可用於控制測試環境。
- 測試功能圖表置於 Gen2 裝置內。
圖 146.Gen2chart_sample 範例。
測試略過條件
如果符合下列任一條件,系統會略過 scene_ip 測試:
- 裝置的第一個 API 級別 (
first_api_level) 為 35 以下。 - 裝置不是具有前後主相機的手機裝置 (例如平板電腦或電視)。
test_default_jca_ip
在受控照明條件下,使用預設相機應用程式和 JCA 拍攝測試圖表,並執行下列檢查:
FoV:檢查預設相機應用程式和 JCA 擷取畫面是否具有相同的 FoV。這項檢查會使用從擷取的圖表圖片中擷取的中心 QR code 功能。
亮度:檢查預設相機應用程式和 JCA 測得的亮度差異是否不超過 10。這項檢查會使用動態範圍色塊來測量亮度。
白平衡:檢查預設相機應用程式和 JCA 之間的白平衡差異是否不超過 4。這項檢查會使用動態範圍色塊來測量亮度。
色彩算繪:檢查預設相機應用程式和 JCA 之間的色彩算繪差異不超過 6。
通過:測試通過視野、亮度和白平衡檢查。在 Android 16 中,這項測試並非強制要求 (NOT_YET_MANDATED)。在 Android 17 以上版本中,FoV、亮度和白平衡同位檢查為強制要求。Android 17 不強制執行色彩算繪檢查 (NOT_YET_MANDATED)。
test_jca_jpegr_ip
確認 JPEG_R JCA 預覽快照和拍攝相片之間的白平衡差異不超過 4。
測試的 API:
通過:JCA 預覽快照和擷取的 JPEG_R 圖片之間的白平衡差異在門檻內 (預設為 4)。
sensor_fusion
感應器融合測試需要手機在棋盤格圖案和 ArUco 標記前進行特定移動。為獲得最佳結果,請確認測試圖表已平整安裝。如果圖表不平整,許多測試的旋轉計算結果都會受到影響。圖表必須以 17x17 英吋的大小列印,並填滿感應器融合盒的背面。(43x43 公分)。sensor_fusion 測試可透過感應器融合盒自動執行。
圖 147. 感應器融合圖表。
圖 148.感應器融合圖表,填滿感應器融合盒的背面。
test_lens_intrinsic_calibration
測試鏡頭因光學影像穩定技術 (OIS) 移動時,鏡頭內部的光學中心是否會改變。如果支援鏡頭內建樣本,則測試鏡頭因 OIS 移動時,鏡頭內建樣本的光學中心是否會改變。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
通過:鏡頭內部的光學中心變化 1 像素以上。如果支援鏡頭內建樣本,鏡頭內建樣本的光學中心會變更 1 像素以上。
下圖是 test_lens_intrinsic_calibration 圖範例,顯示每個影格的主點變化 (以像素為單位):
圖 149.test_lens_intrinsic_calibration 圖表範例,顯示每個影格的主點變化 (以像素為單位)。
test_multi_camera_frame_sync
測試邏輯相機擷取的影格時間戳記是否在 10 毫秒內,方法是計算棋盤格內正方形的角度,以判斷時間戳記。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPEandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAandroid.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
通過:手機旋轉時,各相機拍攝的影像角度不會明顯改變。
test_preview_distortion
測試在各種縮放等級下拍攝的每個預覽影格,是否都已修正失真問題。測試會根據相機內外參數,計算每個預覽影格的理想點。
在範例圖片中,理想點以綠色顯示,實際點則以紅色顯示。失真誤差是根據實際點和理想點之間的 RMS 像素距離計算。圖片上的綠色和紅色醒目顯示部分,可用於目視偵測失真錯誤區域。
圖 150. 棋盤格圖片,理想點為綠色,實際點為紅色。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.media.CamcorderProfileandroid.media.MediaRecorder
通過:每個預覽影格的正規化失真錯誤低於測試中設定的門檻。
test_preview_stabilization
測試防震預覽影片的旋轉幅度是否小於陀螺儀。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
通過:影格的最大角度旋轉小於陀螺儀旋轉的 70%。
以下是啟用和未啟用防震功能的影片範例:
圖 151. 啟用防震功能的影片樣本。
圖 152. 未啟用防震功能的影片樣本。
test_sensor_fusion
測試 AR 和 VR 應用程式的相機和陀螺儀之間的時間戳記差異。在棋盤格圖案前,將手機旋轉 90 度 10 次。來回動作約 2 秒。如果沒有陀螺儀或未啟用時間戳記來源 REALTIME 參數,系統會略過這項測試。
test_sensor_fusion 測試會產生多個圖表。其中最重要的兩個圖表為:
test_sensor_fusion_gyro_events:顯示測試期間手機的陀螺儀事件。如果手機在 x 和 y 方向移動,表示手機未牢牢固定在固定板上,測試通過的可能性會降低。圖表中的週期數取決於儲存影格的寫入速度。
圖 153. test_sensor_fusion 陀螺儀事件範例。
test_sensor_fusion_plot_rotations:顯示陀螺儀和相機事件的對齊情形。這個圖表必須顯示相機和陀螺儀之間的相符動作,誤差範圍為 +/-1 毫秒。
圖 154. test_sensor_fusion 圖表旋轉範例。
測試的 API:
android.hardware.camera2.CameraCharacteristics#LENS_FACINGandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIMEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
通過:根據 CDD 的 7.3.9 高保真感應器,相機和陀螺儀時間戳記的偏移量小於 1 毫秒。
失敗機制:
- 偏移錯誤:攝影機與陀螺儀的偏移未正確校正至 +/-1 毫秒內。
- 影格遺失:管道速度不夠快,無法連續擷取 200 個影格。
- 通訊端錯誤:
adb無法穩定連線至待測裝置,連線時間不足以執行測試。 - 圖表未平放。在圖表
test_sensor_fusion_plot_rotations中,當相機旋轉經過圖表不平坦的部分時,陀螺儀和相機旋轉角度會有明顯差異。 - 攝影機未平放。
test_sensor_fusion_gyro_events圖表顯示 X 和 Y 平面的移動。前置鏡頭較常發生這種失敗情形,因為後置鏡頭通常會凸出於手機機身,因此將手機背面裝到固定板時會傾斜。
test_video_stabilization
已淘汰:這項測試已從 Android 17 淘汰。在 Android 17 以上版本中,這項測試會由 test_video_stabilization_jca 取代。
測試穩定影片的旋轉幅度是否小於陀螺儀。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
通過:影格的最大角度旋轉小於陀螺儀旋轉的 60%。
以下是影片樣本,分別為未啟用和啟用穩定功能的效果。
圖 155. 啟用防震功能的影片樣本。
圖 156. 未啟用防震功能的影片樣本。
test_video_stabilization_jca
測試結果顯示,使用 JCA 拍攝的穩定影片旋轉幅度小於陀螺儀。測試前,必須先在裝置上安裝 JCA。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.CamcorderProfileandroid.media.MediaRecorder
通過:從 JCA 拍攝影片擷取的影格中,最大角度旋轉小於陀螺儀旋轉的 70% (4)。
使用擴散器的測試場景
scene5
scene5 需要光線均勻的灰色場景。方法是在相機鏡頭上放置擴散器。建議使用下列擴散器:http://www.edmundoptics.com/optics/windows-diffusers/optical-diffusers/opal-diffusing-glass/46168/。
如要準備場景,請在相機前方裝上擴散器,並將相機對準約 2000 lux 的光源。為scene5拍攝的圖片需要漫射光,且沒有明顯特徵。以下是圖片範例:
圖 157. scene5 擷取範例。
由於這個場景不需要平板電腦或控制器,因此測試會使用 TEST_BED_MANUAL 測試平台。如需範例,請參閱手動測試 config.yml 檔案。預設的 config.yml 檔案不含 TEST_BED_MANUAL,但您可以修改檔案,加入這個元素。
test_lens_shading_and_color_uniformity
測試鏡頭陰影校正是否正確套用,以及單色均勻場景的顏色是否均勻分布。在具有自動 3A 的 YUV 影格上執行這項測試。鏡頭陰影是根據 Y 色彩通道評估。 測量每個指定樣本區塊的平均 y 值,並與中心 y 值比較,判斷是否通過。色彩均勻度測試是在紅綠和藍綠空間中進行評估。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
通過:在指定的圖片半徑範圍內,紅綠和藍綠值的變異數必須小於 20%,才能通過測試。
失敗機制:
- 圖片有過度暈影
- 圖片出現黑邊
圖 158. test_lens_shading_and_color_uniformity_y_plane。
圖 159. test_lens_shading_and_color_uniformity_color_uniformity。
圖 160. test_lens_shading_and_color_uniformity_lens_shading_result。
平板電腦廣色域測試場景
scene_wide_gamut
scene_wide_gamut 是矩形框架,分為四個相等的象限,每個象限都填滿不同的顏色。這需要平板電腦以廣色域顯示圖表,且待測裝置拍攝螢幕的廣色域相片。
這些測試會驗證擷取的圖片是否符合正確的色彩設定檔和色彩範圍。
test_display_p3
使用 ColorSpaceProfiles API 測試以 JPEG 格式擷取 Display P3。測試擷取的 JPEG 標頭中是否有適當的 ICC 色彩描述檔,以及圖片是否包含特定百分比的 sRGB 色域外色彩。
測試的 API:
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
通過:JPEG 包含 Display P3 ICC 色彩描述檔,且超過 1% 的色彩在 sRGB 色域之外。
圖 161. test_display_p3 範例。