相機 ITS 測試

本頁面提供 Camera Image Test Suite (ITS) 的完整測試清單,該套件是 Android 相容性測試套件 (CTS) 驗證工具的一部分。ITS 測試是功能測試,也就是說,它們不會評估圖像品質,而是檢查所有宣傳的相機功能是否正常運作。這份文件可讓開發人員和測試人員瞭解個別測試的功能,以及如何偵錯測試失敗問題。

Camera ITS 會根據必要的相機屬性、API 級別和媒體效能類別 (MPC) 級別,進行測試。針對 API 級別,ITS 會使用 ro.product.first_api_level 來控管在特定 API 級別中新增的測試,以便測試較低 API 級別的功能是否會帶來負面使用者體驗。ITS 會使用 ro.vendor.api_level 為特定 API 層級中新增的功能設定測試門檻,這些功能需要新的硬體功能。如果為裝置定義 ro.odm.build.media_performance_class,ITS 會根據 MPC 等級要求執行特定測試。

測試會按以下場景分組:

請參閱各個章節,瞭解各個場景的說明。

scene0

Scene0 測試不需要特定場景資訊。不過,手機必須保持靜止才能進行陀螺儀和震動測試。

test_jitter

評估攝影機時間戳記中的雜訊。

測試的 API:

通過:每個影格之間至少有 30 毫秒的差異。

test_jitter_plot.png

test_jitter_plot.png (請注意 y 軸範圍很小。在這個圖表中,抖動其實很小。)

test_metadata

測試中繼資料項目的有效性。查看擷取結果和相機特性物件。這項測試會使用 auto_capture_request 曝光和增益值,因為圖片內容並不重要。

測試的 API:

通過:硬體層級、rollingShutterSkewframeDuration 標記、timestampSourcecroppingTypeblackLevelPatternpixel_pitch、視野範圍、超焦距離均已存在且有有效值。

test_request_capture_match

透過讀取擷取中繼資料,測試裝置是否會寫入正確的曝光和增益值。

測試的 API:

通過:要求並擷取所有鏡頭的中繼資料值。

test_sensor_events

測試裝置查詢,並針對宣傳感應器融合支援的裝置列印感應器事件。預期的感應器是加速計、陀螺儀和磁力儀。只有在螢幕開啟 (也就是裝置未處於待機模式) 時,這項測試才會生效。

測試的 API:

通過:已收到每個感應器的事件。

test_solid_color_test_pattern

測試相機靜音功能是否能正確產生單色測試圖案。如果相機支援靜音功能,則必須支援單色測試圖案。如果系統不支援攝影機靜音功能,則只有在宣傳此功能時,系統才會測試單色測試圖案。

如果支援 RAW 圖片,系統也會測試顏色指派。測試的顏色包括黑色、白色、紅色、藍色和綠色。對於不支援 RAW 圖片的相機,只會測試黑色。

測試的 API:

通過:支援的單色測試圖案顏色正確,且圖像變化幅度低。

test_test_pattern

測試 android.sensor.testPatternMode 參數,為每個有效的測試圖案擷取影格,並檢查是否正確產生單色和色條影格。這項測試包含下列步驟:

  1. 擷取所有支援的測試圖案圖片。
  2. 針對純色測試圖案和色條執行簡單的正確性檢查。

測試的 API:

通過:系統已正確產生支援的測試圖案。

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

使用線性色調對應表,測試將測試圖案從 RAW 轉換為 YUV。這項測試需要 android.sensor.testPatternMode = 2 (COLOR_BARS),才能產生完美的圖片模式,用於色調轉換。確保管道具有線性色調映射和理想圖片輸入的適當顏色輸出內容 (依賴 test_test_patterns)。

測試的 API:

通過:YUV 和 RAW 看起來很相似。

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

測試圖像和動作感應器事件是否位於相同的時間範圍。

測試的 API:

通過:動作時間戳記介於兩個圖片時間戳記之間。

test_vibration_restriction

測試裝置的震動功能是否正常運作。

測試的 API:

通過:當裝置因相機音訊限制 API 而靜音時,裝置不會震動。

scene1

scene1 是灰色圖表。灰色圖表必須涵蓋攝影機視野中心的 30%。灰色圖表的挑戰程度為中等,因為中心區域沒有任何特徵。不過,擷取要求會指定整個場景,其中包含足以讓 3A 收斂的功能。

RFoV 攝影機可在 WFoV 或 RFoV 測試架中進行測試。如果在 WFoV 測試架中測試 RFoV 攝影機,系統會將圖表縮放 ⅔,確保 FoV 中的灰色圖表有一定的邊界,以利 3A 收斂。如要進一步瞭解攝影機測試裝置,請參閱 攝影機 ITS-in-a-box

scene1

場景 1:完整大小的圖表 (左側)。⅔ 縮放圖表 (右圖)。

test_ae_precapture_trigger

測試使用預擷取觸發事件時的 AE 狀態機器。擷取五個手動要求,並停用 AE。最後一個要求含有 AE 預擷取觸發事件,但由於 AE 已停用,因此應忽略該觸發事件。

測試的 API:

通過:AE 已收斂。

test_auto_vs_manual

自動和手動拍攝的測試結果看起來相同。

測試的 API:

通過:每個擷取結果中回報的手動白平衡增益和轉換,與相機 3A 演算法中的自動白平衡 estimate 相符。

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

測試裝置是否能產生全黑白圖片。拍攝兩張相片,第一張使用極低增益和短曝光,可拍出黑色相片,第二張使用極高增益和長曝光,可拍出白色相片。

測試的 API:

通過:產生黑白圖片。白色圖片的飽和通道 RGB 值為 [255, 255, 255],誤差範圍小於 1%。

test_black_white_black test_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_capture

驗證整個擷取管道是否能跟上全尺寸擷取速度和 CPU 時間。

測試的 API:

通過:擷取一系列全尺寸圖片,檢查影格掉落和圖片亮度。

test_burst_sameness_manual

使用手動拍攝設定拍攝 5 個 50 張連拍相片,並檢查相片是否完全相同。這項測試可用於判斷是否有零星影格以不同方式處理或出現雜訊。

測試的 API:

通過:圖片在視覺和 RGB 值上完全相同。

失敗:顯示 RGB 平均圖表在每個突發期間開始時的峰值或下降

  • first_API_level < 30 時,容許誤差為 3%
  • first_API_level 大於等於 30 時,容許值為 2%

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

測試 CaptureResult 物件是否傳回有效資料。是否執行自動、手動和自動擷取。

測試的 API:

通過:中繼資料適用於所有擷取作業,且手動設定不會流入第二次自動擷取作業。為擷取影像繪製鏡頭陰影校正。

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

測試 RAW 串流是否可丟棄。

測試的 API:

通過:YUV 圖片會裁剪至中心,但 RAW 圖片不會。

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

測試裁剪區域是否正常運作。擷取完整圖片,並建立 5 個不同區域 (角落和中心) 的補丁。擷取裁剪區域已設定的 5 張圖片。比較修補圖片和裁剪圖片的值。

測試的 API:

通過:裁剪區域的圖片與對應的裁剪圖片相符。

test_dng_noise_model

驗證 DNG 原始模型參數是否正確。這張圖表顯示在不同感光度下拍攝的原始影像中,灰卡中心區域的測量差異,並將這些值與相機 HAL 中 DNG 雜訊模型在各感光度下預期的差異進行比較 (根據擷取結果物件中傳回的 O、S 參數)。如要進一步瞭解 DNG 雜訊模型,請下載以下關於 DNG 雜訊模型的文件。

測試的 API:

通過:DNG 原始模型參數正確無誤。預期的 RGB 值與實際測量到的 RGB 值相符。

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

測試是否套用了曝光值 (EV) 補償。這項測試會以八個步驟增加曝光量,並檢查測得的亮度與預期亮度。系統會根據未套用 EV 補償的圖片亮度計算預期值,如果計算值超出實際圖片值範圍,預期值就會飽和。如果預期值和測量值不相符,或圖像在五個步驟內過度曝光,則測試會失敗。

測試的 API:

通過:圖片顯示曝光值逐漸增加,且在五個步驟內不會過度曝光。

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

測試使用 CONTROL_AE_COMPENSATION_STEP 建立的範圍套用 EV 補償。系統會在每個補償值擷取八個影格。

測試的 API:

通過:隨著 EV 補償設定增加,亮度值會增加,且為每個 EV 補償設定所擷取的八個影格具有穩定的亮度值。

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure_x_iso

測試在 ISO 和曝光時間變化時,是否能維持一致的曝光效果。拍攝一系列影像,並選擇適當的 ISO 和曝光時間,以便平衡各影像。結果應具有相同的亮度,但在序列中,圖片應會變得更雜訊。確認樣本像素平均值彼此相近。確保圖片不會被箝制在 0 或 1 (這會使圖片看起來像平線)。您也可以在設定檔中設定 debug 標記,以便使用 RAW 圖片執行測試。

測試的 API:

通過:圖片亮度相同,但 ISO 值越高,雜訊就越多。如果 ISO*曝光 值在測試增益空間中保持不變,RGB 平面就會變得平坦。

失敗機制:

  • test_exposure_plot_means.png 中,隨著增益乘數值 (x 軸) 增加,經過標準化的 RGB 平面平均值 (y 軸) 開始偏離低增益乘數值。

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00 test_exposure_mult=64.00
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
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

測試 FULLLEVEL_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=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=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=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=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

測試裝置處理作業是否可反轉為線性像素。將裝置對準單一目標,擷取一系列連續鏡頭。

測試的 API:

通過:R、G、B 值必須隨著靈敏度增加而線性增加。

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

測試 3A 鎖定和 YUV 突發 (使用自動設定)。這項測試的設計目的是即使在沒有 MANUAL_SENSORPER_FRAME_CONTROLS 的裝置上也能通過測試。這項測試會在 CTS 中檢查 YUV 圖像的一致性,同時檢查影格速率。

測試的 API:

通過:擷取畫面看起來一致。

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_param_color_correction

測試在設定時套用 android.colorCorrection.* 參數。使用不同的轉換和增益值拍攝相片,並測試相片是否有相應的差異。選擇轉換和增益值,可讓輸出內容變得越來越紅或越來越藍。使用線性色調對應表。色調對應是圖像處理中使用的一種技術,可將一組顏色對應至另一組顏色,以便在動態範圍較受限的媒介中,模擬高動態範圍圖像的外觀。

測試的 API:

通過:R 和 B 值會根據轉換作業提升。

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*X 軸為擷取要求:0 = 統一、1=紅色增強、2= 藍色增強

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (R 增強)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (B 增強)

test_param_flash_mode

測試是否套用了 android.flash.mode 參數。手動將曝光值設為較暗,以便清楚判斷閃光燈是否已觸發,並使用線性色調圖。使用圖塊圖片檢查中心,看看是否有大型漸層效果,以便確認閃光燈是否已啟動。

測試的 API:

通過:圖塊圖片的中心有大型漸層,表示閃光燈已觸發。

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

測試 android.noiseReduction.mode 參數在設定時是否正確套用。在光線昏暗的環境下拍攝相片。使用高類比增益,確保擷取的圖像有雜訊。拍攝三張圖片,分別為 NR 關閉、"快速" 和 "高品質"。並以低增益和 NR 關閉的設定拍攝圖片,然後將這項變化的差異值做為基準。SNR (訊號雜訊比) 越高,圖片品質越好。

測試的 API:

通過:SNR 會因不同的降噪模式而異,且行為類似下方圖表。

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0:關閉,1:快速,2:高品質,3:最小,4:ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_shading_mode

測試是否套用了 android.shading.mode 參數。

測試的 API:

通過:陰影模式已切換,且鏡頭陰影對應圖已如預期修改。

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

測試是否套用了 android.tonemap.mode 參數。將不同的色調對應曲線套用至每個 R、G、B 通道,並檢查輸出圖片是否如預期修改。這個測試包含兩個測試:test1 和 test2。

測試的 API:

Pass:

  • test1:兩張圖片都有線性色調對應表,但 n=1 的漸層較陡峭。在 n=1 的圖像中,G (綠色) 通道較亮。
  • test2:同樣使用 tonemap,但長度不同。圖片相同。
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

檢查 RAW 感光度提升後的結果。擷取一組具有不同感光度的 RAW 和 YUV 圖片,發布 RAW 感光度提升組合,並檢查輸出像素平均值是否符合要求設定。

測試的 API:

通過:隨著增強程度增加,RAW 圖片會變得更暗,而 YUV 圖片的亮度會保持不變

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

以逐漸增加的增益值擷取一組原始影像,並測量雜訊。以連拍模式拍攝純 RAW 相片。

測試的 API:

Pass:隨著增益增加,每張影像的雜訊都會比前一張影像更高。

使用中心統計資料格線儲存格的變異數。

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

以逐漸增加的曝光時間拍攝一組原始影像,並測量像素值。

測試的 API:

通過:提高 ISO (增益) 會讓像素對光線更敏感,因此圖表會向左移動。

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ 是 1 毫秒、10¹ 是 10 毫秒、10⁻¹ 是 0.1 毫秒)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

以逐漸增加的靈敏度擷取一組原始圖片,並測量圖片中心 10% 的雜訊 (變異)。測試每個鏡頭的雜訊是否比前一個鏡頭更大。

測試的 API:

傳遞:每個影格都會增加變化。

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

針對重新處理要求套用 android.noiseReduction.mode 的測試。在相機光線昏暗的情況下,拍攝經過重新處理的圖像。使用高類比增益,確保擷取的圖像有雜訊。擷取三張經過重新處理的圖片,分別為 NR 關閉、「快速」和「高品質」。以低增益和關閉降噪功能重新處理圖像,並使用這項變化做為基準。

測試的 API:

Pass:FAST >= OFF、HQ >= FAST、HQ >> OFF

典型的 SNR 與 NR_MODE 圖表

典型的 SNR 與 NR_MODE 圖表

test_tonemap_sequence

測試一系列使用不同色調圖曲線的鏡頭。使用線性色調圖表手動拍攝 3 張相片。使用預設色調圖拍攝 3 張手動拍攝的照片。計算每個連續影格組合之間的差異。

測試的 API:

通過:有 3 個相同的畫面,後面接著另一組 3 個相同的畫面。

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

測試所有回報的圖像擷取大小和格式是否正常運作。使用線性色調圖的人工要求,讓 YUV 和 JPEG 在 image_processing_utils 模組轉換後看起來相同。根據預設,系統不會儲存圖片,但您可以啟用 debug_mode 來儲存圖片。

測試的 API:

通過:所有圖片中心在 RGB 轉換圖片中具有 3% 的最高解析度 YUV 圖片差異,RMS (信號的平方根均方值) 為最大值。

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

測試檢查所回報的圖像擷取大小和格式是否可正常運作。

測試的 API:

通過:測試完成並傳回要求的圖片。

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

測試擷取單一影格,並輸出 YUV 和 JPEG 格式。使用含有線性色調對應表的手動要求,讓 YUV 和 JPEG 在 image_processing_utils 模組轉換後看起來相同。

測試的 API:

通過:YUV 和 JPEG 圖片相似,RMS (信號的平方根均方值) 差異小於 1%。

test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg
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:

通過:YUV 和原始圖片相似,且 RMS (信號的均方根值) 差異小於 3.5%。

test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

scene2_a

scene2_a 有三張臉孔,背景為灰色,人物穿著中性色調的服裝。這些臉孔的膚色範圍廣泛,圖表必須有正確的方向,才能讓臉部偵測功能發揮最佳效能。

scene2_a

scene2_a

test_autoframing

測試攝影機裝置的自動構圖行為。執行大縮放,讓畫面中沒有任何臉孔可見,然後將 CaptureRequest 中的 AUTOFRAMING 設為 True,啟用自動構圖模式,並驗證在狀態收斂時,是否能偵測到原始場景中的所有臉孔 (也就是 CaptureResult 中的 AUTOFRAMING_STATE 設為 AUTOFRAMING_STATE_CONVERGED 時)。

測試的 API:

通過:系統偵測到三張臉孔。

test_display_p3

使用 ColorSpaceProfiles API 測試以 JPEG 格式擷取的 Display P3 影像。測試擷取的 JPEG 是否在標頭中含有適當的 ICC 設定檔,以及圖片是否含有 sRGB 色域以外的顏色。

測試的 API:

通過:JPEG 包含 Display P3 ICC 設定檔,以及 sRGB 色域以外的顏色。

test_effects

擷取支援的相機特效影格,並檢查是否正確產生。這項測試只會檢查 OFFMONO 特效,但會為所有支援的特效儲存圖片。

測試的 API:

Pass:擷取效果為 OFF 的場景圖片,以及效果設為 MONO 的單色圖片。

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

測試不同的輸出格式組合。

測試的 API:

通過:已成功擷取所有組合。

test_num_faces

測試臉部偵測功能。

測試的 API:

通過:找到三張臉孔。

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_reprocess_uv_swap

測試 YUV 重新處理作業是否會交換 U 和 V 平面。系統會計算重新處理的圖像與未重新處理的擷取影像之間的絕對差異總和 (SAD),藉此偵測這類問題。如果交換重新處理擷取結果的輸出 U 和 V 平面,SAD 會增加,系統會假設輸出內容具有正確的 U 和 V 平面。

測試的 API:

通過:U 和 V 平面並未互換。

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scene2_b

test_num_faces

測試臉部偵測功能,在臉部場景中增加膚色多樣性。

測試的 API:

通過:偵測到 3 張臉孔。

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

使用最大常見 YUV 和 JPEG 格式擷取兩張圖片,顯示比例與最大 JPEG 格式相同,解析度不超過 1920x1440。將 jpeg.quality 設為 100,並擷取雙重介面要求。將兩張圖片轉換為 RGB 陣列,並計算兩張圖片之間的 3D 均方根 (RMS) 差異。

此外,這項測試會驗證所有支援的串流用途的 YUV 輸出內容,是否與 STILL_CAPTURE 用途的 YUV 相似。

測試的 API:

通過:STILL_CAPTURE 用途的 YUV 和 JPEG 圖片 RMS (信號的平方根均值) 差異小於 3%;所有支援用途的 YUV 圖片 RMS 差異小於 10%,與 STILL_CAPTURE 用途的 YUV 圖片差異小於 10%。

scene2_c

test_num_faces

測試臉部偵測功能,在臉部場景中增加膚色多樣性。

測試的 API:

通過:偵測到 3 張臉孔。

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

測試 JPEG 擷取延遲時間,符合 CDD 中 第 2.2.7.2 節 Camera 所指定的 S 效能類別。

通過:必須在兩部主相機上,在 ITS 照明條件 (3000K) 下,透過 CTS 相機 PerformanceTest 測量,相機 2 JPEG 擷取延遲時間 < 1000ms (1080p 解析度)。

test_camera_launch_perf_class

根據 CDD 的 2.2.7.2 節 Camera 指定,測試 S 效能類別的相機啟動延遲時間。

通過:兩部主相機在 ITS 照明條件 (3000K) 下,使用 CTS 相機 PerformanceTest 測量時,相機 2 的啟動延遲 (開啟相機至第一個預覽影格) 必須小於 600 毫秒。

test_default_camera_hdr

測試預設相機拍攝畫面是否為 Ultra HDR,以符合 CDD 的 第 2.2.7.2 節 Camera 所指定的效能等級 15。

通過:效能等級 15 裝置的預設相機套件擷取畫面必須為 Ultra HDR。

scene2_d

test_num_faces

測試臉部偵測功能,在臉部場景中增加膚色多樣性。

測試的 API:

通過:偵測到 3 張臉孔。

scene2_e

test_continuous_picture

使用「擷取要求優先」設定,擷取 50 個 VGA 解析度影格 android.control.afMode = 4 (CONTINUOUS_PICTURE).

測試的 API:

通過:在 50 格影像擷取結束前,3A 系統已穩定。

test_num_faces

測試臉部偵測功能,在臉部場景中增加膚色多樣性。

測試的 API:

通過:偵測到 3 張臉孔。

scene2_f

在場景 2_f 中,有三張臉孔,背景和衣服都是白色。臉部有各種膚色,且與背景形成高對比。

scene2_f.png

scene2_f

test_num_faces

測試臉部偵測功能,在臉部場景中增加膚色多樣性。

測試的 API:

通過:偵測到 3 張臉孔。

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

scene3

場景 3 使用 ISO12233 圖表,且大多數測試都會使用圖表擷取方法,在場景中找出圖表。因此,大多數已儲存的圖片都沒有邊框,只有圖表,例如場景 1、2 或 4 的圖片。圖表必須處於正確方向,才能讓圖表檢索工具發揮最佳效能。

test_edge_enhancement

測試 android.edge.mode 參數是否套用正確。針對每個邊緣模式擷取非重新處理圖像,並傳回輸出圖像的清晰度和擷取結果中繼資料。使用指定的邊緣模式、感光度、曝光時間、對焦距離和輸出途徑參數,處理擷取要求。

通過: HQ 模式 (2) 比 OFF 模式 (0) 更清晰。FAST 模式 (1) 比 OFF 模式更清晰。HQ 模式的清晰度與 FAST 模式相同或更高。

測試的 API:

受影響的攝影機參數:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (快速模式)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (高畫質模式)

test_flip_mirror

測試圖片是否正確對齊,符合CDD 7.5.2 前置鏡頭 [C-1-5] 的規定。

您可以透過中心附近的菱形圖示,辨識鏡像、翻轉或旋轉的圖片。

通過:圖片未經過翻轉、鏡像或旋轉。

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_imu_drift

測試慣性測量單元 (IMU) 在裝置靜止且擷取高畫質預覽畫面時,是否有 30 秒的穩定輸出。

測試的 API:

Pass:

  • 在測試期間,陀螺儀的漂移量小於 0.01 弧度。
  • 在測試期間,陀螺儀讀數的變化量低於 1E-7 rad/s2/Hz。
  • 在測試期間,旋轉向量的偏移量小於 0.01 弧度。
  • (尚未強制規定) 陀螺儀的漂移率低於每秒 1 度。

test_imu_drift_gyro_drift.png

test_imu_drift_gyro_drift.png

test_imu_drift_rotation_vector_drift.png

test_imu_drift_rotation_vector_drift.png

test_landscape_to_portrait

測試橫向至直向覆寫功能是否可正確運作,適用於橫向感應器。

測試的 API:

通過:測試能夠找到旋轉角度符合預期的圖表 (停用橫向至直向覆寫值時為 0 度,啟用時為 90 度)。

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

測試是否正確回報鏡頭移動標記。以連拍模式拍攝 24 張影像,其中前 12 張影像的最佳對焦距離 (由 3A 判斷),以及後 12 張影像的最低對焦距離。在第 12 個影格左右,鏡頭會移動,導致清晰度降低。當鏡頭移動到最終位置時,清晰度最終會穩定下來。在所有影格中,如果在前幾格中,鏡頭在最佳焦距距離處靜止時,影像清晰度介於中等至清晰之間,以及在最後幾格中,鏡頭在最小焦距距離處靜止時,影像清晰度介於中等至清晰之間,則應宣告鏡頭移動標記。鏡頭移動的確切影格並無關聯,系統會檢查鏡頭移動時是否會宣告移動標記。

測試的 API:

通過:在有銳利度變化的影格中,鏡頭移動標記為 True

失敗機制:

  • test_log.DEBUG 中的 lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) 只會在清晰度未變更的影格中宣告。
  • test_log.DEBUG 中,如果影格含有 lens_moving: False (android.hardware.camera2.CaptureResult#LENS_STATE = 0),則與在最佳焦距下拍攝的前幾張影格,或在最小焦距下拍攝的最後幾張影格相比,影格銳利度會有所差異。

test_reprocess_edge_enhancement

測試邊緣強化功能的支援重製方法是否正常運作。使用指定的重新處理邊緣模式處理擷取要求,並比較不同的模式,以便在停用重新處理邊緣模式時擷取。

測試的 API:

通過:不同邊緣模式的銳利度正確。HQ (模式 2) 比 OFF (模式 0) 更清晰,不同模式之間的改善幅度也相近。

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

scene4

場景 4 包含方塊內白色背景上的黑色圓圈。scene4 中的測試可能會對對齊方式過於敏感,因此從 15 開始,您可以在 tools 目錄中使用 check_alignment.py,啟用對 DUT 和圖表對齊方式的檢查。

scene4

scene4

test_30_60fps_preview_fov_match

測試 30 FPS 和 60 FPS 預覽影片是否具有相同的 FoV。這項測試會擷取兩部影片,一為 30 FPS,另一為 60 FPS。系統會從每部影片中選取代表性影格並進行分析,確保兩部影片的 FoV 變化符合規格。測試圓形的顯示比例是否維持不變、圓形中心是否保持穩定,以及圓形半徑是否維持不變。

測試的 API:

通過:圖片不會拉長,圖片中心的差異不超過 3%,且 30 FPS 和 60 FPS 影片的最大顯示比例變更幅度不超過 7.5%

失敗機制:

  • 30 FPS 影片中的圓形與 60 FPS 影片中的圓形大小差異明顯。
  • 處理管道會扭曲擷取圖像中的圓形。
  • 由於擷取影像要求的顯示比例過高,導致圖片的高度或寬度減少,因此擷取的圖片中的圓形會遭到裁剪。
  • 擷取的圖片中,圓形的中心有反光,且看起來並未完全填滿。

test_aspect_ratio_and_crop

測試圖片在圖片處理管道中是否會發生扭曲或意外裁剪的情形。拍攝所有格式的圓形相片。驗證圓形不會扭曲、不會從圖片中心移動,且不會因顯示比例或解析度不同而錯誤變更大小。

測試的 API:

通過:圖片不會拉伸,圖片中心的差異不超過 3%,且保留盡可能大的 FoV (視野)。

失敗機制:

  • 相機未對準平板電腦上顯示的圓圈,該圓圈位於拍攝畫面中央。
  • 處理管道會扭曲擷取圖像中的圓形。
  • 在圖像處理管線中,解析度較低的圖像會經過兩次裁剪,因此高解析度圖像和低解析度圖像之間的 FoV 會有所不同。
  • 由於擷取影像要求的顯示比例過高,導致圖片的高度或寬度減少,因此擷取的圖片中的圓形會遭到裁剪。
  • 擷取的圖片中,圓形中心有反光,且看起來並未完全填滿。

test_multi_camera_alignment

測試攝影機校正參數,與攝影機位置相關,適用於多攝影機系統。使用多鏡頭實體子相機,使用其中一個實體相機拍照。找出圓心。將圓形中心投影至每個攝影機的世界座標。比較攝影機在世界座標中的圓心差異。將世界座標重新投影至像素座標,並與原始值進行有效性檢查。比較圓形大小,檢查攝影機的焦距是否不同。

測試的 API:

通過:在投影圖像中,圓形中心和大小與使用相機校正資料和焦距拍攝的圖像相符。

失敗機制:

  • LENS_INTRINSIC_CALIBRATIONLENS_POSE_TRANSLATIONLENS_POSE_ROTATION 是設計值,而非實際校正資料。
  • 相機系統不適合測試設定。例如,使用 RFoV 測試架測試廣角和超廣角相機系統。詳情請參閱 Camera ITS-in-a-box 常見問題 1

test_preview_aspect_ratio_and_crop

與靜態影像擷取的 test_aspect_ratio_and_crop 測試類似,這項測試會檢查支援的預覽格式,確保預覽影格不會過度拉伸或裁剪。驗證圓形的顯示比例不會變更、裁剪圖片會將圓形置於影格中央,且圓形大小不會因固定格式或不同解析度而變更 (檢查視野)。

測試的 API:

通過:圖片不會拉長,圖片中心的差異不超過 3%,且保留盡可能大的 FoV (視野)。

test_preview_stabilization_fov

檢查支援的預覽大小,確保 FoV 已適當裁剪。這項測試會擷取兩部影片,一部使用預覽防震功能 ON,另一部使用預覽防震功能 OFF。系統會從每部影片中選取代表性影格,並進行分析,確保兩部影片中的 FoV 變化符合規格。

測試的 API:

通過:圓形的顯示比例大致保持不變,圓形的中心位置保持穩定,且圓形的大小變動幅度不超過 20%。

test_video_aspect_ratio_and_crop

在所有影片格式中,拍攝正方形內圓形的影片。擷取關鍵影格,並驗證圓形的顯示比例不會改變、裁剪的圖片會將圓形置中,且圓形大小不會因固定格式或不同解析度而改變 (檢查視野)。

測試的 API:

通過:影片畫格不會拉長,畫格中心的差異不超過 3%,且保留盡可能大的 FoV (視野)。

scene5

場景 5 需要均勻照明的灰色場景。方法是將散光器放在相機鏡頭上。我們建議使用下列擴散器:www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168

如要準備場景,請在相機前方安裝擴散板,並將相機對準約 2000 勒克斯的光源。為場景 5 拍攝的圖片必須使用漫射光源,且沒有明顯特徵。以下是示例圖片:

scene5

scene5 capture

test_lens_shading_and_color_uniformity

測試鏡頭陰影校正是否適當套用,以及單色均勻場景的顏色是否均勻分布。在使用自動 3A 的 YUV 影格上執行這項測試。鏡頭陰影會根據 y 通道進行評估。測量指定的每個樣本區塊的平均 y 值,並根據中心 y 值判斷是否通過。顏色均勻度測試會在 r/g 和 b/g 空間中進行評估。

測試的 API:

通過:在圖片的指定半徑範圍內,r/g 和 b/g 值的差異必須小於 20%,才能通過測試。

scene6

Scene6 是小圓形的網格,其中一個角落有方塊,用來表示方向。小圓圈可用於測試大範圍的縮放函式。在場景 6 中進行的測試可能會對對齊方式敏感,因此從 15 開始,您可以在工具目錄中使用 check_alignment.py,啟用對 DUT 和圖表對齊方式的檢查。

scene6

scene6

test_in_sensor_zoom

測試相機感應器內縮放功能的行為,產生經過裁剪的 RAW 圖片。

將串流用途設為 CROPPED_RAW 後,測試會在變焦範圍內拍攝兩張相片,分別是完整視野 (FoV) RAW 圖片和裁剪的 RAW 圖片。這項測試會將圖片轉換為 RGB 陣列,將完整裁剪的 RAW 圖片縮小至 SCALER_RAW_CROP_REGION 回報的大小,並計算兩張圖片之間的 3D 均方根差 (RMS) 差異。

測試的 API:

通過:經過縮減裁剪的 RAW 圖片與完整 FoV RAW 圖片之間的 3D 均方根 (RMS) 差異,低於測試中設定的閾值。

test_zoom

測試相機變焦行為。在縮放範圍內拍攝,並檢查圓形是否會隨著相機縮放而變大。對於每個格式 (YUV、JPEG),都會使用相同的相機擷取工作階段,以便匯集 3A 並擷取相片。

測試的 API:

通過:相對於要求的縮放比例,擷取圓形的相對大小正確無誤,可確保相機正確縮放。

test_zoom

test_zoom 找出最靠近中心的圓形輪廓。

test_low_latency_zoom

測試相機低延遲變焦行為。使用 android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) 在縮放範圍內進行擷取,並檢查輸出圖片中的圓形是否與擷取中繼資料中的縮放比例相符。同一個相機擷取工作階段會用於匯集 3A 並擷取相片。

測試的 API:

通過:相對於縮放比例結果中繼資料,擷取圓形的相對大小正確無誤。

test_preview_video_zoom_match

測試在錄製和縮放時,影片預覽畫面和影片輸出畫面是否顯示及錄製相同的輸出內容。計算在不同變焦比例下,最接近圓心圓形的大小,並檢查圓形的大小是否會隨著變焦比例增加而增加。

測試的 API:

通過:相對於影片和預覽畫面中要求的縮放比例,擷取圓形的相對大小正確無誤。

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png (縮放前)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (縮放前)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (縮放後)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (縮放後)

test_preview_zoom

測試每個預覽影格縮放比例是否與對應的擷取中繼資料相符。這項測試會在縮放範圍內擷取預覽影格,並找出最靠近圓心圓形的輪廓。接著,測試會檢查所選圓形是否會變大,以及圓形中心是否會在相機縮放時離開圖片中心。

測試的 API:

通過:所選圓圈的相對大小與所有預覽影格中對應的擷取結果回報的縮放比例相符。在所有預覽影格中,所選圓形與圖片中心的相對距離,與對應擷取結果的回報縮放比例相符。

test_zoom

test_preview_zoom 圖片顯示最靠近中心的所選圓形

test_session_characteristics_zoom

測試 CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION 中列出的所有支援工作階段設定的縮放比例範圍。針對每項設定,如果 CameraDeviceSetup#isSessionConfigurationSupported 傳回 true,測試會驗證是否可達到 CameraDeviceSetup#getSessionCharacteristics 中傳回的縮放比例範圍。

測試的 API:

通過:可達到 CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION 中列出的每個支援 SessionConfiguration 的最小和最大縮放比例。

scene7

場景 7 是矩形框架,分成四個相等的象限,每個象限都填入不同的顏色。矩形中央的斜邊圖表可用於檢查銳利度。四個 ArUco 標記會與矩形的四個外角對齊,以便在不同縮放比例下取得主矩形框架的正確座標。

scene7

scene7

test_multi_camera_switch

這項測試會驗證在以不同變焦比率錄製預覽畫面時,超廣角 (UW) 和廣角 (W) 鏡頭之間的切換會產生類似的 RGB 值。

這項測試會在預先定義的範圍內使用不同的縮放比例,執行動態預覽錄影,並找出實體相機變更的時間點。這個點代表從超廣角鏡頭切換到廣角鏡頭。

系統會分析在交叉點前後拍攝的畫面,以便進行自動曝光 (AE)、自動白平衡 (AWB) 和自動對焦 (AF) 的分析。

自動曝光檢查可確保 UW 和 W 鏡頭圖片的亮度變化都落在預期範圍內。AWB 檢查會驗證 R/G 和 B/G 的比例是否在 UW 和 W 鏡頭圖片的閾值範圍內。自動對焦檢查會根據 UW 和 W 鏡頭圖像之間的平均漸層大小,評估銳利度預估值。

測試的 API:

通過:AE、AWB 和 AF 檢查都必須通過,測試才能通過。以下是各項檢查的標準:

  • AE 檢查:UW 和 W 鏡頭圖像之間的亮度變化必須小於 0.5%。
  • AWB 檢查:UW 和 W 鏡頭圖片的 R/G 和 B/G 值差異必須小於 0.5%。
  • AF 檢查:UW 和 W 鏡頭圖像之間的圖像清晰度變化必須小於 2%。

scene8

Scene8 是矩形框架,分為四個相等的區域,每個區域都包含以不同曝光值拍攝的肖像照,或疊加不同色調 (藍色調、增加曝光、減少曝光、黃色調)。四個 ArUco 標記會與矩形的四個外角對齊,以便取得主矩形框架的正確座標。

scene8

scene8

test_ae_awb_regions

測試在不同自動曝光 (AE) 和自動白平 (AWB) 區域中預覽錄影時,RGB 和亮度值是否不同。

這項測試會記錄八秒的預覽錄影畫面,並在每個象限上執行 AE 和 AWB 測量,每次兩秒。然後從每個區域的預覽錄影中擷取影格,並使用擷取的畫格執行以下 AE 和 AWB 檢查:

  • AE 檢查:驗證曝光度降低的區域影格測量值,其增加的亮度值比曝光度增加的區域影格測量值高出 1% 以上。這可驗證在測量暗區時,圖像是否會變亮。
  • AWB 檢查:確認在使用藍色測光區域的影格中,紅色與藍色的比率 (圖片的平均 RGB 值) 比使用黃色測光區域的圖片高出 2%。這項測試可驗證在測量黃色 (暖色) 或藍色 (冷色) 區域時,圖片是否具有平衡的 RGB 值。

測試的 API:

通過:AE 和 AWB 檢查都通過。

失敗機制:

  • 這項測試必須準確偵測到所有四個 ArUco 標記。如果初始偵測失敗,系統會嘗試使用圖片的黑白版本進行第二次偵測。下圖中的灰階圖片代表次要處理步驟。

    ArUco 標記未對齊

scene9

場景 9 包含數千個隨機大小和顏色的圓形,用於建立重複性極低的場景,以便測試 JPEG 壓縮演算法。

scene9

scene9

test_jpeg_high_entropy

測試相機 JPEG 壓縮功能是否可在高熵的場景 9 中運作,並將 JPEG 品質係數設為 100%。縮放倍率會增加,確保平板電腦上顯示的場景可填滿攝影機的視野範圍。

測試的 API:

通過:JPEG 檔案已正確壓縮、寫入,並從磁碟讀取。

test_jpeg_quality

測試攝影機的 JPEG 壓縮畫質。透過 android.jpeg.quality 調整 JPEG 品質,並確保量化表正確變更。

測試的 API:

通過:量化矩陣會隨著品質提升而減少。(矩陣代表除數)。

test_jpeg_quality

Pixel 4 後置鏡頭亮度/色度 DQT 矩陣平均值與 JPEG 畫質

test_jpeg_quality 失敗

失敗的測試範例

請注意,對於品質極低的圖片 (jpeg.quality < 50),量化矩陣的壓縮率不會增加。

scene_video

scene_video 場景是影片場景。這張圖片包含四個不同顏色的圓形,以不同的影格速率在白色背景上來回移動。

scene_video

test_preview_frame_drop

測試要求的預覽影格速率是否在動態場景中維持不變。這項測試會在所有向第三方應用程式公開的攝影機上執行。

測試的 API:

通過:預覽影格速率達到要求影格速率範圍的最高值,且連續影格之間的平均變化幅度低於測試中設定的相對容差。

scene_extensions

scene_extensions 測試適用於相機擴充功能,且必須使用 Camera ITS-in-a-Box,因為這類測試需要精確控制測試環境。此外,所有光線洩漏都必須受到控制。這可能需要用防水布蓋住測試架、DUT 和平板電腦,並消除 DUT 前螢幕的光線洩漏。

scene_hdr

scene_hdr 情境包含左側的肖像和右側的低對比 QR code。

scene_hdr

scene_hdr

test_hdr_extension

測試 HDR 擴充功能。在啟用和未啟用擴充功能的情況下進行擷取,並檢查擴充功能是否可讓 QR code 更容易偵測。

測試的 API:

通過:HDR 擴充功能可減少偵測 QR code 所需的對比度變更次數,或減少 QR code 的漸層。

scene_low_light

scene_low_light 場景由黑色背景上的灰色方塊網格組成,而方塊網格則以紅色輪廓框住。正方形會以 Hilbert 曲線方向排列。

scene_low_light

scene_low_light

test_night_extension

測試夜間擴充功能。啟用擴充功能後進行擷取,並執行下列操作:

  • 偵測 20 個方塊
  • 計算每個正方形所界定的亮度
  • 根據 Hilbert 曲線格線方向,計算前 6 個方塊的平均亮度值
  • 計算連續方塊的亮度值差異 (例如方塊 2 減去方塊 1) 至方塊 5 和 6 (方塊 6 減去方塊 5),並找出這 5 個計算差異的平均值。

測試的 API:

通過:前 6 個方塊的平均亮度值至少須為 85,且連續方塊的平均亮度值差異 (至第 5 和第 6 個方塊) 至少須為 17。

下列亮度圖表顯示通過測試的結果。

scene_low_light_night_pass

test_low_light_boost_extension

測試 低光源增強 AE 模式。如果 Camera2 支援低光增強 AE 模式,則會為 Camera2 執行這項測試。如果支援夜間模式相機擴充功能,且擴充功能支援低光增強自動曝光模式,則系統也會針對夜間模式相機擴充功能執行這項測試。這項測試會將 AE 模式設為低光增強模式,從預覽畫面擷取影格,並執行下列操作:

  • 偵測 20 個盒子
  • 計算每個方塊內的亮度
  • 根據 Hilbert 曲線格線方向,計算前 6 個方塊的平均亮度值
  • 計算連續方塊的亮度值差異 (例如方塊 2 減去方塊 1) 至方塊 5 和 6 (方塊 6 減去方塊 5),並找出這 5 個計算差異的平均值。

測試的 API:

通過:前 6 個方塊的平均亮度值至少須為 70,且連續方塊 (至第 5 和 6 個方塊) 的亮度值平均差異至少須為 17。

scene_flash

scene_flash 測試需要在感應器融合方塊中顯示黑暗場景。

test_auto_flash

測試後置鏡頭和前置鏡頭在昏暗場景中是否會觸發自動閃光燈。對於前置鏡頭,自動閃光燈會使用螢幕照亮場景,而不是實體閃光燈。這項測試會檢查啟用自動閃光功能時,圖塊圖片的中心是否較亮,藉此驗證自動閃光功能是否已觸發。如要觸發自動閃光功能,必須關閉測試架中的燈光。您可以使用 Arduino 控制器自動關閉燈光。場景必須完全黑暗,測試才能正常運作。測試前,必須先在裝置上安裝 Jetpack Camera 應用程式 (JCA)。後置鏡頭的自動閃光燈會依據 AE 狀態觸發,但前置鏡頭的自動閃光燈不會依據 AE 狀態觸發,且一律會觸發。

測試的 API:

通過:啟用自動閃光燈的圖塊圖片中心比所有攝影機的原始場景圖片更亮。

test_flash_strength

測試 SINGLE 模式中的閃光燈強度控制項是否已正確實作。

確認裝置在 SINGLE 模式下使用相機時,是否支援閃光燈強度控制功能,並根據不同的要求強度等級變更閃光燈強度。驗證閃光燈強度控制功能是否可與不同的 AE_MODES 搭配運作。舉例來說,如果自動曝光模式為 ONOFF,閃光燈強度等級會影響亮度,如果模式為 ON_AUTO_FLASH,閃光燈強度等級就不會影響亮度。如要進行測試,必須關閉測試架中的燈光。燈光可透過 Arduino 控制器自動關閉。場景必須完全無光,測試才能正常運作。

測試的 API:

Pass:

當自動曝光模式為 ONOFF 時,閃光燈強度等級從無閃光增加到 FLASH_SINGLE_STRENGTH_MAX_LEVEL,圖片區塊的亮度也會隨之增加。當自動曝光模式為 ON_AUTO_FLASH 時,當閃光燈強度從不閃光增加到 FLASH_SINGLE_STRENGTH_MAX_LEVEL 時,圖片補丁的亮度差異會在容許值範圍內。

test_led_snapshot

測試 LED 快照是否不會使圖像過飽和或產生色調。

這項測試會在感應器融合盒中新增照明控制器,用於控制燈光。當燈光設為 OFF 時,測試會擷取設定為 AUTO_FLASHAUTO_FLASH 模式。ON在這個擷取期間,測試會執行預擷取序列,並將 aePrecapture 觸發條件設為 START,並將擷取意圖設為 Preview,以便使用閃光燈擷取相片。

由於快門有閃光造成的明顯熱點,因此這項測試會計算整個快照的閃光圖像平均值,並驗證該值是否在 (68, 102) 範圍內。為檢查圖片是否有合理的白平衡,這項測試會計算 R/G 和 B/G 比率,並驗證比率是否介於 0.95 和 1.05 之間。

測試的 API:

通過:R/G 和 B/G 比率介於 0.95 和 1.05 之間。閃光圖片的平均值介於 (68, 102) 之間。

test_preview_min_frame_rate

測試預覽畫面在昏暗場景中是否正確降低影格速率。為確保這項測試能正常運作,測試裝置中的燈光必須由控制器關閉,或由測試操作員手動關閉。

測試的 API:

通過:預覽影格速率位於要求影格速率範圍的下限,且影格之間的差異小於測試中設定的絕對容差。

test_torch_strength

測試 TORCH 模式中的閃光燈強度控制項是否已正確實作。

確認裝置在 TORCH 模式下使用相機時,是否支援閃光燈強度控制功能,並根據不同的要求強度等級變更手電筒強度。驗證閃光燈強度控制功能是否可與不同的 AE_MODES 搭配運作。舉例來說,如果自動曝光模式為 ONOFF,閃光燈強度等級會影響亮度,如果模式為 ON_AUTO_FLASH,閃光燈強度等級就不會影響亮度。驗證在連拍期間,手電筒強度是否維持不變,模擬錄影工作階段。如要進行測試,必須關閉測試架中的燈光。您可以使用 Arduino 控制器自動關閉燈光。場景必須完全黑暗,測試才能正常運作。

測試的 API:

Pass:

當自動曝光模式為 ONOFF 時,閃光燈強度等級從無閃光燈到 FLASH_TORCH_STRENGTH_MAX_LEVEL 時,圖片連拍區塊的亮度會隨之增加。當自動曝光模式為 ON_AUTO_FLASH 時,隨著閃光燈強度等級從無閃光到 FLASH_TORCH_STRENGTH_MAX_LEVEL,圖片連拍區塊的亮度差異會在容許範圍內。

sensor_fusion

感應器融合測試需要在格狀圖案和 ArUco 標記前,以特定方式移動手機。為獲得最佳結果,請確保測試圖表平放。非平面圖表會影響許多測試的旋轉計算。圖表必須以 17 英寸 x 17 英寸 (43 公分 x 43 公分) 的尺寸列印,填滿感應器融合盒的背面。sensor_fusion 測試可透過 Sensor Fusion Box 自動執行。

感應器融合圖表

感應器融合圖表

Rig 中的感應器整合圖表

填滿感應器融合方塊背面的感應器融合圖表

test_lens_intrinsic_calibration

測試鏡頭因光學影像穩定技術 (OIS) 而移動時,鏡頭內在的光學中心是否會變更。如果支援鏡頭內在樣本,請測試鏡頭內在樣本的光學中心,當鏡頭因光學影像穩定技術 (OIS) 而移動時,該光學中心是否會變更。

測試的 API:

通過:鏡頭的光學中心有一個或多個內在變化。如果支援鏡頭內在樣本,鏡頭內在樣本的光學中心會改變一個像素或更多。

test_lens_intrinsic_calibration_example.png

test_lens_intrinsic_calibration 圖表示例,顯示每個影格在像素中的主要點變化

test_multi_camera_frame_sync

透過計算格狀圖中的正方形角度來判斷時間戳記,測試邏輯攝影機擷取的影格時間戳記是否在 10 毫秒內。

測試的 API:

通過:當手機旋轉時,各鏡頭之間的圖片角度不會明顯改變。

test_preview_distortion

測試在不同縮放等級下拍攝的每個預覽影格,是否已修正失真情形。針對每個預覽影格,測試會根據相機內在和外在參數計算理想點。在示例圖片中,理想點以綠色顯示,實際點則以紅色顯示。系統會根據實際點與理想點之間的均方根誤差 (RMS) 像素距離,計算失真誤差。圖片上的綠色和紅色醒目提示可用於視覺偵測失真錯誤的區域。

test_preview_distortion_example.jpg

圖片:棋盤格圖,其中理想點為綠色,實際點為紅色

測試的 API:

通過:每個預覽影格經過標準化後的失真誤差低於測試中設定的門檻。

test_preview_stabilization

測試穩定的預覽影片旋轉角度是否小於陀螺儀。

測試的 API:

通過:影格上角旋轉角度的最大值小於陀螺儀旋轉角度的 70%。

以下是含有及不含穩定功能的影片範例。

  • 防震功能的影片範例

  • 未使用防震功能的影片範例

test_sensor_fusion

測試 AR 和 VR 應用程式相機與陀螺儀之間的時間戳記差異。在棋盤格圖案前,手機旋轉 90 度 10 次。移動時間約為 2 秒。如果沒有包含陀螺儀,或未啟用時間戳記來源 REALTIME 參數,系統會略過這項測試。

test_sensor_fusion 測試會產生多個圖表。偵錯時最重要的兩個圖表如下:

  • test_sensor_fusion_gyro_events:顯示手機在測試期間的陀螺儀事件。在 x 和 y 方向的移動表示手機未穩固地固定在固定板上,因此測試通過的機率會降低。圖表中的週期數量取決於儲存影格時的寫入速度。

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations:顯示陀螺儀和攝影機事件的對齊方式。這張圖表必須顯示相機和陀螺儀之間的移動相符,誤差範圍為 +/-1 毫秒。

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

測試的 API:

通過:根據 CDD 7.3.9 高保真感應器 [C-2-14] 的規定,相機和陀螺儀時間戳記的偏移量小於 1 毫秒。

失敗機制:

  • 偏移誤差:相機-陀螺儀偏移未正確校正至 +/-1 毫秒內。
  • 影格掉落:管道速度不夠快,無法連續擷取 200 個影格。
  • 通訊端錯誤:adb 無法可靠地連線至 DUT,連線時間不足以執行測試。
  • 圖表未平整安裝。圖表 test_sensor_fusion_plot_rotations 包含影格,當相機旋轉至圖表中非平坦的部分時,陀螺儀和相機旋轉角度會大幅變化。
  • 攝影機未平放。圖表 test_sensor_fusion_gyro_events 會顯示 X 和 Y 平面的移動情形。這種故障最常發生在前置鏡頭,因為後置鏡頭通常會比手機機身其他部分突出,因此當手機背面安裝在固定板時,會產生傾斜。

test_video_stabilization

測試穩定的影片旋轉角度是否小於陀螺儀。

測試的 API:

通過:影格上角旋轉角度的最大值小於陀螺儀旋轉角度的 60%。

以下是含有及不含穩定功能的影片範例。

  • 防震功能的影片範例

  • 未使用防震功能的影片範例

feature_combination

feature_combination 測試會驗證在同時啟用多個攝影機功能時,功能是否正常運作。這些測試會使用與感應器融合場景相同的格紋圖片。

test_feature_combination

測試相機裝置支援的所有串流組合、預覽穩定性、目標 FPS 範圍、10 位元 HDR 影片和超高動態範圍組合。這項測試會大量占用記憶體,因此建議您使用至少 128 GB RAM 的主機。

在 Android 15 以上版本中,設定檔包含 log_feature_combo_support 欄位,預設為 False。當 log_feature_combo_support 欄位設為 True 時,測試會執行所有支援功能的組合,並將結果記錄到 proto 檔案中,而不會導致測試失敗。如要進行法規遵循測試,log_feature_combo_support 欄位必須設為 False

測試的 API:

通過:針對每個支援的功能組合:

  • 開啟預覽防震功能後,預覽串流會保持穩定。
  • 預覽影格速率落在設定的 AE_TARGET_FPS_RANGE 範圍內。
  • 錄製的預覽串流色域與設定的色域相符。
  • Ultra HDR 擷取畫面含有有效的增益對應圖。