Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

カメラITSテスト

このページでは、Android互換性テストスイート(CTS)ベリファイアの一部であるCamera Image Test Suite(ITS)でのテストの包括的なリストを提供します。 ITSテストは機能テストです。つまり、画質は測定されませんが、宣伝されているすべてのカメラ機能が期待どおりに機能しています。このドキュメントにより、開発者とテスターは、個々のテストの機能とテストの失敗をデバッグする方法を理解できます。

テストは、次のようにシーンごとにグループ化されています。

  • シーン0メタデータ、ジッター、ジャイロスコープ、バイブレーションをキャプチャします
  • シーン1露出、感度、EV補正、YUVとJPEG / RAW
  • シーン2顔検出
  • シーン3エッジエンハンスメント、レンズの動き
  • シーン4アスペクト比、トリミング、視野
  • シーン5レンズシェーディング
  • シーン6ズーム
  • Sensor_fusionカメラ/ジャイロスコープのタイミングオフセット

各シーンの説明については、個々のセクションを参照してください。

シーン0

Scene0テストでは、特定のシーン情報は必要ありません。ただし、ジャイロスコープと振動テストのために、電話は静止している必要があります。

test_burst_capture

キャプチャパイプライン全体がフルサイズキャプチャの速度とCPU時間に追いつくことができることを確認します。

パス:フルサイズの画像のバーストをキャプチャし、カメラはタイムアウトを回避するのに十分な速度です。

test_capture_result_dump

キャプチャ結果が手動キャプチャから返されることをテストしてから、それをダンプします。

パス:キャプチャを完了し、キャプチャ結果をダンプします。

test_gyro_bias

デバイスが静止しているときにジャイロの出力が安定しているかどうかをテストします。データは、20個のデータポイントの平均としてプロットされます。

合格:ジャイロ測定値のデルタは、時間の経過とともに0.01未満です。

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

カメラのタイムスタンプのジッターを測定します。

パス:フレーム間に少なくとも30ミリ秒のデルタがあります。

影響を受けるカメラパラメータ:

  • AE_TARGET_FPS_RANGE
  • SENSOR_TIMESTAMP

test_jitter_plot.png

test_jitter_plot.png(y軸の範囲が小さいことに注意してください。このプロットでは実際にはジッタが小さくなっています。)

test_metadata

メタデータエントリの有効性をテストします。キャプチャ結果とカメラ特性オブジェクトを確認します。このテストでは、画像の内容は重要ではないため、 auto_capture_request露出値とゲイン値を使用します。

パス:ハードウェアレベル、 rollingShutterSkewframeDurationタグ、 timestampSourcecroppingTypeblackLevelPatternpixel_pitch 、FOV、過焦点距離が存在し、有効な値を持っています。

影響を受けるカメラパラメータ:

  • CONTROL_AE_TARGET_FPS_RANGE
  • LENS_FOCAL_DISTANCE
  • SCALER_TYPE_REGION
  • SENSOR_DYNAMIC_BLACK_LEVEL
  • SENSOR_FRAME_DURATION
  • SENSOR_TIMESTAMP
  • SENSOR_ROLLING_SHUTTER_SKEW

test_param_sensitivevity_burst

android.sensor.sensitivityパラメーターがバーストで適切に適用されていることをテストします。出力メタデータのみを検査します。

合格:出力データの許容誤差は0.2%未満です。

影響を受けるカメラパラメータ:

  • SENSOR_SENSITIVITY

test_read_write

キャプチャメタデータを読み戻すことにより、デバイスが正しい露出値とゲイン値を書き込むことをテストします。

パス:読み取り値と書き込み値はすべてのショットで一致します。

影響を受けるカメラパラメータ:

  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY

test_sensor_events

デバイスがセンサーフュージョンサポートをアドバタイズするデバイスのセンサーイベントを照会して出力することをテストします。予想されるセンサーは、加速度計、ジャイロスコープ、磁力計です。このテストは、画面がオンになっている場合、つまりデバイスがスタンバイモードになっていない場合にのみ機能します。

パス:各センサーのイベントが受信されます。

test_solid_color_test_pattern

カメラのミューティング用に単色のテストパターンが適切に生成されることをテストします。カメラのミュートがサポートされている場合は、単色のテストパターンをサポートする必要があります。カメラのミュートがサポートされていない場合、単色のテストパターンは、機能がアドバタイズされている場合にのみテストされます。

RAW画像がサポートされている場合は、色の割り当てもテストされます。テストされた色は、黒、白、赤、青、および緑です。 RAW画像をサポートしていないカメラの場合、黒のみがテストされます。

合格:サポートされているソリッドテストパターンは正しい色であり、画像の変動は少ないです。

影響を受けるカメラパラメータ:

  • SENSOR_AVAILABLE_TEST_PATTERN_MODES
  • SENSOR_TEST_PATTERN_DATA
  • SENSOR_TEST_PATTERN_MODE

test_test_pattern

android.sensor.testPatternModeパラメーターをテストして、有効なテストパターンごとにフレームをキャプチャし、フレームが単色とカラーバーに対して正しく生成されていることを確認します。このテストには、次の手順が含まれます。

  1. サポートされているすべてのテストパターンの画像をキャプチャします。
  2. 単色テストパターンとカラーバーの簡単な正確性チェックを実行します。

合格:サポートされているテストパターンが正しく生成されます。

影響を受けるカメラパラメータ:

  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • SENSOR_AVAILABLE_TEST_PATTERN_MODES
  • SENSOR_TEST_PATTERN_MODE

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

線形トーンマップを使用して、RAWからYUVへのテストパターンの変換をテストします。このテストでは、トーンマップ変換用の完全な画像パターンを生成するためにandroid.sensor.testPatternMode = 2 (COLOR_BARS)が必要です。パイプラインに線形トーンマップと理想的な画像入力を備えた適切なカラー出力があることを確認します( test_test_patternsに依存します)。

パス: YUVとRAWは互いに似ています。

影響を受けるカメラパラメータ:

  • DISTORTION_CORRECTION_MODE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • SENSOR_TEST_PATTERN_MODE
  • TONEMAP_CURVE
  • TONEMAP_MODE

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

画像とモーションセンサーのイベントが同じ時間領域にあるかどうかをテストします。

パス:モーションタイムスタンプは、2つの画像タイムスタンプの間にあります。

影響を受けるカメラパラメータ:

  • SENSOR_TIMESTAMP

test_vibration_restriction

デバイスの振動が期待どおりに機能しているかどうかをテストします。

パス:カメラの音声制限APIによってミュートされた場合、デバイスは振動しません。

シーン1

シーン1は灰色のグラフです。灰色のグラフは、カメラの視野の中央30%をカバーする必要があります。中央の領域には機能がないため、灰色のグラフは3A(自動露出、自動ホワイトバランス、自動フォーカス)に適度に挑戦すると予想されます。ただし、キャプチャ要求は、3Aが収束するのに十分な機能を含むシーン全体を指定します。

RFoVカメラは、WFoVまたはRFoVテストリグでテストできます。 RFoVカメラがWFoVテストリグでテストされる場合、チャートは2/3でスケーリングされ、3Aが収束するのを助けるためにFoVの灰色のチャートの境界が確保されます。

シーン1

シーン1:フルサイズのチャート(左)。 ⅔縮尺チャート(右)。

test_3a

適度に挑戦的なターゲットで3Aの収束をテストします。

パス: 3Aが収束し、返された3A値は有効です。

test_ae_af

3A自動露出(AE)およびオートフォーカス(AF)アルゴリズムを個別にテストします。

パス: 3Aは収束し、返された3A値は有効です。

test_ae_precapture_trigger

プレキャプチャトリガーを使用するときにAEステートマシンをテストします。 AEを無効にして5つの手動リクエストをキャプチャします。最後のリクエストにはAEプリキャプチャトリガーがありますが、AEが無効になっているため、無視する必要があります。

パス: AEが収束します。

影響を受けるカメラパラメータ:

  • CONTROL_AE_MODE
  • CONTROL_AE_STATE
  • CONTROL_AE_PRECAPTURE_TRIGGER

test_auto_vs_manual

自動ショットと手動ショットをキャプチャしたテストは同じように見えます。

パス:各キャプチャ結果で報告される手動ホワイトバランスゲインと変換は、カメラの3Aアルゴリズムからの自動ホワイトバランスestimate一致します。

影響を受けるカメラパラメータ:

  • COLOR_CORRECTION_GAINS
  • COLOR_CORRECTION_TRANSFORM
  • TONEMAP_CURVE
  • TONEMAP_MODE

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

デバイスが完全な白黒画像を生成することをテストします。 2つのキャプチャを取得します。1つ目はゲインが非常に低く露出が短いため黒の写真になり、2つ目はゲインが非常に高く露出が長くて白の写真になります。

パス:白黒画像を生成します。

影響を受けるカメラパラメータ:

  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
test_black_white_blacktest_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_sameness_manual

手動キャプチャ設定で50枚の画像を5回バーストし、それらがすべて同一であることを確認します。このテストは、異なる方法で処理された、またはアーティファクトがある散発的なフレームがあるかどうかを識別するために使用できます。

パス:画像は視覚的にも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オブジェクトに返されることをテストします。自動、手動、および自動キャプチャを実行します。

パス:メタデータはすべてのキャプチャに有効であり、手動設定が2番目の自動キャプチャに漏れることはありません。キャプチャのレンズシェーディング補正をプロットします。

影響を受けるカメラパラメータ:

  • CONTROL_AE_MODE
  • CONTROL_AE_REGIONS
  • CONTROL_AF_MODE
  • CONTROL_AF_REGIONS
  • CONTROL_AWB_MODE
  • CONTROL_AWB_REGIONS
  • CONTROL_MODE
  • COLOR_CORRECTION_GAINS
  • COLOR_CORRECTION_TRANSFORM
  • COLOR_CORRECTION_MODE
  • CONTROL_MODE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • STATISTICS_LENS_SHADING_CORRECTION_MAP
  • STATISTICS_LENS_SHADING_MAP_MODE
  • TONEMAP_CURVE
  • TONEMAP_MODE

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_channel_saturation

画像の飽和領域での色合いを排除するために、RGBチャネルが均一に飽和することをテストします。

合格:飽和チャネルのRGB値は[255、255、255]で、許容誤差は1%未満です。

影響を受けるカメラパラメータ:

  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY

test_channel_saturation

test_channel_saturation.jpg

test_crop_region_raw

RAWストリームがトリミングできないことをテストします。

パス: YUV画像は中央でトリミングされますが、RAW画像は取得されません。

影響を受けるカメラパラメータ:

  • SCALER_CROP_REGION

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つの領域にトリミングを設定して画像を撮影します。パッチとトリミング画像の値を比較します。

パス:トリミングされた領域の画像は、トリミングされた画像に対応するパッチと一致します。

影響を受けるカメラパラメータ:

  • SCALER_CROP_REGION

test_dng_noise_model

DNGrawモデルパラメータが正しいことを確認します。プロットは、ある範囲の感度でキャプチャされた生のショットでグレーカードの中央パッチの測定された分散を示し、これらの値をカメラHALのDNGノイズモデルによって各感度で期待される分散と比較します(キャプチャ結果オブジェクトで返されるO、Sパラメータ)。 DNGノイズモデルの詳細については、DNGノイズモデルに関する次のドキュメントをダウンロードしてください。

合格: DNGrawモデルのパラメーターは正しいです。予想されるRGB値は、測定された実際のRGB値の値と一致します。

影響を受けるカメラパラメータ:

  • SENSOR_DYNAMIC_WHITE_LEVEL
  • SENSOR_SENSITIVITY

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

露出値(EV)補正が適用されていることをテストします。このテストでは、露出を8段階で増やし、測定された明るさと予想される明るさを比較します。期待値は、EV補正が適用されていない画像の画像の明るさから計算され、計算値が実際の画像値の範囲を超えると、期待値は飽和します。期待値と測定値が一致しないか、5ステップ以内に画像が露出オーバーになると、テストは失敗します。

パス:画像は、5ステップ以内に露出オーバーすることなく露出が増加することを示しています。

影響を受けるカメラパラメータ:

  • AE_EXPOSURE_COMPENSATION
  • CONTROL_AE_EXPOSURE_COMPENSATION
  • CONTROL_AE_LOCK
  • CONTROL_AE_STATE
  • TONEMAP_CURVE
  • TONEMAP_MODE

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

露出を徐々に増やしてEV補正を適用することをテストします。画像は露出を徐々に増やしますが、 test_ev_compensation_advancedテストのように露出オーバーにはなりません。

パス:輝度の増加をキャプチャします。

影響を受けるカメラパラメータ:

  • CONTROL_AE_EXPOSURE_COMPENSATION
  • CONTROL_AE_LOCK
  • CONTROL_AE_STATE

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure

ISOと露光時間が変化するときに、一定の露光が達成されることをテストします。 ISOと露出時間をバランスよく選択した一連のショットを撮ります。結果は同じ明るさになるはずですが、シーケンス全体で画像のノイズが大きくなるはずです。サンプルピクセルの平均値が互いに近いことを確認します。画像が0または1にクランプされていないことを確認します(これにより、画像が平らな線のように見えます)。

合格:画像の明るさは同じですが、ISOが高いほどノイズが多くなります。 RGBプレーンはフラットで、一定のISO露出があります。

影響を受けるカメラパラメータ:

  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult = 1.00test_exposure_mult = 64.00
test_exposure_mult = 1.00.jpg test_exposure_mult = 64.00.jpg

test_jpeg

YUV画像とデバイスのJPEG画像を変換したテストは同じように見えます。テストでは、画像の中央の10%を取得し、RGB値を計算して、それらが一致することを確認します。

合格:各画像間の平均RGB差は3%未満です。

test_jpeg_fmt = jpg.jpgtest_jpeg = fmt = yuv.jpg
test_jpeg_fmt = jpg.jpg test_jpeg = fmt = yuv.jpg

test_latching

設定(露出とゲイン)が右側のフレームにラッチすることをテストします。連続したリクエストを使用して一連のショットを撮影し、ショット間でキャプチャリクエストのパラメータを変更します。画像に期待されるプロパティがあることを確認します。

合格:画像[2、3、6、8、10、12、13]は、ISOまたは露出が増加し、 test_latching_plot_means.pngでより高いRGB平均で表示されます。

test_latching_i = 00.jpgtest_latching_i = 01.jpgtest_latching_i = 02.jpg
test_latching_i = 00.jpg test_latching_i = 01.jpg test_latching_i = 02.jpg
test_latching_i = 03.jpgtest_latching_i = 04.jpgtest_latching_i = 05.jpg
test_latching_i = 03.jpg test_latching_i = 04.jpg test_latching_i = 05.jpg
test_latching_i = 06.jpgtest_latching_i = 07.jpgtest_latching_i = 08.jpg
test_latching_i = 06.jpg test_latching_i = 07.jpg test_latching_i = 08.jpg
test_latching_i = 09.jpgtest_latching_i = 10.jpgtest_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

デバイス処理を線形ピクセルに反転できることをテストします。デバイスを均一なターゲットに向けて一連のショットをキャプチャします。

パス:すべてのISP処理を反転して、線形R、G、Bピクセルデータに戻します。

影響を受けるカメラパラメータ:

  • BLACK_LEVEL_LOCK
  • SENSOR_SENSITIVITY
  • TONEMAP_CURVE
  • TONEMAP_MODE

test_linearity_sens = 0597

test_linearity_sens = 0597.jpg

test_linearity_sens = 1194

test_linearity_sens = 1194.jpg

test_linearity_sens = 1791

test_linearity_sens = 1791.jpg

test_linearity_sens = 2388

test_linearity_sens = 2388.jpg

test_linearity_sens = 2985

test_linearity_sens = 2985.jpg

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

3AロックとYUVバーストをテストします(自動設定を使用)。このテストは、 MANUAL_SENSORまたはPER_FRAME_CONTROLSを持たない限られたデバイスでも合格するように設計されています。このテストでは、フレームレートチェックがCTSで行われているときに、YUV画像の整合性をチェックします。

パス:キャプチャは一貫しているように見えます。

影響を受けるカメラパラメータ:

  • CONTROL_AE_LOCK
  • CONTROL_AWB_LOCK

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_multi_camera_match

デバイス上のマルチカメラがグレーパッチに対して同様のRGB値を提供するかどうかを確認するためのテスト。

パス:異なるカメラは、同じグレーパッチに対して同様のRGB値を生成します。

影響を受けるカメラパラメータ:

  • LENS_FOCAL_LENGTH
  • SCALER_CROP_REGION

test_multi_camera + match_yuv_fl = 4.38

test_multi_camera + match_yuv_fl = 4.38.jpg

test_param_color_correction

設定時にandroid.colorCorrection.*パラメーターが適用されることをテストします。変換値とゲイン値が異なるショットを撮り、それに応じて外観が異なることをテストします。変換とゲインは、出力がますます赤または青になるように選択されます。線形トーンマップを使用します。トーンマッピングは、画像処理で使用される手法で、ある色のセットを別の色にマッピングして、ダイナミックレンジがより制限されたメディア内の高ダイナミックレンジの画像の外観を近似します。

パス: RとBの値は変換に従ってブーストします。

影響を受けるカメラパラメータ:

  • COLOR_CORRECTION_GAINS
  • COLOR_CORRECTION_MODE
  • COLOR_CORRECTION_TRANSFORM

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_exposure_time

そのandroidをテストします。 sensorexposureTimeパラメータが適用されます。

パス:各ショットは前のショットよりも明るくなっています。

影響を受けるカメラパラメータ:

  • SENSOR_EXPOSURE_TIME

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

android.flash.modeパラメーターが適用されていることをテストします。手動で露出を暗く設定し、フラッシュが発光したかどうかがわかるようにし、リニアトーンマップを使用します。タイル画像で中央をチェックして、フラッシュが発光したかどうかを確認するために作成された大きなグラデーションがあるかどうかを確認します。

パス:タイル画像の中央に大きなグラデーションがあり、フラッシュが発光したことを意味します。

影響を受けるカメラパラメータ:

  • FLASH_MODE
  • FLASH_STATE

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オフ、「高速」、「高品質」の3つの画像をキャプチャします。また、ゲインが低くNRがオフの画像をキャプチャし、この分散をベースラインとして使用します。 SNR(信号対雑音比)が高いほど、画質は向上します。

合格: SNRはノイズリダクションモードによって異なり、下のグラフと同じように動作します。

影響を受けるカメラパラメータ:

  • NOISE_REDUCTION_MODE

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_sensitivevity

android.sensor.sensitivityパラメーターが適用されていることをテストします。このテストでは、ショットごとに露出を固定して、感度を5ステップで向上させます。

パス:中央のRGB平均10%は、感度が上がると明るくなります。

影響を受けるカメラパラメータ:

  • SENSOR_SENSITIVITY

test_param_sensitivevity_iso = 0055

test_param_sensitivevity_iso = 0055.jpg

test_param_sensitivevity_iso = 1819

test_param_sensitivevity_iso = 1819.jpg

test_param_sensitivevity_iso = 3583

test_param_sensitivevity_iso = 3583.jpg

test_param_sensitivevity_iso = 5347

test_param_sensitivevity_iso = 5347.jpg

test_param_sensitivevity_iso = 7111

test_param_sensitivevity_iso = 7111.jpg

test_param_sensitivevity_plot

test_param_sensitivevity_plot.png

test_param_shading_mode

android.shading.modeパラメーターが適用されていることをテストします。

パス:シェーディングモードが切り替えられ、レンズのシェーディングマップが期待どおりに変更されます。

影響を受けるカメラパラメータ:

  • SHADING_MODE
  • STATISTICS_LENS_SHADING_CORRECTION_MAP
  • STATISTICS_LENS_SHADING_MAP_MODE

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の2つのテストで構成されています。

パス:

  • test1:両方の画像は線形トーンマップを持っていますが、n = 1はより急な勾配を持っています。 G(緑)チャネルは、n = 1の画像の方が明るくなります。
  • test2:トーンマップは同じですが、長さが異なります。画像は同じです。

影響を受けるカメラパラメータ:

  • TONEMAP_CURVE
  • TONEMAP_MODE
test_param_tonemap_mode_n = 0.jpgtest_param_tonemap_mode_n = 1.jpg
test_param_tonemap_mode_n = 0.jpg test_param_tonemap_mode_n = 1.jpg

test_post_raw_sensitivevity_boost

ポストRAW感度ブーストをチェックします。感度の異なるRAW画像とYUV画像のセットをキャプチャし、RAW感度ブーストの組み合わせを投稿し、出力ピクセルの平均がリクエスト設定と一致するかどうかを確認します。

パス:ブーストが増加するとRAW画像は暗くなりますが、YUV画像の明るさは一定に保たれます

影響を受けるカメラパラメータ:

  • CONTROL_POST_RAW_SENSITIVITY_BOOST

test_post_raw_sensitivevity_boost_raw_s = 3583_boost = 0100

test_post_raw_sensitivevity_boost_raw_s = 3583_boost = 0100.jpg

test_post_raw_sensitivevity_boost_raw_s = 1792_boost = 0200

test_post_raw_sensitivevity_boost_raw_s = 1792_boost = 0200.jpg

test_post_raw_sensitivevity_boost_raw_s = 0896_boost = 0400

test_post_raw_sensitivevity_boost_raw_s = 0896_boost = 0400.jpg

test_post_raw_sensitivevity_boost_raw_s = 0448_boost = 0800

test_post_raw_sensitivevity_boost_raw_s = 0448_boost = 0800.jpg

test_post_raw_sensitivevity_boost_raw_s = 0224_boost = 1600

test_post_raw_sensitivevity_boost_raw_s = 0224_boost = 1600.jpg

test_post_raw_sensitivevity_boost_raw_s = 0112_boost = 3199

test_post_raw_sensitivevity_boost_raw_s = 0112_boost = 3199.jpg

test_post_raw_sensitivevity_boost_raw_plot_means

test_post_raw_sensitivevity_boost_raw_plot_means.png

test_post_raw_sensitivevity_boost_yuv_s = 0112_boost = 3199

test_post_raw_sensitivevity_boost_yuv_s = 0112_boost = 3199.jpg

test_post_raw_sensitivevity_boost_yuv_s = 0448_boost = 0800

test_post_raw_sensitivevity_boost_yuv_s = 0448_boost = 0800.jpg

test_post_raw_sensitivevity_boost_yuv_s = 0896_boost = 0400

test_post_raw_sensitivevity_boost_yuv_s = 0896_boost = 0400.jpg

test_post_raw_sensitivevity_boost_yuv_s = 1792_boost = 0200

test_post_raw_sensitivevity_boost_yuv_s = 1792_boost = 0200.jpg

test_post_raw_sensitivevity_boost_yuv_s = 3585_boost = 0100

test_post_raw_sensitivevity_boost_yuv_s = 3585_boost = 0100.jpg

test_post_raw_sensitivevity_boost_yuv_plot_means

test_post_raw_sensitivevity_boost_yuv_plot_means.png

test_raw_burst_sensitivevity

ゲインを上げながら生の画像のセットをキャプチャし、ノイズを測定します。生のみをバーストでキャプチャします。

パス:ゲインが増加するため、各ショットは前のショットよりもノイズが多くなります。

中央の統計グリッドセルの分散を使用します。

test_raw_burst_sensitivevity_variance

test_raw_burst_sensitivevity_variance.png

test_raw_exposure

露光時間を増やしながら生の画像のセットをキャプチャし、ピクセル値を測定します。

パス: 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_sensitivevity

感度を上げて生の画像のセットをキャプチャし、画像の中央の10%のノイズ(分散)を測定します。各ショットが前のショットよりもノイズが多いことをテストします。

パス:分散はショットごとに増加します。

test_raw_sensitivevity_variance

test_raw_sensitivevity_variance.png

test_reprocess_noise_reduction

android.noiseReduction.modeが再処理リクエストに適用されていることをテストします。カメラを薄暗い状態で再処理した画像をキャプチャします。高いアナログゲインを使用して、キャプチャ画像にノイズが多いことを確認します。 NRオフ、「高速」、「高品質」の3つの再処理された画像をキャプチャします。低ゲインとNRオフで再処理された画像をキャプチャし、これの分散をベースラインとして使用します。

パス: FAST> = OFF、HQ> = FAST、HQ >> OFF

影響を受けるカメラパラメータ:

  • NOISE_REDUCTION_MODE

典型的なSNR対NR_MODEプロット

典型的なSNR対NR_MODEプロット

test_tonemap_sequence

さまざまなトーンマップ曲線を使用して一連のショットをテストします。線形トーンマップで3つの手動ショットをキャプチャします。デフォルトのトーンマップで3つの手動ショットをキャプチャします。連続する各フレームペア間のデルタを計算します。

パス: 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

報告されたすべてのサイズとフォーマットが画像キャプチャで機能することをテストします。線形トーンマップを使用した手動リクエストを使用して、its.imageモジュールで変換したときにYUVとJPEGが同じように見えるようにします。

合格:すべての画像中心には、最高解像度のYUV画像の3%のRGB変換画像で最大RMS(信号の二乗平均平方根値)の差があります。

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

報告された画像キャプチャのサイズとフォーマットが機能することをテストします。

合格:テストが完了し、要求された画像が返されます。

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

YUV出力とJPEG出力の両方として単一のフレームをキャプチャすることをテストします。 YUVとJPEGが同じように見えるように線形トーンマップを使用した手動リクエストを使用します( its.imageモジュールによって変換された場合)。

合格: YUV画像とJPEG画像は類似しており、RMS(信号の二乗平均平方根値)の差は1%未満です。

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

RAW出力とYUV出力の両方として単一のフレームをキャプチャすることをテストします。リニアトーンマップを使用した手動リクエストを使用するため、RAWとYUVは同じであると予想されます。 RGB変換された画像の中央の10%RGB値を比較します。 android.shading.modeをログに記録します。

合格: YUV画像とJPEG画像は類似しており、RMS(信号の二乗平均平方根値)の差は3.5%未満です。

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

影響を受けるカメラパラメータ:

  • SHADING_MODE

test_yuv_plus_raw10

RAW10とYUVの両方の出力として単一のフレームをキャプチャすることをテストします。リニアトーンマップを使用した手動リクエストを使用するため、RAWとYUVは同じであると予想されます。 RGB変換された画像の中央の10%RGB値を比較します。 android.shading.modeをログに記録します。

合格: RAW10画像とYUV画像は類似しており、RMS(信号の二乗平均平方根値)の差は3.5%未満です。

影響を受けるカメラパラメータ:

  • SHADING_MODE
test_yuv_plus_raw10_shading = 1_rawtest_yuv_plus_raw10_shading = 1_yuv
test_yuv_plus_raw10_shading = 1_raw.jpg test_yuv_plus_raw10_shading = 1_yuv.jpg

test_yuv_plus_raw12

RAW12とYUVの両方の出力として単一のフレームをキャプチャすることをテストします。リニアトーンマップを使用した手動リクエストを使用するため、RAWとYUVは同じであると予想されます。 RGB変換された画像の中央の10%RGB値を比較します。 android.shading.modeをログに記録します。

合格: RAW12画像とYUV画像は類似しており、RMS(信号の二乗平均平方根値)の差は3.5%未満です。

test_yuv_plus_raw12_shading = 1_raw.jpgtest_yuv_plus_raw12_shading = 1_yuv.jpg
test_yuv_plus_raw12_shading = 1_raw.jpg test_yuv_plus_raw12_shading = 1_yuv.jpg

シーン2_a

Scene2_aには、背景が灰色でニュートラルな服を着た3つの面があります。顔は幅広い肌の色合いを持つように選択されています。

シーン2_a

シーン2_a

test_effects

サポートされているカメラ効果のフレームをキャプチャし、それらが正しく生成されているかどうかを確認します。このテストでは、エフェクトOFFMONOのみがチェックされますが、サポートされているすべてのエフェクトの画像が保存されます。

パス:エフェクトがOFFのシーン画像と、エフェクトがMONOに設定されたモノクロ画像をキャプチャします。

影響を受けるカメラパラメータ:

  • CONTROL_EFFECT_MODE

test_effects_MONO

test_effects_MONO.jpg

test_faces

顔検出をテストします。画像は保存されますが、ボックスとランドマークの情報はtest_faces_stdout.txtに一覧表示されます。

合格:画像から少なくとも1つの顔を検出します。

影響を受けるカメラパラメータ:

  • STATISTICS_FACE_DETECT_MODE

test_format_combos

出力形式のさまざまな組み合わせをテストします。

合格:すべての組み合わせが正常にキャプチャされます。

test_jpeg_quality

カメラのJPEG圧縮品質をテストします。 android.jpeg.qualityを介してJPEG品質をステップします。

合格:量子化マトリックスは、品質の向上とともに減少します。 (行列は除数を表します。)

test_jpeg_quality

Pixel4リアカメラの輝度/彩度DQTマトリックス平均とJPEG品質

test_jpeg_qualityが失敗しました

失敗したテスト例

非常に低品質の画像(jpeg.quality <50)の場合、量子化マトリックスの圧縮率は増加しないことに注意してください。

影響を受けるカメラパラメータ:

  • JPEG_QUALITY

test_num_faces

顔検出をテストします。

パス: 3つの顔を検索します。

影響を受けるカメラパラメータ:

  • STATISTICS_FACES
  • STATISTICS_FACE_DETECT_MODE

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

シーン2_b

test_auto_per_frame_control

自動キャプチャ要求のPER_FRAME_CONTROLプロパティをテストします。

パス:すべてのPER_FRAME_CONTROLプロパティが存在します。

影響を受けるカメラパラメータ:

  • COLOR_CORRECTION_GAIN
  • COLOR_CORRECTION_TRANSFORM
  • CONTROL_AE_STATE
  • CONTROL_AWB_STATE
  • CONTROL_POST_RAW_SENSITIVITY_BOOST
  • LENS_FOCUS_DISTANCE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • STATISTICS_LENS_SHADING_MAP_MODE
  • STATISTICS_LENS_SHADING_CORRECTION_MAP
  • TONEMAP_CURVE
  • TONEMAP_MODE

test_auto_per_frame_control_frame_1

test_auto_per_frame_control_frame_1.jpg

test_auto_per_frame_control_frame_10

test_auto_per_frame_control_frame_10.jpg

test_auto_per_frame_control_frame_29

test_auto_per_frame_control_frame_29.jpg

test_auto_per_frame_control_plot

test_auto_per_frame_control_plot.png

test_num_faces

顔のシーンで肌の色の多様性を高めて顔検出をテストします。

パス: 3つの顔を検索します。

影響を受けるカメラパラメータ:

  • STATISTICS_FACES
  • STATISTICS_FACE_DETECT_MODE

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

シーン2_c

test_num_faces

顔のシーンで肌の色の多様性を高めて顔検出をテストします。

パス: 3つの顔を検索します。

影響を受けるカメラパラメータ:

  • STATISTICS_FACES
  • STATISTICS_FACE_DETECT_MODE

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

CDDのセクション2.2.7.2カメラで指定されているSパフォーマンスクラスのJPEGキャプチャレイテンシをテストします。

合格:両方のプライマリカメラのITS照明条件(3000K)でCTSカメラのPerformanceTestによって測定された、1080pの解像度でcamera2JPEGキャプチャレイテンシが1000ms未満である必要があります。

test_camera_launch_perf_class

セクション2.2.7.2CDDのカメラで指定されているように、Sパフォーマンスクラスのカメラ起動遅延をテストします。

合格:両方のプライマリカメラのITS照明条件(3000K)でCTSカメラPerformanceTestによって測定された場合、camera2の起動待ち時間(最初のプレビューフレームまでカメラを開く)が600ms未満である必要があります。

シーン2_d

test_num_faces

顔のシーンで肌の色の多様性を高めて顔検出をテストします。

パス: 3つの顔を検索します。

影響を受けるカメラパラメータ:

  • STATISTICS_FACES
  • STATISTICS_FACE_DETECT_MODE

アサート

num_faces == 3をアサートします。

シーン2_e

test_continuous_picture

50 VGA解像度のフレームは、キャプチャ要求の最初の設定android.control.afMode = 4 (CONTINUOUS_PICTURE).

パス: 3Aシステムは、50フレームのキャプチャの最後に落ち着きます。

影響を受けるカメラパラメータ:

  • CONTROL_AE_STATE
  • CONTROL_AE_REGIONS
  • CONTROL_AF_MODE
  • CONTROL_AF_STATE
  • CONTROL_AWB_STATE
  • CONTROL_CAPTURE_INTENT
  • CONTROL_MODE
  • CONTROL_POST_RAW_SENSITIVITY_BOOST
  • LENS_FOCAL_LENGTH
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY

test_num_faces

顔のシーンで肌の色の多様性を高めて顔検出をテストします。

パス: 3つの顔を検索します。

影響を受けるカメラパラメータ:

  • STATISTICS_FACES
  • STATISTICS_FACE_DETECT_MODE

アサート

num_faces == 3をアサートします。

シーン3

Scene3はISO12233チャートを使用し、ほとんどのテストはチャート抽出メソッドを使用してシーン内のチャートを検索します。このため、保存された画像のほとんどには、シーン1、2、または4の画像のような境界線はなく、チャートのみがあります。

test_3a_consistency

3Aの整合性をテストします。

パス: 3Aは、露出、ゲイン、awb(自動ホワイトバランス)、およびfd(焦点距離)について、許容範囲内で3回収束します。

test_edge_enhancement

android.edge.modeパラメーターが正しく適用されていることをテストします。エッジモードごとに非再処理画像をキャプチャし、出力画像のシャープネスとキャプチャ結果のメタデータを返します。指定されたエッジモード、感度、露出時間、焦点距離、および出力サーフェスパラメータを使用してキャプチャ要求を処理します。

パス:高速モードは、HQ(高品質)モードよりもシャープではありません。

影響を受けるカメラパラメータ:

  • EDGE_MODE
  • LENS_FOCUS_DISTANCE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY

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

画像の向きが正しいかどうかをテストします。ミラーリング、反転、または回転した画像は、中央付近のひし形の特徴で識別できます。

パス:画像は反転、ミラーリング、または回転されません。

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_lens_movement_reporting

レンズ移動フラグが適切に報告されているかどうかをテストします。最適な焦点距離(3Aで検出)の最初の12フレームと、最小の焦点距離の最後の12フレームで24枚の画像のバーストをキャプチャします。 Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.

Pass: Lens movement flag is True in the frame with sharpness change.

Impacted camera parameters:

  • LENS_FOCUS_DISTANCE
  • LENS_STATE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • SENSOR_TIMESTAMP

test_lens_position

Tests if the focus position is properly reported for moving lenses.

Pass: Correct focus positions are reported.

Impacted camera parameters:

  • LENS_FOCUS_DISTANCE
  • LENS_STATE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • SENSOR_TIMESTAMP

test_reprocess_edge_enhancement

Returns sharpness of the output images and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, output surface parameter, and reprocess format.

Pass: Sharpness for the different edge modes is correct.

Impacted camera parameters:

  • EDGE_MODE
  • LENS_FOCUS_DISTANCE
  • REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY

scene4

Scene4 consists of a black circle on a white background inside a square.

scene4

scene4

test_aspect_ratio_and_crop

Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).

Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.

Impacted camera parameters:

  • LENS_DISTORTION
  • LENS_FOCAL_LENGTH
  • LENS_INTRINSIC_CALIBRATION

test_multi_camera_alignment

Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.

Pass: Focal lengths and circles sizes are consistent.

Impacted camera parameters:

  • DISTORTION_CORRECTION_MODE
  • LENS_DISTORTION
  • LENS_FOCAL_LENGTH
  • LENS_INTRINSIC_CALIBRATION
  • LENS_POSE_TRANSLATION
  • LENS_POSE_ROTATION
  • SCALER_CROP_REGION

scene5/diffuser

test_lens_shading_and_color_uniformity

Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.

Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.

scene6

Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.

scene6

scene6

test_zoom

Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.

Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.

Impacted camera parameters:

  • CONTROL_ZOOM_RATIO
  • LENS_FOCAL_LENGTH

test_zoom

test_zoom to find the contour of the circle closest to the center.

scene_change

test_scene_change

The scene change makes use of the tablet displaying a face scene and then turns the tablet on and off to create a scene change. The scene reuses scene2_e, but is in a separate scene because of the required tablet control. Additionally, for manual testing, the scene change can be accomplished by waving your hand in front of the camera.

Pass: The android.control.afSceneChange flag is asserted with a scene change.

Impacted camera parameters:

  • CONTROL_AE_STATE
  • CONTROL_AF_STATE
  • CONTROL_AWB_STATE
  • CONTROL_AF_SCENE_CHANGE
  • CONTROL_AWB_STATE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_SENSITIVITY
  • LENS_FOCAL_LENGTH

sensor_fusion

Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion tests can be automated with the Sensor Fusion Box .

checkerboard

Image of checkerboard

test_multi_camera_frame_sync

Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.

Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.

Impacted camera parameters:

  • LENS_FOCUS_DISTANCE

test_sensor_fusion

Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the REALTIME parameter is not enabled.

Pass: Camera and gyroscope timestamps' offset is less than 1 ms.

Impacted camera parameters:

  • CONTROL_AE_TARGET_FPS_RANGE
  • LENS_FOCUS_DISTANCE
  • SENSOR_EXPOSURE_TIME
  • SENSOR_FRAME_DURATION
  • SENSOR_ROLLING_SHUTTER_SKEW
  • SENSOR_TIMESTAMP