dポイントプレゼントキャンペーン実施中!

jpegについて勉強しています。
画像を8x8ブロック毎にDCTで周波数変換するところは理解できました。
その後の量子化テーブルを用いて高周波成分を圧縮するところで疑問がわきました。量子化テーブルは通常、左上の方の低周波側が小さい値で、右下の方の高周波側が大きい値になる、ということは分かります。でもこの値って一体、誰がいつどうやって決めるものなんでしょうか?
推奨値みたいなものがあるんでしょうか。それともjpeg化するアプリケーションによって異なるような自由度の高いものなんでしょうか。

A 回答 (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」だったかな…。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅くなりまして、申し訳ありません。

大変分かりやすい説明で、良く分かりました。
jpeg団体の仕様書のテーブルがデファクトになっているのですね。

縦と横で対称になっていない、というのは確かに気になりますね。
普通に考えれば対象になっていて良さそうなものですが。
人間の視覚を考慮したような値になっているんですかね?

お礼日時:2007/06/05 21:20

訂正。



× 開設
○ 解説
    • good
    • 0

このあたりを。


JPEGではなくMPEGの開設ページですが、開設としては同じです。

量子化行列のナゾ~その1
http://www.nnet.ne.jp/~hi6/lab/quantize/index.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅くなりましてすいません。

参照URLを拝見させて頂きました。
この例でも量子化テーブルは、左上の方の低周波側が小さい値で、右下の方の高周波側が大きい値になっていますね。
ただこの量子化テーブルの値がどうやって決まるのかが分からないのです。

お礼日時:2007/06/05 21:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!