Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ssim

画質を測定するための構造的類似性 (SSIM) 指数

説明

ssimval = ssim(A,ref) は、ref を参照イメージまたはボリュームとして使用して、グレースケール イメージまたはボリューム A の構造的類似性 (SSIM) 指数を計算します。

[ssimval,ssimmap] = ssim(A,ref) は、A 内の各ピクセルまたはボクセルの局所的な SSIM 値も返します。

___ = ssim(A,ref,Name,Value) は、計算の特性を制御する名前と値のペアを使用して、SSIM を計算します。

すべて折りたたむ

イメージをワークスペースに読み取ります。別のバージョンのイメージを作成し、ブレ フィルターを適用します。

ref = imread('pout.tif');
H = fspecial('Gaussian',[11 11],1.5);
A = imfilter(ref,H,'replicate');

両方のイメージをモンタージュとして表示します。格子のエッジなどコントラストが大きくシャープな領域に沿って、イメージの違いがはっきりと表れます。

montage({ref,A})
title('Reference Image (Left) vs. Blurred Image (Right)')

Figure contains an axes. The axes with title Reference Image (Left) vs. Blurred Image (Right) contains an object of type image.

イメージのグローバル SSIM 値と、各ピクセルの局所的 SSIM 値を計算します。

[ssimval,ssimmap] = ssim(A,ref);

局所的 SSIM マップを表示します。Figure のタイトルにグローバル SSIM 値を含めます。局所的 SSIM の小さい値は、局所的 SSIM マップに暗いピクセルとして表示されます。小さい局所的 SSIM 値をもつ領域は、ブレを含むイメージが参照イメージと顕著に異なる領域に対応します。局所的 SSIM 値の大きい値は、明るいピクセルとして表示されます。大きい局所的 SSIM をもつ領域は、ブレがイメージに与える影響が少ない、参照イメージの一様な領域に対応します。

imshow(ssimmap,[])
title(['Local SSIM Map with Global SSIM Value: ',num2str(ssimval)])

Figure contains an axes. The axes with title Local SSIM Map with Global SSIM Value: 0.94068 contains an object of type image.

入力引数

すべて折りたたむ

画質を測定するイメージ。2 次元グレースケール イメージまたは 3 次元グレースケール ボリュームとして指定します。

データ型: single | double | int16 | uint8 | uint16

画質測定の基準とする参照イメージ。サイズとデータ型が A と同じ 2 次元グレースケール イメージまたは 3 次元グレースケール ボリュームとして指定します。

データ型: single | double | int16 | uint8 | uint16

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: ssim(A,ref,'DynamicRange',100)

入力イメージのダイナミック レンジ。正のスカラーとして指定します。DynamicRange の既定値は、イメージ A のデータ型によって異なり、diff(getrangefromclass(A)) で計算されます。たとえば、既定のダイナミック レンジは、データ型 uint8 のイメージに対して 255 です。データ型が double または single のイメージで、ピクセル値が [0, 1] の範囲であるイメージに対して既定値は 1 です。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

輝度、コントラスト、構造の各項の指数。[alpha beta gamma] 形式で非負の数値の 3 要素ベクトルとして指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

等方性ガウス関数の標準偏差。正の数値として指定します。この値は、局所的な統計を推定する目的で、特定のピクセルの周囲の近傍ピクセルに重み付けするために使用します。この重み付けは、局所的な統計を推定する際のブロック歪みを防ぐために使用されます。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

輝度、コントラスト、構造の各項の正則化定数。[c1 c2 c3] 形式で非負の数値の 3 要素ベクトルとして指定します。関数 ssim は、これらの正則化定数を使用して、局所的な平均または標準偏差がゼロに近いイメージ領域が不安定になるのを防止します。したがって、これらの定数にはゼロ以外の小さい値を使用してください。

既定では以下のようになります。

  • C1 = (0.01*L).^2 (L は指定された DynamicRange 値)

  • C2 = (0.03*L).^2 (L は指定された DynamicRange 値)

  • C3 = C2/2

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

出力引数

すべて折りたたむ

SSIM 指数。数値スカラーとして返されます。ssimval はデータ型 double です。ただし、A がデータ型 single の場合、ssimval はデータ型 single になります。

ssimval の値は一般に [0, 1] の範囲にあります。値 1 は最高画質を示し、Aref が等価である場合に発生します。値が小さくなると画質が低くなります。入力と名前と値のペアの引数の組み合わせによっては、ssimval が負になることがあります。

SSIM 指数の局所的な値。入力イメージ A と同じサイズの非負の数値の数値配列として返されます。ssimmap はデータ型 double です。ただし、A がデータ型 single の場合、ssimmap はデータ型 single になります。

詳細

すべて折りたたむ

構造的類似性指数

イメージの 3 つの特徴である輝度、コントラスト、構造の視覚的影響を評価するイメージ画質メトリクスです。

アルゴリズム

SSIM 指数画質評価インデックスは、3 つの項、つまり輝度項、コントラスト項および構造項の計算に基づいています。全体的なインデックスは、3 つの項を組み合わせて乗算したものです。

SSIM(x,y)=[l(x,y)]α[c(x,y)]β[s(x,y)]γ

ここで、

l(x,y)=2μxμy+C1μx2+μy2+C1,c(x,y)=2σxσy+C2σx2+σy2+C2,s(x,y)=σxy+C3σxσy+C3

ここで、μx、μy、σx、σy および σxy は、イメージ x, y の局所的な平均、標準偏差、相互共分散です。α = β = γ = 1 (Exponents の既定値) かつ C3 = C2/2 (C3 の既定の選択肢) である場合、指数は次のように簡易化されます。

SSIM(x,y)=(2μxμy+C1)(2σxy+C2)(μx2+μy2+C1)(σx2+σy2+C2)

'Exponents' に整数以外の値を指定した場合、関数 ssim は中間の輝度、コントラスト、構造の各項を範囲 [0, inf] に固定することで、複素数値の出力を防ぎます。

参照

[1] Zhou, W., A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli. "Image Qualifty Assessment: From Error Visibility to Structural Similarity." IEEE Transactions on Image Processing. Vol. 13, Issue 4, April 2004, pp. 600–612.

R2014a で導入