本頁提供了 Camera Image Test Suite (ITS) 的完整測試清單,這是 Android Compatibility Test Suite (CTS) 驗證器的一部分。ITS 測試是功能測試,也就是說,這些測試不會評估影像品質,但所有宣傳的相機功能都會正常運作。本文件可讓開發人員和測試人員瞭解個別測試的用途,以及如何對測試失敗進行偵錯。
相機 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:曝光、敏感度、電動車補償、YUV 與 JPEG/RAW 的比較
- Scene2:臉部偵測、需要色彩場景或完全黑暗的測試
- Scene3:邊緣強化、鏡頭移動
- Scene4:長寬比、裁剪、視野
- scene5:鏡頭陰影
- scene6:縮放
- scene_extensions:相機擴充功能
- sensor_fusion:相機/陀螺儀時間偏移
請參閱個別章節的說明,瞭解每個場景。
場景 0
場景 0 測試不需要特定場景資訊。不過,手機必須保持靜止不動,才能進行陀螺儀和震動測試。
test_burst_capture
驗證整個擷取管道能否跟上原尺寸擷取速度和 CPU 作業時間。
測試的 API:
通過:拍攝大量原尺寸影像,相機速度夠快,可避免逾時。
test_capture_result_dump
測試從手動擷取傳回擷取結果,然後傾印。
測試的 API:
通過:完成擷取並傾印擷取結果。
test_gyro_bias
測試陀螺儀在裝置靜止時是否有穩定輸出。資料是以 20 個資料點的平均值呈現。
測試的 API:
通過:陀螺儀讀數在一段時間內的差異低於 0.01。
test_gyro_bias_繪圖.png
測試時基誤差
測量攝影機的時間戳記中的時基誤差。
測試的 API:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
通過:影格之間至少有 30 毫秒差異。
test_jitter_flag.png (請注意小型 y 軸範圍,在這張圖中,抖動其實很小)。
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_param_sensitivity_burst
測試在爆發狀態下正確套用 android.sensor.sensitivity
參數。僅檢查輸出中繼資料。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:輸出資料的錯誤容忍度小於 0.2%。
test_read_write
測試裝置是否透過讀取擷取中繼資料的方式寫入正確的曝光並取得值。
測試的 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:
通過:接收每個感應器的事件。
測試功能顏色測試模式
系統會針對鏡頭靜音產生正確產生純色測試模式的測試。如果支援相機靜音功能,就必須支援單色測試模式。如果不支援相機靜音,系統只會在通告功能的情況下測試純色測試模式。
如果支援 RAW 圖片,也會測試色彩分配。測試的顏色是黑色、白色、紅色、藍色及綠色。如果相機不支援 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
通過:支援的固態測試模式是正確的顏色,且圖片的變異性偏低。
測試模式
測試 android.sensor.testPatternMode
參數,針對每個有效測試模式擷取影格,並檢查能否為單色和色條正確產生影格。這項測試包含下列步驟:
- 擷取所有支援的測試模式的圖片。
- 針對單色測試模式和顏色長條執行簡單的正確性檢查。
測試的 API:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
通過:系統可正確產生支援的測試模式。
test_test_patterns_2.jpg
test_tonemap_curve
測試從 RAW 到 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 看起來很像,
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
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 設為靜音時,裝置不會震動。
場景 1
create1 是灰色圖表。灰色圖必須涵蓋攝影機視野的中央 30%。灰色圖預期會對 3A (自動曝光、自動白平衡、自動對焦) 中度挑戰,因為中心區域沒有任何功能。不過,擷取要求會指定整個場景,其中包含足夠的 3A 功能來聚合。
RFoV 攝影機可在 WFoV 或 RFoV 測試支架中進行測試。如果 RFoV 攝影機在 WFoV 測試組中進行測試,圖表會以 2⁄3 縮放,確保 FoV 中灰色圖表的部分邊界,以協助 3A 收合。如要進一步瞭解攝影機測試元件,請參閱「相機 ITS 內盒」。
Sa1:全尺寸圖表 (左側)。2⁄3 縮放圖表 (右側)。
測試 3a
以中等挑戰的目標測試 3A 的收斂。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
通過:3A 對話,且傳回的 3A 值為有效。
test_ae_af
分別測試 3A 自動曝光 (AE) 和自動對焦 (AF) 演算法。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
通過:3A 會合計和傳回的 3A 值是合法的。
test_ae_precapture_trigger
使用預先擷取觸發條件時測試 AE 狀態機器。如在停用 AE 的情況下手動擷取 5 項要求,最後一個要求具有 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
相符。
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
測試裝置是否產生完整的黑白圖片。拍攝兩張相片,第一張增益極低且曝光極短,即產生黑色相片;第二張採用極高增益和長時間曝光,並產生白色相片。
測試的 API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:產生黑白圖片。飽和的白色圖像管道的 RGB 值是 [255, 255, 255],誤差範圍小於 1%。
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_flag_means.png
test_burst_sameness_manual
需要進行 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%
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_chart_means.png
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
通過:中繼資料適用於所有擷取,且手動設定不會洩漏到第二次自動擷取中。將鏡頭陰影校正留白,以利拍攝。
test_capture_result_})_lsc_auto_ch0.png
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 圖片。
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
裁剪區域測試。拍攝完整映像檔,並建立 5 個不同區域 (邊角和中央) 的修補程式拍攝 5 個區域的裁剪組合圖片。比較修補程式與裁剪圖片值。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
通過:裁剪區域的圖片與裁剪圖片對應的修補程式。
test_dng_noise_model
驗證 DNG 原始模型參數是否正確。此圖根據各種敏感程度擷取的原始相片中,描繪灰色資訊卡中央貼片的測量變異數,然後將這些值與相機 HAL 中 DNG 雜訊模型預期的差異變化 (根據拍攝結果物件傳回的 O,S 參數為基礎)。如要進一步瞭解 DNG 雜訊模型,請在 DNG 噪音模型下載下列文件。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:DNG 原始模型參數正確無誤。預期的 RGB 值與測量的實際 RGB 值相符。
test_dng_noise_model_plog.png
test_ev_compensation_advanced
測試是否套用曝光值 (EV) 補償。這項測試會以八個步驟提高曝光率,並檢查測量到的亮度與預期的亮度。預期值是從未套用電動車補償的圖像亮度計算而來,如果計算的值超過實際圖像值範圍,預期值會飽和。如果預期值與測量值不符,或在五個步驟內過度公開圖片,測試就會失敗。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
通過:圖片的曝光率增加,但五個步驟不會過度曝光。
test_ev_compensation_advanced_繪圖_means.png
test_ev_compensation_basic
測試是否套用電動車補償,並使用 CONTROL_AE_COMPENSATION_STEP
建立的範圍。每個薪酬值會擷取八個影格。
測試的 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.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
通過:增加電動車補償設定時,鋁合金的拍攝量會增加,而每個電動車補償設定擷取的八個影格都有穩定的亮度值。
test_ev_compensation_basic.png
test_exposure
測試由於 ISO 和曝光時間不同,因此會持續曝光。拍攝一系列使用 ISO 和曝光時間來平衡的相片。結果的亮度應相同,但圖片順序應會較為雜訊。驗證樣本像素平均值彼此相近。請確保圖片不會限制為 0 或 1,以免圖片看起來像平面線。也可以在設定檔中設定 debug
標記,以使用 RAW 映像檔執行測試。
測試的 API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
通過:圖片的亮度相同,但 ISO 感提高,看起來更清晰。當 ISO*exposure 值在測試的空間上是常數時,RGB 平面是平面的。
test_exposure_chart_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
測試轉換 YUV 圖片和裝置 JPEG 圖像的測試後的結果一樣。測試會使用圖像的 10% 進行計算,並計算 RGB 值,確認兩者是否相符。
測試的 API:
合格:每張圖片之間的 RGB 平均差不到 3%。
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
測試閂鎖
測試 FULL
和 LEVEL_3
攝影機右側影格的設定 (曝光和增益) 閂鎖。使用連續要求拍攝一系列鏡頭,變更各畫面之間的拍攝要求參數。檢查圖片是否具備預期的屬性。
測試的 API:
通過:圖片 [2、3、6、8、10、12、13] 的圖片已提高 ISO 或曝光量,且在 test_latching_plot_means.png
中顯示以較高的 RGB 方式呈現。
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_chart_means.png
測試線性
測試裝置處理作業可反轉為線性像素。使用裝置對準統一的目標拍攝一系列畫面。
測試的 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 值必須隨著靈敏度提高,線性增加。
test_Linearity_chart_means.png
test_locked_burst
測試 3A 鎖和 YUV 爆發 (使用自動設定)。這項測試可在未搭載 MANUAL_SENSOR
或 PER_FRAME_CONTROLS
的少數裝置上通過這項測試。這個測試會檢查 YUV 圖片的一致性,而影格速率檢查是 CTS。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
通過:拍攝內容一致。
test_locked_burst_Frame0.jpg
test_locked_burst_Frame1.jpg
test_locked_burst_Frame2.jpg
test_param_color_pairion
測試在設定時是否套用 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 值會根據轉換而增加。
test_param_color_正確的繪圖_means.png
*X 軸代表擷取要求:0 = 單位、1 代表紅色,2= 藍色增強
test_param_color_更正 ion_req=0.jpg
test_param_color_正確的 ness_req=1.jpg (R 增強)
test_param_color_更正 ion_req=2.jpg (B 強化)
test_param_exposure_time
測試是否套用 android.sensor.exposureTime
參數。
測試的 API:
通過:每張相片都會比上一張相片高。
test_param_exposure_time_Frame0.jpg
test_param_exposure_time_chart.png
test_param_flash_mode
測試是否套用 android.flash.mode
參數。手動將曝光設為深色端,明確指出閃光燈是否觸發,並採用線性色調圖。檢查含有圖塊圖片的中心,查看是否有已建立的大型漸層,確認閃光燈是否觸發。
測試的 API:
通過:圖塊圖片的中心有很大的漸層,代表閃光燈觸發。
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
測試在設定時是否正確套用 android.noiseReduction.mode
參數。在相機昏暗的情況下拍照。使用高類比增益來確保拍攝的圖片有雜訊。拍攝三張圖片,分別用於 NR 、「快速」和「高畫質」。此外,還會擷取增益值低和 NR 的圖片,並將此變異量做為基準。SNR (用於雜訊比率) 的值越高,影像品質越好。
測試的 API:
通過:SNR 取決於不同的雜訊抑制模式,運作方式與下圖類似。
test_param_noise_reduction_chart_SNRs.png
0:關閉, 1: 快速, 2: 總部, 3: 分鐘 , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensitivity
測試是否套用 android.sensor.sensitivity
參數。這項測試會在每次鏡頭固定曝光的情況下,以 5 步驟提高靈敏度。
測試的 API:
通過:RGB 配音為 10%,表示靈敏度會提高。
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_render.png
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
通過:著色模式會切換,鏡頭陰影地圖也會依預期修改。
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
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
通過:
- test1:兩張圖片都採用線性色調,但 n=1 的漸層效果較差。而 n=1 圖片的 G (綠色) 頻道較明亮。
- test2:色調相同,但長度不同。圖片相同。
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
檢查後確認 RAW 是否開啟靈敏度。擷取一組不同靈敏度的 RAW 和 YUV 圖片,然後發布 RAW 靈敏度增強組合,並檢查輸出像素是否代表與要求設定相符。
測試的 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 圖像的亮度會增加,而 RAW 圖片會變暗,而 YUV 圖像的亮度會保持不變
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw__means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_caption_means.png
test_raw_burst_sensitivity
擷取一組可提高增益的原始圖片,並測量雜訊。 以連拍形式拍攝,僅限原始檔案。
測試的 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
通過:隨著增加的增加,每個鏡頭的雜訊都會比上一個相片更清晰。
使用中央統計資料格線儲存格的變異數。
test_raw_burst_sensitivity_variance.png
test_raw_exposure
擷取一組原始圖片並增加曝光時間,並測量像素值。
測試的 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
通過:調高 ISO (再次) 會讓像素對光線的靈敏度更高,因此圖表會向左移。
test_raw_exposure_s=55.png
(100 為 1 毫秒,101 為 10 毫秒,10-1 為 0.1 毫秒)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
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
通過:每張鏡頭會增加變異數。
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
用於重新處理要求的測試。android.noiseReduction.mode
可在光線昏暗的相機環境中拍攝重新處理的相片。採用高類比增益,確保拍攝的圖片有雜訊。拍攝三張重新處理的圖片,分別適用於 NR 、「快速」和「高畫質」。擷取增益值低,且關閉 NR 的重新處理圖片,並將此變異量做為基準。
測試的 API:
通過:快速 >= 關閉,HQ >= FAST,HQ >> 關閉
一般 SNR 與 NR_MODE 插圖
test_tonemap_sequence
以不同色調圖曲線測試一系列的畫面。請手動拍攝 3 張 使用線性色調圖的相片使用預設色調貼圖,即可手動拍攝 3 張手動相片,計算每個連續影格組合之間的差異。
測試的 API:
通過:3 個相同的影格,後面接著 3 個相同的影格。
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
測試圖片拍攝工作中所有回報的尺寸與格式。使用線性色調對應手動要求,讓 YUV 和 JPEG 在 image_processing_utils
模組轉換時的外觀相同。根據預設,系統不會儲存圖片,但您可以啟用 debug_mode
來儲存圖片。
測試的 API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
通過:所有圖片中心在 RGB 轉換的圖片中,最大 RMS (訊號的根平方值) 差異在於 RGB 轉換的圖片,以及 3% 解析度最高的 YUV 圖片。
test_yuv_jpeg_all.png
test_yuv_plus_dng
測試圖片拍攝工作回報的大小和格式。
測試的 API:
通過:測試完成並傳回要求的圖片。
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
測試將單一影格擷取為 YUV 和 JPEG 輸出。使用線性色調對應手動要求,讓 YUV 和 JPEG 在 image_processing_utils
模組轉換時的外觀相同。
測試的 API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
通過:YUV 和 JPEG 圖片兩者相似,且 RMS (訊號的根平方值) 差異小於 1%。
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
測試將單一影格擷取為 RAW/RAW10/RAW12 與 YUV 輸出內容 (如果支援的話)。使用線性色調貼圖的手動要求,讓原始與 YUV 保持一致。比較 RGB 轉換圖像的中心 10% RGB 值。記錄android.shading.mode
。
測試的 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
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%。
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
場景 2_a
route2_a 有三個錶面,上面有灰色背景與中性服飾。這些臉孔可以呈現出各種膚色。圖表的方向必須正確,臉部偵測功能才能發揮最佳效果。
場景 2_a
test_auto_flash
測試在昏暗環境中觸發自動閃光燈的情形。檢查圖塊圖片中心是否有大漸層,藉此驗證已觸發自動閃光燈。如要觸發自動閃爍功能,測試區域中的平板電腦和燈具必須關閉。測試期間將平板電腦關上,並使用 Arduino 控制器自動關閉燈具。場景必須完全昏暗,測試才能正確運作。因此,後置平板電腦的開闔方式必須完全覆蓋在場景平板電腦上,而且正面必須要用光圈覆蓋,且正面必須用 DUT 手機遮蓋,以免光線進入安全門檻。
測試的 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
通過:圖塊圖片的中心有大型漸層,代表自動閃光燈觸發。
test_autoframing
測試相機裝置的自動取景行為。執行大型縮放,使場景中沒有任何臉孔可供看,並將 CaptureRequest
中的 AUTOFRAMING
設為 True
,啟用自動取景模式,並驗證當狀態轉換時 (也就是 CaptureResult
中的 AUTOFRAMING_STATE
設為 AUTOFRAMING_STATE_CONVERGED
時),是否能偵測原始場景中的所有臉孔。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
通過:偵測到全部三個臉孔。
test_display_p3
使用 ColorSpaceProfiles
API 測試 JPEG 中的 Display P3 擷取作業。測試擷取的 JPEG 的標頭中是否有適當的 ICC 設定檔,且圖片包含 sRGB 色調以外的顏色。
測試的 API:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
通過:JPEG 檔案包含 Display P3 ICC 設定檔和 sRGB 色調以外的顏色。
測試效果
針對支援的相機效果擷取影格,並檢查生成方式是否正確。這項測試只會檢查效果 OFF
和 MONO
,但會儲存圖片為所有支援的效果。
測試的 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
通過:使用特效 OFF
擷取場景圖片,以及特效設為 MONO
的單色圖片。
測試效果_MONO.jpg
test_format_combos
測試不同的輸出格式組合。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
通過:已成功擷取所有組合。
test_jpeg_quality
測試相機 JPEG 壓縮品質。透過 android.jpeg.quality
進行步驟 JPEG ,並確保量化資料表正確變更。
測試的 API:
通過:量化矩陣會隨品質提升降低。(Matrix 代表除數係數)
Pixel 4 後置鏡頭亮度/色差 DQT 矩陣平均值與 JPEG 品質比較
失敗的測試範例
請注意,如果圖片畫質非常低 (jpeg.quality < 50),量化矩陣中的壓縮不會增加。
test_num_faces
測試臉部偵測。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到三個臉孔。
test_num_faces_fd_mode_1.jpg
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_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 飛機。
test_reprocess_uv_swap.png
場景 2_b
test_num_faces
在臉部場景中運用更高的膚色多樣性,測試臉部偵測技術。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到 3 張臉孔,
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
使用最大的 YUV 和 JPEG 格式拍攝兩張圖片,顯示比例與最大 JPEG 格式相同,但解析度不超過 1920x1440。將 jpeg.quality
設為 100 並擷取雙面要求。將兩張圖片轉換成 RGB 陣列,並計算兩張圖片之間的 3D 根平均平方 (RMS) 差異。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
通過:YUV 和 JPEG 圖片兩者相似,且 RMS (訊號的根平方值) 差異小於 1%。
情境 2_c
test_num_faces
在臉部場景中運用更高的膚色多樣性,測試臉部偵測技術。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到 3 張臉孔,
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
如 CDD 中第 2.2.7.2 節相機所述,測試 S 效能類別的 JPEG 擷取延遲。
通過:兩個主鏡頭在 ITS 光照條件 (3000K) 下測量的結果必須小於 1000 毫秒的 1080p 解析度。
test_camera_launch_perf_class [測試相機]
測試 S 效能類別的相機啟動延遲時間,如 CDD 中的第 2.2.7.2 節所述。
通過:兩個主鏡頭在 ITS 照明條件 (3000K) 下進行評估時,必須採用 camera2 啟動延遲時間 (開啟相機至第一個預覽影格) 小於 600 毫秒。
場景 2_d
test_num_faces
在臉部場景中運用更高的膚色多樣性,測試臉部偵測技術。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到 3 張臉孔,
場景 2_e
test_Continuous_Picture
使用擷取要求 android.control.afMode = 4 (CONTINUOUS_PICTURE).
時,系統擷取 50 個 VGA 解析度影格
測試的 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 張臉孔,
場景 2_f
route2_f 有三個臉孔,背景是白色,背景是白色。能呈現各種膚色,與背景形成高對比。
場景 2_f
test_num_faces
在臉部場景中運用更高的膚色多樣性,測試臉部偵測技術。
測試的 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
通過:找到 3 張臉孔,
test_num_faces_fd_mode_1.jpg
場景 3
Scene3 採用 ISO12233 圖表,且大多數測試會使用圖表擷取器方法,在場景中尋找圖表。因此,大多數已儲存的圖片都沒有邊框 (例如場景 1、2 或 4 的圖片),而只有圖表。圖表必須朝正確的方向排列,圖表尋找器才能以最佳方式運作。
測試 3a_一致性
測試 3A 一致性。
測試的 API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
通過:3A 會在容忍度內,測出曝光、增重、awb (自動白平衡) 和 fd (焦點距離) 三次。
test_edge_enhance
測試是否已正確套用 android.edge.mode
參數。針對每個邊緣模式擷取非重新處理的圖片,並傳回輸出圖片和擷取結果中繼資料的銳利度。使用指定的邊緣模式、敏感度、曝光時間、焦點距離和輸出表面參數,處理擷取要求。
通過: HQ
模式 (2) 的銳利比 OFF
模式 (0) 來得高。與 OFF
模式相比,FAST
模式 (1) 的銳利度較高。HQ
模式的銳利度提高或等於 FAST
模式。
測試的 API:
受影響的相機參數:
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (快速模式)
test_edge_enhancement_edge=2.jpg (高品質模式)
test_Flip_Mirror
測試圖像的方向是否正確。根據 CDD 第 7.5.2 節前置鏡頭 [C-1-5] 規範。
翻轉、翻轉或旋轉的圖片,可透過靠近中央的鑽石功能來辨識。
通過:圖片不會翻轉、鏡像或旋轉。
test_Flip_Mirror_scene_patch.jpg
測試橫向_橫向
測試橫向到直向覆寫功能是否適用於橫向導向感應器。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
通過:測試可找出預期旋轉的圖表 (如果橫向到直向覆寫值停用時為 0 度,啟用時則為 90 度)。
test_landscape_to_portrait.png
test_lens_movement_reporting 測試
測試鏡頭移動旗標是否已正確回報。在最遠的對焦距離 (如 3A 所示) 和最遠聚焦距離處 (從 3A 所示) 拍攝 24 張圖片。在畫面 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) 在test_log.DEBUG
中只有在銳利度不變的情況下才會宣告。- 與
test_log.DEBUG
中的前幾個影格相比,lens_moving: False
中的影格 (android.hardware.camera2.CaptureResult#LENS_STATE
= 0) 具有銳利度差異,或最後幾個影格在最小焦距處。
test_reprocess_edge_enhancement
測試支援的重新處理方法,確保邊緣強化功能正常運作。 使用指定重新處理邊緣模式處理擷取要求,並在停用重新處理邊緣模式的情況下比較要擷取的不同模式。
測試的 API:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
通過:不同邊緣模式的銳利度正確無誤。HQ
(模式 2) 比 OFF
(模式 0) 更銳利,不同模式之間的改善幅度也大同小異。
test_reprocess_edge_enhancement_態.png
場景 4
Scene4 是由正方形內白色背景的黑色圓圈組成。
場景 4
test_aspect_ratio_和_crop
測試圖片管道中的圖片變形或意外裁剪。拍攝圓形的相片,以所有格式呈現。驗證圓形不會變形、圓形不會從圖片中心移動,且圓形在顯示比例或解析度不同的情況下,尺寸也不會不正確地改變。
測試的 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
通過:圖片不會延展、圖片中心的差異不超過 3%,且能保留最大 FoV (視野) 上限。
故障機制:
- 但相機並未與拍攝場景中央於平板電腦中顯示的圓形對齊。
- 擷取圖片中的圓形遭處理管道變形。
- 圖片管道中解析度較低的圖片會重複裁剪,並在高解析度和低解析度圖片之間產生不同的 FoV。
- 擷取圖片中的圓形因極端顯示比例擷取要求而降低圖片的高度或寬度,因此遭到裁剪。
- 所擷取圖片中的圓形在中央有倒影,並未完全填滿。
test_multi_camera_alignment
測試與多鏡頭系統相機位置相關的相機校正參數。使用多鏡頭實體子鏡頭,使用其中一個實體攝影機拍照。找到圓形中心點。將圓形中心投影到每部攝影機的世界座標。比較攝影機在世界座標下的圓形中心之間的差異。將世界座標重新融合為像素座標,並與原始座標進行比較,以驗證效力。比較圓形大小,檢查相機的焦距是否不同。
測試的 API:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
通過:相較於使用相機校正資料和焦距拍攝的圖片,圓形中心點和大小在投影圖片中應符合預期。
故障機制:
LENS_INTRINSIC_CALIBRATION
、LENS_POSE_TRANSLATION
或LENS_POSE_ROTATION
是設計值,不是實際校正資料。- 相機系統不適合用於測試設定。舉例來說,您可以使用 RFoV 測試圍欄來測試廣角和超廣角相機系統。詳情請參閱「相機 ITS 開箱常見問題 1」。
test_preview_aspect_ratio_and_crop
這項測試與靜態擷取的 test_aspect_ratio_and_crop 測試類似,也會檢查支援的預覽格式,確保預覽影格不會以不當方式拉長或裁剪。用於驗證圓形的長寬比不會改變,裁剪的圖片會將圓形保持在畫面中央,且圓形大小不會因固定格式或解析度 (視野檢查欄位) 而改變。
測試的 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:圖片不會延展、圖片中心的差異不超過 3%,且能保留最大 FoV (視野) 上限。
test_preview_stabilization_fov
檢查支援的預覽大小,確保 FoV 經過適當裁剪。這項測試會擷取兩部影片,一部使用預覽穩定器 ON
,另一部影片則提供預覽穩定功能 OFF
。從每部影片中選擇一個具代表性的影格並加以分析,確保兩部影片中的 FoV 變更符合規格。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:圓形顯示比例保持大約不變,圓形的中心位置保持不變,圓形尺寸也不會超過 20%。
test_video_aspect_ratio_and_crop
以正方形內部的圓形影片回應所有影片格式。擷取主要影格,然後驗證圓形的顯示比例並未變更,裁剪的圖片會將圓形保持置中,圓形大小也不會因為固定格式或解析度 (視野檢查欄位) 而改變。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
通過:影片影格不會延展、影格中心差異不超過 3%,且可能保留的最大 FoV (視野) 上限。
場景 5
Scene5 需使用光照亮的灰色場景。方法是置於相機鏡頭上的擴散使用者。建議您使用下列差異比較使用者:www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
。
如要準備此場景,請在攝影機前接上一張擴散器,並將攝影機鏡頭對準約 2000 勒克斯的光源。為情境 5 拍攝的圖像需要調整亮度,且不明顯的特徵。以下是範例圖片:
場景 5 拍攝
測試範圍_陰影和顏色_統一度
測試是否已正確套用鏡頭陰影校正,且單色均勻場景的顏色會均勻分佈。以自動 3A 的 YUV 影格執行這項測試。系統會根據 y 色版評估鏡頭陰影。 測量每個指定樣本區塊的平均值 y 值,並比較中心 y 值以判定通過或失敗。色彩統一性測試會在 r/g 和 b/g 空間評估。
測試的 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
通過:在圖片指定的半徑範圍內,r/g 和 b/g 值的變異數必須低於 20% 才能通過測試。
場景 6
Scene6 是小型圓圈網格,一個角落有一個表示方向的正方形。需要小圓圈才能測試大範圍的縮放函式。
場景 6
test_in_sensor_zoom
測試相機內建感應器變焦功能的行為,這項功能會產生裁剪的 RAW 圖片。
將串流用途設為 CROPPED_RAW
後,測試會用兩張擷取縮放範圍擷取兩個畫面,一個完整視野 (FoV) RAW 圖片,以及裁剪的 RAW 圖片。這項測試會將圖片轉換為 RGB 陣列,將原尺寸裁剪的 RAW 圖片縮減為 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
通過:經過縮減的裁剪 RAW 圖片與完整 FoV RAW 影像之間的 3D 均方根 (RMS) 差異,小於 1%。
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
通過:已擷取圓形的相對大小會根據要求的縮放比例準確定位,確保相機可正確縮放。
test_zoom 找出最靠近中心的圓形輪廓。
test_low_Latency_zoom
測試相機低延遲變焦行為。使用 android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
擷取變焦範圍,並檢查輸出圖片中的圓圈是否符合擷取中繼資料中的縮放比例。
測試的 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
通過:已擷取圓形的相對大小,可用於影片和預覽中要求的縮放比例。
VGA_640x480_key_Frame.png (縮放前)
Preview_640x480_key_Frame.png (縮放前)
VGA_640x480_key_Frame.png (縮放後)
Preview_640x480_key_Frame.png (縮放後)
場景擴充功能
scene_extensions
測試適用於相機擴充功能,必須使用相機 ITS 內箱,因為這類測試需要精確控制測試環境。
情境 HDR
scene_hdr
場景左側是直向,右側是低對比的 QR code。
情境 HDR
test_hdr_extension
測試 HDR 擴充功能。在啟用和未啟用擴充功能時擷取擷取,並檢查擴充功能是否讓 QR code 更容易偵測。
測試的 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
通過:HDR 擴充功能可減少偵測 QR code 或減少 QR code 的漸層時所需的對比變化次數。
場景晚上
scene_night
場景由一個白色圓圈組成,當中有四個較小的圓圈,且所有背景為黑色。而右上角的小型圓圈會較其他代表方向的顏色越深。
場景晚上
test_night_extension
測試夜間擴充功能。無論是否啟用擴充功能,都會擷取擷取內容,並檢查以下項目:
- 啟用夜間擴充功能拍攝作業需要較長的時間,
- 啟用 Night 擴充功能的拍攝效果較明亮,或具有改善外觀的場景構件。
測試的 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
通過:與未啟用夜間擴充功能的拍攝相比,啟用夜間擴充功能的拍攝需要至少 0.5 秒。拍攝內容亮度必須至少為 10%,或場景中的灰色圓點必須比周圍圓形中心低 20 像素的值。
感應器融合
感應器融合測試需要在棋盤式圖案前方進行特定手機動作。如要獲得最佳結果,請務必將測試圖表掛接於平面上。非平面的圖表會影響許多測試的旋轉計算結果。sensor_fusion
測試可以使用 Sensor Fusion Box 自動執行。
棋盤圖
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_stabilization
測試穩定度預覽影片旋轉角度低於陀螺儀。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:影格最大旋轉角度小於 70% 的陀螺儀旋轉角度。
以下是已啟用和未開啟穩定功能的影片示例。
具備穩定功能的影片樣本
不支援穩定功能的範例影片
test_sensor_fusion
測試相機與 AR 和 VR 應用程式的陀螺儀之間的時間戳記差異。手機在棋盤圖案前方旋轉 90 度。動態效果大約是來回 2 度。如果未加入陀螺儀或時間戳記來源 REALTIME
參數未啟用,則系統會略過這項測試。
test_sensor_fusion
測試會產生多個圖表。以下是兩個最重要的偵錯圖表:
test_sensor_fusion_gyro_events
:顯示測試期間手機的陀螺儀事件。移動在 x 和 y 方向時,表示手機未妥善安裝在固定板上,從而降低測試通過的可能性。圖中的週期數取決於儲存影格的寫入速度。test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
:顯示陀螺儀和攝影機事件的對齊情形。此圖必須顯示攝影機和陀螺儀之間的動作相符至 +/-1 毫秒。test_sensor_fusion_繪圖_rotations
測試的 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 節高保真度感應器 [C-2-14],相機和陀螺儀時間戳記的偏移量小於 1 毫秒。
故障機制:
- 偏移錯誤:camera-gyroscope 位移未正確校正為 +/-1 毫秒內。
- 影格遺失:管道的速度不夠快,無法連續擷取 200 個影格。
- 通訊端錯誤:
adb
無法穩定連線至 DUT 的時間太久,無法執行測試。 - 圖表並未採用平坦模式。
test_sensor_fusion_plot_rotations
圖含有不同影格的陀螺儀和相機旋轉變化,因為相機旋轉的是非平坦的圖表部分。 - 攝影機未安裝在平面上,圖
test_sensor_fusion_gyro_events
顯示 X 和 Y 平面中的移動情形。這種故障較常出現在前置鏡頭中,因為後置鏡頭往往會凸起手機主體的其餘部分,導致手機背面在固定板上出現傾斜。
test_video_stabilization
測試穩定影片旋轉角度低於陀螺儀。
測試的 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
通過:影格最大角度旋轉的次數小於陀螺儀旋轉的 60%。
以下是已啟用和未開啟穩定功能的影片示例。
具備穩定功能的影片樣本
不支援穩定功能的範例影片
test_led_snapshot
測試 LED 快照中的圖片不會飽和或色調。
這項測試會在感應器融合框中加入照明控制器,控制燈具。指示燈設為 OFF
時,AUTO_FLASH
模式設為 ON
時,測試會拍照。在此擷取期間,測試會執行 aePrecapture
觸發條件設為 START
的預先擷取序列,並將擷取意圖設為 Preview
,以透過閃光燈進行拍攝。
由於擷取作業因為閃光燈而有不同的熱點,因此測試會計算整個拍攝的 Flash 圖像平均值,並驗證該值是否在 (68, 102) 範圍內。為了確認圖像在合理白平衡的情況下,測試會計算 R/G 和 B/G 比例,並驗證比例是否介於 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
通過:R/G 和 B/G 的比率介於 0.95 和 1.05。Flash 圖片平均值在 (68, 102) 範圍內。