| VDPとは | 非線形性 | CSF (Contrast Sensitivity Function) | Cortexフィルタ | マスキング | 差異検出メカニズム | 検出例 |
ここではS.Dalyが発案したVDPを紹介します。VDPとは人間の視覚特性(輝度と明るさの非線形性、Contrast Sensitivity Function、マスキング)などをモデル化し、二つの画像間の人間の目に見える誤差を推定するものです。本解説は以下をまとめたものなので、詳細はこちらを参考にしてください。
(*)S. Daly, "The Visible Differences Predictor: An algorithm for the assessment of image fidelity," in A.B. Watson, editor, Digital Image and Human Vision, pages 179-206, Cambridge, MA, MIT Press, 1993.
人間の目に到達する光の輝度と人間が感じる「明るさ」は非線形の関係にあることが知られています。その非線形性を対数で表現したウェバー・フェヒナーの法則や、べき乗でモデル化したスティーブンスの法則などが有名です(詳しくはこちら)。
VDPではこれらとは異なる非線形関数を用いており、以下の式で表されます。
(1)
ここで x は入力輝度値でDNは感じる明るさです。
縦縞模様の刺激パターンのコントラストを変化させていき、ちょうど縞が検出できる最小のコントラストをコントラスト閾値(Contrast Threshold)と呼び、そのコントラスト閾値の逆数をコントラスト感度と呼びます。コントラストの定義はいろいろあります。たとえば最も単純なコントラストはL_min/L_maxでしょう。そのほかにも
Michelsonのコントラスト
ΔL/L_mean = (L_max - L_min) / (L_max + L_min)
Weberのコントラスト
W=ΔL/L_min
等があります。VDPでDalyが用いているコントラストはこれらと違い、以下に定義されるものです。
C=L / L_low
ここでLは原画像のある画素値、L_lowはベースバンド、つまりローパスフィルタがかかった画像における同位置の画素値です。
CSF(Contrast Sensitivity Function)とはコントラスト感度を水平周波数w1、垂直周波数w2の二つの空間周波数の関数で表現したものであり、下式で表されます。
ここで各関数は以下の通り
複雑な式です。(こんなのどうやって近似したのでしょうか。。。)
ρ :空間周波数[cycles/degree]
P :CSFのピーク値
θ :オリエンテーション(atan(w1/w2))
i^2 :画像のサイズ
d :視覚距離
ε :周波数スケーリング定数
l :順応輝度
CSFの形状は順応輝度 l に大きく依存します。一般に順応輝度が高くなればなるほど、ピーク周波数は高周波側にシフトし、よりなだらかなバンドパス特性になります。以下のグラフは順応輝度0.01[cd/m^2]におけるCSFの例です。
このように直流から少し高周波側で視覚の感度は最大になります。
Cortexは皮質という意味で、大脳皮質の周波数依存特性をモデル化したものがこのCortexフィルタです。実際の大脳皮質の視覚メカニズムは非常に複雑ですが、Dalyはこの周波数選択性のみに着目しモデルを単純化しています。
大脳皮質は周波数と方向に選択性を持っていると言われています。そこでVDPでは周波数領域全体を以下に示す31の帯域に分割します。これを実現するには円形の1種類のローパスフィルタ、4種類のバンドパスフィルタ、1種類のハイバスフィルタ、そして6種類のファンフィルタを組み合わせます。まずは6種類のロー、バンド、ハイパスフィルタを使って周波数域を6帯域に分割し、その後ファンフィルタを用いてさらに6方向に分割します。ここでベースバンドにはファンフィルタをかけません。よって、6×5+1=31に分割されることになります(下図)。
ファンフィルタとは周波数領域で扇形(fan)の通過域をもつフィルタのことで、ある特定方向の信号のみを取り出す効果があります。
以下にファンフィルタの周波数特性の例を示します。
ここで言うマスキングとは空間マスキングのことで、ある刺激の検出能力が周辺の別の刺激により低下する効果を指します。
マスキング効果はLuminance Threshold Elevation T によりモデル化されます。これはマスクがある場合の信号を検出する閾値と、一様な背景での検出閾値の比で定義されます。この T の例を以下に示します。
ここで横軸は正規化されたマスクコントラストで、縦横ともに対数スケールになっています。
コントラストが低い場合はマスキング効果はなく、あるコントラストを超えるとマスキング効果が現れることを示しています。なお、ここでは信号の周波数とマスクの周波数は同じであることを前提にしています。
このLuminance Threshold Elevationを数式で表現すると以下となります。
ここで各変数は以下の通り。
W = 6.0;
Q = 0.7;
b = 4.0;
s = maskingSlope;
k1 = pow(W, 1.0 - 1.0 / (1.0 - Q));
k2 = pow(W, 1.0 / (1.0 - Q));
以上の各モデルを統合してVisible Differenceを予測します。そのダイアグラムを以下に示します。
まず(1)の非線形関数をかけ、FFTで周波数変換をした後CSFを乗算、Cortexフィルタにより31個の帯域に分割、その後(2)のLuminance Threshold Elevationをかける。この一連の作業をTarget、Maskの二つの画像に対して行います。この際、以下の2点で注意が必要です。
この後、差異検出メカニズム(Detection Mechanisms)では相互マスキングと確率マップの計算が行われます。それを以下に説明します。
相互マスキング
相互マスキングとは二つの画像を同時に見たときのマスキング効果のことで、単に各画素において二つの値の小さい方を選びます。
ここでT_e1、T_e2は二つの画像のThreshold Elevationの出力です。
確率マップの算出
確率マップは以下の式で計算されます。
ここでΔCはT_e1、T_e2の差の絶対値、βはスロープコントローラ。ΔCの値が大きければPの値も大きくなります。
以上の相互マスキングと確率マップの算出を31個全てのバンドについて行い、最終的にVDPとなります。
ここで l は31個のバンドのインデックスです。
上段左が原画像、右がホワイトノイズがのった画像です。
下段がVDPの出力結果です。