前回、JPEGでデータの圧縮を実現しているのは2つの処理だと書きました。すなわち
ユーザーが直接意識する必要があるのは通常1の方で、多くの場合は「どれぐらいボンヤリさせるのか」をユーザー側である程度選べるようになっています。
例えばPhotoshopの「WEB用に保存」では101段階で画質の選択ができるわけですが…。
上記のことを我々は経験則で知っています。ソフトの内部的にはいったいどのような処理が行われているのでしょうか。
ハイ、前回の記事では判りやすくするために工程を強引に2段階に分けたのですが、最初にもう少し細かい工程も掲載しました。
もう一度引っ張り出してきます。
このうち、ぼやかし処理が行われるのは2箇所。「2.ダウンサンプリング」と「4.量子化」です。
言葉だけではピンと来ないと思いますので、圧縮率をユーザー側で自由に設定できるソフト「JPEG Optimizer」を使って詳細を見ていきましょう。
この工程は「サンプリング比」で4段階に設定できます。(図1-1)
上記の説明だけですと、データ量は4:2:2が1/2、4:2:0と4:1:1が1/4になりそうですが、実際の工程では輝度と色差に分けて処理する(輝度は間引かず色差のみ間引く)のでJPEG Optimizerの記述どおり、4:2:2が2/3、4:2:0と4:1:1が1/2になるのです。
ソフトによっては「YUV444」「YUV422」などと表記されていることもありますが、それぞれサンプリング比4:4:4、4:2:2と同じ意味です。
この工程は「量子化テーブル」の項で輝度と色差をそれぞれ100段階に設定できます。直接テーブルを編集すればもっと細かく設定できますが、わかりにくくなるのでここではスライダを使います。
「テーブルに反映する」にチェックを入れてスライダを動かしてみましょう。画質を良くすればテーブルの数値は小さく、逆に悪くすればテーブルの数値が大きくなるのがわかると思います。(図2-1)
量子化ではこのテーブルの値で割り算をして余りを捨てる丸め処理を行います。1だとデータはまったく減らず、255だとものすごく減るという具合ですね。
ここで削るのはその場所の明るさや色がまわりと比べてどれぐらい違うのかという情報で、削れば削るほどまわりと似たような色になっていき、できる画像もどんどんボンヤリのっぺりしていきます。
この処理は8×8ピクセルのブロック単位で行われ、どんどん画質を下げていくと最終的には同じサイズの色違いタイルを並べたような画像になります。(図2-2)
さて、ここまでダウンサンプリングと量子化それぞれの工程で、指定を変えると画質がどう変わっていくかを見てきたわけですが、多くのJPEG生成ソフトではここまで処理方法を細かくは指定できませんし、ユーザーもあまりしたくありません。
ユーザー側がおおまかにどれぐらいの画質で圧縮したいかを指定すれば、ややこしい部分(=ダウンサンプリングをどの設定でやって、量子化は輝度と色差にそれぞれどういうテーブルを使ってやるか)はソフトがある程度勝手に決めてあげますよという設計になっているわけですね。
ここで注意したいのは、ソフト側の基準はあくまで人間の目で見た「綺麗さ」ではなく、単純に「情報量をどれだけ削るか」であるということです。
要するに便宜上、データを極力残す設定を高画質設定、データをたくさん捨てる設定を低画質設定としているにすぎません。
例えばある画像はたくさんデータを削ってもほとんど人間の目にはわからない一方、別のある画像は少しデータを削っただけですごく目立ってしまうかもしれません。
これが、画質の設定と生成された画像の綺麗さが必ずしも正比例しない大きな理由です。
ではでは結局、ユーザー側がJPEG画像を取り扱っていく上でどのようなことを意識しておくべきなんでしょうか。
そこらへんを次回に。では、また。
(シンヲ)
カテゴリ:画像処理 2012/5/18 13:57