画像比較の許容レベルの理解
ピクセルレベル画像比較の許容設定をマスター。許容値がDiff結果にどう影響するか、異なるユースケースに最適な値の選び方、偽陽性の回避方法を学びます。
CI/CD & Automation
詳細な説明
画像比較の許容レベル
許容値はピクセルレベル画像比較で最も重要なパラメータです。2つのピクセルが「変更された」とフラグされる前にどの程度異なることが許されるかを定義します。適切な許容値を設定することで、レンダリング変動からの偽陽性を排除しつつ、意味のある視覚的変更を検出します。
許容値の仕組み
各ピクセルについて、Diffアルゴリズムは2つの画像間の対応するRGBA値を比較します:
ピクセルA: (200, 100, 50, 255)
ピクセルB: (203, 98, 51, 255)
チャネル差分:
R: |200 - 203| = 3
G: |100 - 98| = 2
B: |50 - 51| = 1
A: |255 - 255| = 0
最大差分 = 3
最大チャネル差分が許容閾値を超えるとピクセルは変更としてマークされます。
軽微なピクセル差異の原因
いくつかの要因でスクリーンショット間のピクセルが正当にわずかに異なります:
- アンチエイリアシング — テキストと曲線エッジが異なるサブピクセルパターンを生成(1-3の値差)
- フォントヒンティング — 異なるフォントレンダラーがピクセルを異なる位置に配置(1-5の値差)
- JPEG圧縮 — 非可逆圧縮がチャネルあたり10-15の値差を導入
- サブピクセルレンダリング — ClearType/FreeTypeのサブピクセル位置がプラットフォームにより異なる(1-3の値差)
推奨許容値
| ユースケース | 許容値 | 備考 |
|---|---|---|
| 正確なファイル比較 | 0 | 同一ファイルの比較のみ |
| ロスレススクリーンショット比較 | 3-5 | アンチエイリアシングとフォントレンダリングを考慮 |
| クロスブラウザ比較 | 8-12 | 異なるエンジンが異なるレンダリング |
| JPEG比較 | 15-20 | 圧縮アーティファクトを考慮 |
| 概算の視覚マッチ | 25-35 | 大まかなレイアウト比較のみ |
ユースケース
ビジュアルテストパイプラインを設定するDevOpsエンジニアは、感度と偽陽性率のバランスをとる許容値を選択する必要があります。低すぎる許容値はアンチエイリアシングの違いからビルドごとに数十の偽陽性を生成し、開発者の調査時間を浪費します。高すぎる許容値は本物のリグレッションを見逃します。許容値5から開始し、最初の数週間の偽陽性率に基づいて調整する実用的なアプローチが有効です。