SSIM:構造類似性指標

はじめに— 構造類似性指標 (SSIM)は、データ圧縮などの処理やデータ伝送時の損失によって生じる画像品質の劣化*を定量化する知覚的指標です。これは、同一の画像キャプチャから取得した2 つの画像 (参照画像と処理済み画像) を必要とする完全な参照指標です。処理済み画像は通常圧縮されています。たとえば、参照画像を JPEG (任意の品質レベル) として保存し、それを読み込むことで取得できます。SSIM はビデオ業界で最もよく知られていますが、静止画にも幅広く応用できます。Spilled Coins や Log F-Contrast などのImatestテストパターンを含む、あらゆる画像を使用できます。

*SSIMは、類似した2つの画像間の知覚的な違い を測定するものです。どちらが優れているかを判断することはできません。どちらが「オリジナル」で、どちらがデータ圧縮などの追加処理が施されているかを知ることで、どちらが優れているかを推測する必要があります。

PSNR(ピーク信号対雑音比)とは異なり、SSIMは画像内の可視構造に基づいています。PSNRはもはや画像品質劣化の信頼できる指標とは見なされていませんが、 ImatestのSSIMモジュールでは代替指標として利用可能です。

ImatestのSSIM計算は、Zhou Wang 、 Alan Bovik 、 HamidSheikh 、およびEero Simoncelliによる論文「画像品質評価:エラーの可視性から構造的類似性へ」のMatlab実装に基づいています。

SSIMはImatestの画像処理モジュールでも計算されますが、このモジュールにはSSIMモジュールにはない多くの機能があります。例えば、画像に一般的な劣化(ノイズ、ぼやけ、フレアなど)を適用した後、画像強調によく用いられる信号処理技術(トーンマッピング、アンシャープマスク、バイラテラルフィルタリングなど)を適用することができます。

手術

Imatestを開き、右側のユーティリティモジュールの下部にあるSSIMボタンをクリックするか、ユーティリティ(ドロップダウンメニュー)→ SSIMをクリックします。これによりSSIMウィンドウが開き、最初は簡略化された手順が表示されます。

ssim_opening_window
SSIM オープンウィンドウ(トリミング済み)

「処理済み画像ファイル1を読み込む」ボタンと「参照画像ファイル2を読み込む」ボタンを使用して、比較する2つの画像を読み込みます。

2つの画像が読み込まれた後、初期結果が表示されます。この例では、 Imatestの「こぼれたコイン」チャートのキャプチャ画像を使用しています。以下に説明するように、 Imatestテストチャートモジュールを使用すると、複数のテストパターンのビットマップ画像を直接生成できます。

ssim_initial_results
こぼれたコインの画像に対するSSIMの初期結果。
処理済み画像はIrfanViewで20%(やや低)の画質で保存されました。

処理済みの画像ファイルは右上に表示されています。ファイル名(2 . Crop_Irfan...)は、画像の下部中央付近に濃い青色で表示されています。このファイルは、Irfanviewの品質レベル20(100段階中)で保存されています。これは比較的低品質で、高度に圧縮されています。

参照画像ファイルは右上に表示されています。ファイル名(1 . Crop LX7... )は、左側の画像の下に茶色 で表示されています。SSIMは対称的な測定であるため、処理済み画像と参照画像を入れ替えても結果は同じになることに注意してください。

SSIMインデックスマップ(位置の関数としてのSSIM)が右下に表示されています。表示ドロップダウンメニューで「カラーバー(オプションII)」が選択されています。その他のオプションは「カラーバーなし(グレースケール画像)」と「グレースケールカラーバー」です。MathWorks のSSIMの説明にはグレースケールのSSIMマップが掲載されていますが、解釈が非常に難しいと感じています。

mssim_scatter_plot処理後の画像の圧縮率(ビット/ピクセル)(このファイルの場合は0.126)は、ファイル名の下の左側に表示されています。ビット/ピクセルは、JPEG品質設定と画像の内容によって決まります(細かいディテールやノイズが多い画像では圧縮率が低くなり、つまり圧縮率が高くなります)。このファイルは、JPEG品質の低下を示すために、 Irfanviewで品質レベル20(%)(かなり低い)で保存されました(実際にはこの圧縮レベルを使うことはほとんどありません。ウェブサイトのJPEG画像には90を使用しています)。

ウィンドウの中央付近に画像サイズと平均SSIM (画像全体)が表示されます。SSIMはあまり馴染みがないため、説明が必要です。右側には、Wang、Bovikらの論文からの多数の画像に対する平均意見スコア(MOS)を平均SSIM(MSSIM)の関数としてプロットした図が示されています。元の画像は、表示条件を考慮して2倍にダウンサンプリングされています。残念ながら、著者らはMOSの意味についてあまり詳しく説明していません(これは多数の意見に基づいており、100に正規化されているようです)。MSSIMが最大値1を下回るとMOSは急速に低下するため、MSSIM = 0.9で著しい品質劣化が発生します。

画像の劣化を確認するには、通常、ズームインする必要があります。

オプション

最も重要な選択肢は、画像を拡大して劣化状況をより明確に確認することです。これにはいくつかの方法があります。

ズーム/トリミング

ズーム/トリミング領域(左下の水色の領域)にあるボタンを使用します。ボタンには、 2倍ズームイン、 1/2倍ズームアウト、ズームアウト(画像全体を表示)があります。ズームの位置は、 < 、 > 、 ^ 、 vの4つの方向ボタンのいずれかで設定できます。この方法はやや操作が煩雑な場合があり、目的の領域に正確にズームインするには数回クリックする必要があるかもしれません。

いずれかの画像上でマウスをクリックしてドラッグすることで、切り抜き領域を選択できます。

ROIを選択したら、 ウィンドウの中央 付近(処理済み画像の右下)にある「ビューを同期」ボタンをクリックする必要があります。

これにより、切り抜かれたSSIMの計算が更新されます。以下は切り抜かれた画像の例で、処理後の画像は品質10(低品質、上記の画像よりやや低い)で保存されています。

ssim_cropped_resultsトリミングされたSSIM結果。処理済み画像はIrfanViewで10%(低)品質で保存されています。

左側の画像には、劣化によるアーティファクトがはっきりと見て取れます。SSIMは、劣化がほとんど見られない画像の滑らかな領域で最も高く、左側のIsolight LEDのような構造的な特徴の境界部分で最大となります。

画像が拡大(つまり切り抜き)されると、左下のサムネイル画像の赤い 四角形の内側に拡大された領域が表示され、水色の「ズーム/切り抜き領域」の右側に切り抜き領域のSSIMが表示されます。

PSNR(ピーク信号対雑音比)

PSNRの使用は推奨しませんが( Wang-Bovikの論文には、知覚品質との相関が低いことを示す例がいくつか掲載されています)、業界の一部では依然として使用されています。SSIMモジュールでPSNRを計算するには( MatlabのPSNRルーチンを使用)、SSIMウィンドウ下部のSSIM / PSNRドロップダウンメニューで適切な選択を行います。この選択は保存されないことに注意してください。SSIMモジュールは常にSSIMが選択された状態で開きます。PSNRを選択すると、右下の画像にピクセル差(処理済みから参照を引いた値で、中間グレーの平均ピクセルレベル(127)でオフセットしたもの)が表示されます。

ssim_psnr_results
PSNRの結果(一部切り抜き)。右下には差分マップを表示。

PSNRの単位はdB(デシベル)であることに注意してください。SSIM / PSN Rドロップダウンメニューは、PSNRが選択されている場合にピンク色で表示されます。これは、(推奨される)SSIM計算が必要な場合に、誤って計算設定をPSNRのままにしてしまうことを防ぐためです。

ヒストグラム

SSIM ウィンドウの下部にある[通常表示 / ヒストグラム]ドロップダウンメニューを使用して、SSIM または PSNR のヒストグラム表示を選択できます。ヒストグラムは右下隅に表示され、SSIM またはピクセル差分マップに置き換わります。ヒストグラムは切り抜き画像 (画像が切り抜かれている場合) のものです。画像の内容によって変化する可能性があり、つまり、切り抜き画像のヒストグラムは必ずしも画像全体のヒストグラムと同じではありません。以下は、上に示した (Irfanview) 品質 10 の JPEG 画像のヒストグラムです。JPEG の品質が低いほど、ヒストグラムの広がりが大きくなります。

ssim_histogram SSIMヒストグラム。切り抜きSSIM結果(上記)と比較してください。
処理済み画像はIrfanViewで10%(低)品質で保存されました。

その他の設定

(左側のズーム/トリミング領域の上)ダウンサンプリングのドロップダウンメニューを使用すると、SSIM分析の前に画像をダウンサンプリング(縮小)できます。画像をダウンサンプリングすると、結果は低倍率での知覚的劣化をより正確に反映します。これは、画像サイズが小さい場合や、視距離が長い場合に見られる現象です。ダウンサンプリングされた画像では、SSIMとPSNRの数値は常に向上します。Acutanceの計算とは異なり、SSIMの計算(現在の形式)には、視認条件に関する明確な仕様がありません。このメニューは、Wang-Bovikが分析前に一部の画像をダウンサンプリングしているため追加されました。

Imatestテストチャートを使用してテストイメージを作成する

Imatestのテストチャートモジュール(ユーティリティメニューから選択)を使用して、直接比較するための画像を作成できます。以下に、信号処理がテクスチャに与える影響を測定するために設計された「こぼれたコイン」チャートの例を示します。

ssim_testcharts_zoneplateテストチャートゾーンのプレート画像。出力は4Kビデオ解像度に設定されています。

ゾーンプレートは、SSIM解析において注目すべきチャートデザインの一つです。その他には、対数周波数コントラスト、シーメンススター、スピルドコイン(ランダム1/f)などがあります。他のチャートとは異なり、ゾーンプレートには専用の解析モジュールがありません。ゾーンプレートは、信号処理アーティファクト、特にエイリアシングによって生じるアーティファクト(上記のプレビュー画像で顕著に確認できますが、最終画像とは異なります)を表示するための最悪のケースの画像であるため、特に注目に値します。