「ウォーリーをさがせ」で理解するSSIMのスゴい点 その2


本日のお題画像:


心霊写真みたいな画像からスタートしてますが、前回(http://d.hatena.ne.jp/denshikA/20100629)からの続きで、ちょっと、違った角度からSSIMを眺めて、SSIMのことをもっと好きになりましょうね、という流れでしたね。


前回の終わりに、

SSIMというのは、「人ごみの中のウォーリーはあまり重視せず、ポツンと孤立したウォーリーに注目して」計算していきますので、「私たちの感覚により近いと評判*7」なのです。


というわけでまとめますと、意外と知られていないと思うのですが、SSIMがスゴいのは、画像内の間違いを計算するときに、ごちゃごちゃ度合いを考慮して、緩急をつけながら計算しているところなんです。

と書きましたので、確認してみましょう*1


こちらは、http://d.hatena.ne.jp/denshikA/20091204にも登場した「私がかつて住んでいて、いやー、夏はとってもきれいだったな、また住んでみたいな、夏だけ。なんでかっていうと、冬はびっくりするくらい寒いらしいので。そういえば、F1を見に行ったな。そのとき、アレジが優勝して、興奮した観客がフェンスをぶち壊して、コースに乱入する、って事件もあったな。という思い出のモントリオール写真」です。


さて、この写真にノイズを乗せてみます。要するに、ちょびっと画質を落とすわけです。


SSIMを測定する前に、みなさんの「感覚」を確認したいのですが、

空や雲のあたりのノイズは目立ちますが、左下あたりの草や木のあたりのノイズはあまり目立ちません。それと、道の部分も少し目立ちます。

よね?おそらく、それが人間の目で見た場合の感覚じゃないかと思います。


では、早速SSIMを測定するのですが、昨日(http://d.hatena.ne.jp/denshikA/20100630)ご紹介したツールを用意してください。*2


今、Cドライブの中に、SSIMというフォルダがあって、その中身は、こんな感じですね。


次に、オリジナルの画像と、ノイズが乗った画像を用意しましたので、こちらをダウンロードして、SSIMフォルダに入れて見てください。

オリジナル: original.tif 直
ノイズあり: noise.tif 直



そうしたら、コマンドプロンプトで、次のようにやってみましょう。ルールとして、「C:\SSIM\SSIM.exe 画像A 画像B MAPの出力」です。

C:\SSIM\SSIM.exe C:\SSIM\original.tif C:\SSIM\noise.tif C:\SSIM\map.tif



画面を見ると、SSIMの値は、0.462351だそうです。派手にノイズを乗せたので、まぁ、そんなところでしょう。


しかし、今回は、SSIMの値そのものはどうでも良いんです。注目したいのは、先ほどのSSIMフォルダにできた新しいファイルです。

先ほどのSSIM計算をすると、上図のように、map.tifという画像ができます。


そのmap.tifが、冒頭でご紹介した「心霊写真」なのです。


この「心霊写真」について説明をすると、

2つの画像を比較した場合、SSIM的に重要だと思われる「違い」を黒く、あまり重要でないと思われる「違い」を白く、表現したものです。最終的には、この「心霊写真」の平均値を取って、SSIMの値としているわけです。

という感じで、この「心霊写真」こそ、SSIMを計算する上で、一番重要なものなんです。


そして、よーく見ていただくと分かると思いますが、測定前に確認していただいた、みなさんの感覚、

空や雲のあたりのノイズは目立ちますが、左下あたりの草や木のあたりのノイズはあまり目立ちません。それと、道の部分も少し目立ちます。

と、「心霊写真」は、かなり一致しませんか?


というわけで、

画像内の間違いを計算するときに、ごちゃごちゃ度合いを考慮して、緩急をつけながら計算しているところが、SSIMがスゴいところなんです

ということが、少し理解していただけたでしょうか?

*1:ウソかもしれませんので。

*2:昨日書くのを忘れていて、Twitterhttp://twitter.com/denshika/status/17406033384)ではお知らせしたのですが、http://denshika.cc/open/20100630/のSSIM測定ツールは、ssim.mに準拠していますので、理論上計算は正しいはずです。だけど、狙い通りにプログラムが動くのかどうかは、別問題です。ソースを公開したので、あとは、誰かが修正してくれるでしょう。きっと