GIFはどう硬く、JPEGはどうぬめっとしているのか

インターネット・リアリティ研究会の座談会の、「GIFとJPEGどちらが硬いか」という話題*1だが、これはGIFとJPEGの要件を考慮すれば簡単に理解できる*2。あと、ここでいう硬さはおそらく「よりソリッドである」という意味。

GIFが硬いのは、その圧縮方式が、色数を256色(あるいは、128、64、32、16、8、、、)に絞ることによってデータ量を減らす、という方式を採用していることによる。結果としてジャギーの矩形性や錆のようなノイズ=ソリッドさを感じる原因となっている。また、透過GIFにおいてもアルファチャンネルではなく2値のみのサポートのために、背景との境界線でのジャギーが目立つことも、たとえばPNG形式との違いといえる。

一方でJPEGが硬くない(youpyいわく、「ぬめっとしている」)のは、その圧縮方式が、画像を8×8pixelのブロックに区画し、それを周波に変換(離散コサイン変換)することによる。JPEGは、画像を周波に変換したのちに、データ的に影響の少ない高周波成分を削ることによって圧縮を行っているが、このときに、圧縮の影響によって、8×8pixelのブロックごとに、グラデーションがかかったような画像になる。これは、周波によって表現されていたブロックから高周波成分を削除したことにより、(単純なグラデーションのような)低周波の影響が増すため、このような像になる*3。それらが並ぶために、ブロックの矩形性があるにしてもむしろ、その内部の周波性(グラデーション的な像)が目につき、JPEG特有の滲んだような像になる。ブロック内部で色相がかなり違うと、もともとの像から離れたところが滲むのも、JPEGの周波性をよくあらわしている*4

参考 離散コサイン変換 - MATLAB & Simulink - MathWorks 日本
[画像処理技術の学習] - ISP 画像処理ラボ -- システム計画研究所/ISP --

メモとして。この機会にJPEGの圧縮方式をさらっとネットで調べてみたけど、この理解でいいのか。まぁ、目に見える部分については、グラデーション(周波による変換、描画)というところで理解すればよいと思う。

*1:ICC ONLINE | インターネット・リアリティ | 座談会「インターネット・リアリティとは?」

*2:ちなみに座談会での議論の射程は、ustreamyoutubeによって異なるリアルタイム性の感じられ方など、ここに書いてあることよりも広い。

*3:という理解であっているんだろうか……

*4:っていう理解でいいんだよね?