ぼくがかんがえたさいきょうの画質評価法
JPEGなどの、不可逆画像圧縮の画質評価法をいろいろいじったらこうなった。
順を追って。
1・ローパスフィルタ
人間は画像の1ドット1ドットを細かく見ているわけじゃなく、ある程度ぼかした感じで知覚している。それを利用したのがドット絵などのディザリング。それを考慮するため、画像にぼかしを入れる。
どのくらいボカすかっていうと、画面の解像度とかディスプレーまでの距離とか視力とかに左右されるから、えいやとテキトーに決めてしまう。
2・色空間変換
人間の色覚には、輝度、彩度、色相の3要素(RGBでわない)があるけれど、それぞれ知覚の仕方が違うので、RGBから変換してそれぞれ別々に画質評価する。
3・SSIM
むかしは画質評価といえば、PSNRだったですが、最近はSIMMがポピュラーでござるな。PSNRとSSIMの違いを図形の比較で例えると、PSNRは図形の大きさだけを比較してたのが、SSIMは四角三角みたいな図形の形もみて比較している。ってくらい違うでござる。
元画像 | ノイズ1 | ノイズ2 |
100 | 110 | 110 |
100 | 110 | 110 |
100 | 110 | 110 |
100 | 110 | 90 |
100 | 110 | 90 |
100 | 110 | 90 |
全部の画素の輝度が100の画像にノイズを加えて、全部110にした画像と、110と90にした画像が出来ました。これをPSNRで画質評価すると、どちらも同じ画質*1と判定されるけど、実際の画像をみると、ノイズ2より、ノイズ1のほうが元画像に近いと感じるものなのですよね。そういうのも見るのがSSIMなのです。
とりあえずSSIMの画質を判定します。画素単位でね。
4・画質が悪い部分だけ抽出。
全体に薄く広くノイズが有る画像と、ノイズが激しいところとそうでもないところがある画像では、後者のほうがノイズを感じると個人的に思うので、画像全体の評価をする時は、画像全体でもノイズが激しい部分を抽出して計算します。
5・
*1:ローパスフィルタかけちゃうとむしろノイズ2のほうが元画像に近いと判定される