- ベストアンサー
jpegの量子化テーブルはどう決まるの?
jpegについて勉強しています。 画像を8x8ブロック毎にDCTで周波数変換するところは理解できました。 その後の量子化テーブルを用いて高周波成分を圧縮するところで疑問がわきました。量子化テーブルは通常、左上の方の低周波側が小さい値で、右下の方の高周波側が大きい値になる、ということは分かります。でもこの値って一体、誰がいつどうやって決めるものなんでしょうか? 推奨値みたいなものがあるんでしょうか。それともjpeg化するアプリケーションによって異なるような自由度の高いものなんでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
自由に決めてかまいませんが、jpeg形式を作ったjpeg(団体)の出している仕様書に例が載っています。これから派生したテーブルを使うソフトがほとんどです。 輝度: 16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68,109,103, 77, 24, 35, 55, 64, 81,104,113, 92, 49, 64, 78, 87,103,121,120,101, 72, 92, 95, 98,112,100,103, 99 色差: 17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 というものです。 ただし、大抵のソフトではこれらの推奨値をそのまま使うのではなく、一定の式に当てはめて変換して高画質用~低画質用のさまざまなテーブルを作ります。 よくある式は、 低画質~高画質を-1~1の数字で表したとき、 高画質側では 推奨値×(1-画質) (ただし0になったら1) 低画質側では 255 - {(255-推奨値)×(1+画質)} となります。これを-1~1でなく0~100のパーセンテージで表すことが一般的です。 つまり、画質設定を50%にすると上のテーブルが出るわけです。 GIMPとPixiaで50%を試してみましたところ、見事にこれが出ました。またMSペイントの出力は全ての値が丁度これの1/2(切上げ)でした。つまり上の式でいくと75%に当たります。 ただ、このテーブルは縦と横で対称でないのがどうも私は気に食わないので以前jpegエンコーダを作ったときは何かのソフトで縦横対称なテーブルを使っているものがあったのでそれを拝借しました。 で今そのソフトを探したのですが見つかりませんでした。「AzPainter」だったかな…。
その他の回答 (2)
- kaZho_em
- ベストアンサー率50% (2950/5879)
訂正。 × 開設 ○ 解説
- kaZho_em
- ベストアンサー率50% (2950/5879)
このあたりを。 JPEGではなくMPEGの開設ページですが、開設としては同じです。 量子化行列のナゾ~その1 http://www.nnet.ne.jp/~hi6/lab/quantize/index.html
お礼
回答ありがとうございます。 お礼が遅くなりましてすいません。 参照URLを拝見させて頂きました。 この例でも量子化テーブルは、左上の方の低周波側が小さい値で、右下の方の高周波側が大きい値になっていますね。 ただこの量子化テーブルの値がどうやって決まるのかが分からないのです。
お礼
回答ありがとうございます。 お礼が遅くなりまして、申し訳ありません。 大変分かりやすい説明で、良く分かりました。 jpeg団体の仕様書のテーブルがデファクトになっているのですね。 縦と横で対称になっていない、というのは確かに気になりますね。 普通に考えれば対象になっていて良さそうなものですが。 人間の視覚を考慮したような値になっているんですかね?