« アルファチャンネル付きJPEG | メイン | アルファチャンネル付きJPEGがデコード出来るように »

2008年05月06日

吉里吉里 ムービー拡張日誌2:: JPEG による画像の劣化

    

JPEG は非可逆なので画像は劣化するが、クオリティを上げればほとんど変わらないものが出来る。
モスキートノイズは 95% 程度にすればなくなった。
これなら元と変わらないかと思いきや、鮮やかさが落ちている。
特に赤が顕著。
なぜだろうと思って検索してみると、ダウンサンプリングが原因だと書いているサイトが幾つか見つかった。
ダウンサンプリング……と考えてすぐに思い当たるところが。

JPEG は、だいたい YUV 420 になっているはず。
つまり、輝度に対して、色差は 1/4 のサイズになっている。
これは人の目が輝度に比べて色差の変化には気付きにくいと言うのが理由らしい。
ただ、サイズを 1/4 にしたからと言って鮮やかさが落ちるわけではないはずだ。
問題は補間の方にあると思われる。
つまり、1/4 のサイズにする時のダウンサンプリング時と、元のサイズに戻す時のアップサンプリング時の補間によって色差の輝度が落ちているわけだ。

1/4 のサイズにする時、普通に考えると 4 ピクセルの値の平均値を取るだろう。
実際、IJG JPEG もそのようにするようだ ( より広範囲のピクセル値を参照する方法もある様子 ) 。
平均値を取ると言う事は、その 4 ピクセル内の最大輝度値よりは低い値に、最小輝度値よりは高い値になる。
つまり、これによって鮮やかさが失われると考えられる。

元のサイズに戻す時、単純に 1 ピクセルの値を 4 ピクセルにすれば、値は変わらないが アップサンプリング、ダウンサンプリング に書いたように、トライアングルフィルタが適用されると、ここでも最大輝度値よりも低い値になる。
トライアングルフィルタによって、色差の変化がなだらかになり、ぱっと見た時の綺麗さは向上するのかもしれないが、鮮やかさが失われるのは間違いないと思われる。

と言う事は、最大輝度値が低下しないようにダウンサンプリングとアップサンプリングを行えば、鮮やかさが失われないのではないだろうか?
つまり、4 ピクセル平均ではなく、4 ピクセル中最大輝度のものを使用し、アップサンプリングの補間を行わないようにすれば、いいのではないかと思う。
ただ、4 ピクセルの内、最大で 3 ピクセルは元のピクセル値よりも値が大きくなるため、鮮やかさが増してしまう懸念はある。
このような方法を取って符号化・復号化した場合、そうでない場合と比べてどの程度印象が変わるのかはやってみないとわからないが、くすんだようになってしまうことは避けられると思う。
また、別の方法としてダウンサンプリングとアップサンプリングが原因と言うことであれば、YUV 420 ではなく、YUV 444 を使えば補間は行わないので解決するはずだ。
まあ、その場合は圧縮率が少し犠牲になるわけだけど。

ま、このような実験をやるとしたら、アルファ付きムービーが動くようになった後だろうけど。

2008/05/08 追記
YUV 422 を YUV 420 に修正



投稿者 Takenori : 2008年05月06日 16:07




comments powered by Disqus
Total : Today : Yesterday : なかのひと