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