日記移転先(゜▽゜)

という名前の適当な日記ブログ


| Home | Index | Links | About |

Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DQT


jpegの量子化テーブルについてのメモ書き。

jpeg化されたときの画像の劣化具合の設定を知るにゃ量子化テーブル辺りのようだが
詳しくなかったので調べた辺りを書いてみる。

jpgファイル内の量子化テーブル部分は大抵エンコード時の品質の指定毎に固定ぽい。
適当に拾ったjpgをJpegAnalyzerで覗くとほとんどがAdobeかIJGのテーブルぽい。
んでとりあえずAdobeは置いといてIJGのテーブルを探したい方向になる。

探すと16,11,10,...のテーブルを挙げてJPEGの解説等をしている所は多く見つかる。
先に書くとそれはJPEG仕様の附属書にあるテーブルでIJGはこれを基に指定quality毎の係数を作ってる。
IJGのlibjpegのソース上ならjcparam.c内にある、で終了(ノ∀`)
/* These are the sample quantization tables given in JPEG spec section K.1.
 * The spec says that the values given produce "good" quality, and
 * when divided by 2, "very good" quality.
 */
static const unsigned int std_luminance_quant_tbl[DCTSIZE2] = {
  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
};
static const unsigned int std_chrominance_quant_tbl[DCTSIZE2] = {
  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
};
直にIJGのソースに行ったのならそこからの指定品質での係数の算出も同ソース内にあるのだが
検索で先に見つけたこの辺の先にあるこの辺とかだとIJGの物とは算出方法が違ってて
できるテーブルの係数が微妙に違ったので混乱した。
#1行で書くとこんな計算↓
(Q)ij = (Quality<50) ? (Qorg)ij*50/Quality : (Qorg)ij*(100-Quality)/50;

その後IJGのを式で書いてる所を見つけた。この辺。式を引用すると

#OOoの数式エディタを使ってみたかっただけ(゜д゜)
基のテーブルと計算方法があればソースを追わずにIJG同等のq=1~100のテーブルが作れる。
色々まとめた物がJpegAnalyzerのJpegTBL.iniに入ってある。
つかこのまとめを読むのに先のIJGのテーブルが要ったのだ…ini内はCRC32と合計値しか書いてない。
読んでみるとAdobe以外のはどれも上の基本テーブルから計算してるっぽい?(゜ω゜)


係数の合計を適当にグラフにしてみると↑になる。(左図=輝度,右図=色差.)
青線が合計値、棒が差分の拡大。横にquality1~100。
色差のq=20辺りで傾きが変わってるのは係数255有無の境になる為。
実際にゃサイズ最優先でもなけりゃq=75以上しか使わないのだろうが...(゜∀゜;

係数の合計値自体は実際の画質やサイズとの関連は薄いからこんな値をどうこう書いてる所は無いと思うけど解析で使われた画質設定の参考には使えるかなー?と(゜∀゜)
IJG以外のテーブルもざっと見たけど似たような計算で作ってるタイプはこんな乱暴な物でもokぽいがAdobeのはもっと細かく検証しないと駄目かも。

JpegAnalyzerは更新が滞ってるようで残念。登録テーブル外のDQTだとそれがどれくらいの品質か判らない辺りから調べ始めた訳だがANSI外ファイル非対応とか文字列のダンプ部分が各エンコード毎な対応してないので判らないとかちと古めのfswにありがちな文字列周りの弱さもちと厳しい(ノ∀`)





新規
←管理者にだけ表示する場合チェック



トラックバック用URL:
http://r2089.blog36.fc2.com/tb.php/165-851fd83d

Appendix

profile

那駕〇

Author:那駕〇

recent entries

アクセスの多い記事

過去の記事


義援金募集

FC2「東北地方太平洋沖地震」義援金募集につきまして

ブロとも申請フォーム

この人とブロともになる

カウンタ

※ここより下の部分に掲示板とかまとめとかいうリンクがあってもそれはfc2blogの広告なので当blog内コンテンツではないです(゜д゜)
まとめ
....
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。