SSIM (Structural Similarity)

輝度、コントラスト、構造を軸にして周囲のピクセル平均、分散、共分散をとることで、ピクセル単体のみならず、周囲のピクセルとの相関を取り込んだ指標

$$ SSIM(x,y) = \frac{(2 \mu_x \mu_y + c_1)(2 \sigma_{x y} + c_2)} {( \mu_x^2 + \mu_y^2 + c_1)( \sigma_x^2 + \sigma_y^2 + c_2)} $$

  • xが原画像、yが比較画像の局所領域
  • ここで、$μx$, $μy$は平均、$σx$, $σy$は標準偏差、$σxy$は共分散を意味する
  • c1やc2は自由に決めることができるが、8ビット画像の場合 $c1=(0.01 * 255)^2$, $c2=(0.03 * 255)^2$ を用いることが多い

分解版

$$ SSIM(x,y) = [l(x,y)^{\alpha} \cdot c(x,y)^{\beta} \cdot s(x,y)^{\gamma} ] \\ $$

$$ l(x,y) = \frac{ 2 \mu_x \mu_y + c_1}{\mu_x^2 + \mu_y^2 + c_1} :輝度平均 \\ c(x,y) = \frac{2 \sigma_x \sigma_y + c_2}{\sigma_x^2 + \sigma_y^2 + c_2} :輝度のばらつき \\ s(x,y) = \frac{\sigma_{x y} + c_3}{\sigma_x \sigma_y + c_3} :輝度の偏り \\ $$

MEMO:

  • 基本的に細かい差も出てしまうため、ガウシアンブラーなどを掛けてから処理をする
  • MSEやPSNRはそれなりの結果が出てきますが、これらによって求まる値は人間が見た時に感じる違いと必ずしも一致しない
  • MSEやPSNRでは「画像全体で少しずつ違う」「局所的に大きく違う」といった時にほぼ同じ結果が返ってくる
  • その人間が感じる違いをより正確に指標化するためにできたのがSSIM(Structural Similarity)

MSE/PSNRとの違い

  • 円周上の値はMSEとPSNRでは同じ値になる

REFERENCES:

  • https://dftalk.jp/?p=18111
  • https://qiita.com/yoya/items/510043d836c9f2f0fe2f