日記移転先(゜▽゜)

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


| Home | Index | Links | About |

Entries

スポンサーサイト

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

JPEGの量子化テーブルを調べる#2 - JPEGsnoop等


更にめも。

その後テーブルを色々収集してみた。
JpegAnalyzer内での判別方法は分かってるのでJpegTBL.ini使って自動化してもよいのだが画像を色々見ながらってのも面白いのでだらだらと収集してみた。傾向も分かるし。
Photoshopの13段階のは集まったが100段階の「web用に保存」の方は7割半収集が限界だった(゜д゜;
デジカメ独自の量子化テーブルはちらっと覗く気もなし(゜ω゜;;

webでテーブル自体の情報を探す…やはり英語で探した方が色々あった(゜ω゜;
数値のテーブルを挙げてる所があった。JPEGsnoopって情報表示ソフトを公開してる所のようだ。
ImpulseAdventure - JPEG Quality and Quantization Tables for Digital Cameras, Photoshop
http://www.impulseadventure.com/photo/jpeg-quantization.html
一見スゲーと思ったがPhotoshopの'web用に保存'のテーブルは10種類、13段階のは大小の区別無し…web上に載せられているのは参考程度だな(;´Д`)
んでJPEGsnoop,

・設定はレジストリ保存(HKCU/Software/ImpulsAdventure/JPEGsnoop/)。
・追加データベース用(?)に(略/user名/Appdata/Roaming/JPEGsnoop/)なディレクトリも掘られる。
とexe配布のみのインストーラ無しなのにそういう事する玄人向け仕様だった=)

RADツール辺りでやっつけで作れそうな見た目のヘッダ展開表示ソフト風だが情報表示窓を最後までスクロールするとデータベース化した物を持ってるのか画像によっては色々と候補が出てくる。
DQT部分にはテーブルから推測される品質の値っぽい数字も表示される。

気になるDQT部分に関しては既に適当にツール自作してたので放置してたのだがやっぱりDQT部分に表示される数値が気になるので後で調べてみた。
IJGのq=80の輝度部分での表示例(以降の例も輝度のみ)
Approx quality factor = 79.94 (scaling=40.12 variance=1.43)  Approx quality factor→おおよその品質係数
 scaling→倍率(%)
 variance→分散
て所。jpegファイル内のテーブルと元のテーブルとの倍率で計算されているのでjpeg作成時の品質の値とは差がある。
基本とするテーブルは仕様のやつ各1種類のみなのでロスレス回転されたテーブルの検知は困難。
(IJG q=50(回転))Approx quality factor = 48.50 (scaling=103.10 variance=672.42) またq=23以下だと係数255が出てくるのでq=1に近づく程分散が大きく計算されてしまう。
(IJG q=25)Approx quality factor = 25.00 (scaling=200.00 variance=0.00)
(IJG q=24)Approx quality factor = 24.05 (scaling=207.87 variance=0.69)
(IJG q=23)Approx quality factor = 23.05 (scaling=216.91 variance=1.88)
(IJG q=22)Approx quality factor = 22.08 (scaling=226.45 variance=8.36)
(IJG q=21)Approx quality factor = 21.13 (scaling=236.58 variance=25.18)
(IJG q=20)Approx quality factor = 20.15 (scaling=248.09 variance=65.17)
(IJG q=10)Approx quality factor = 12.45 (scaling=401.55 variance=11434.69)
(IJG q=1)Approx quality factor = 6.55 (scaling=763.47 variance=398923.88)
分散の値からJPEGの基本テーブル系かどうかの判別をするにはこの辺が厳しい。
この辺、一般的なjpegの量子化テーブルの算出方法を知らないと数値見ても判らないかも(゜▽゜;

実際の計算方法は
c1 = 基の係数からの倍率(%)の64個分の合計÷64
c2 = (基の係数からの倍率(%)2の64個分の合計)÷64
ソース中にははテーブルの係数が0だと999.99を代入したりもしてます。
quality = ・(各テーブルが全て1なら) 100.00固定
      ・(c1≦100.00なら) (200.0-c1)÷2
      ・(それ以外なら) 5000.0÷c1
scaling = c1
variance = c2 - c12
基にするテーブルはDQT上のid=0なら輝度、それ以外なら色差の固定で後のSOFセグメントの値等はは参照してない模様。
計算方法が判ってると十分実用的かな? varianceの値が小さい程JPEGの基本テーブルの形に近いとは判断できます。
まあApprox quality factorの値がIJGのquality値と離れててもJPEGsnoop自体は下の方の表示では既知のテーブルだとしっかり当ててくれます=)


JPEGsnoopの話が長くなったが他にwebで見つかるので言えばExifTool、これはテーブルから作ったmd5のハッシュを色々網羅してる模様。有名?
こちらのはDQTの収納が分割か非分割かで別のmd5になるような計算でかなりgeek(゜д゜;
JPEGDigest.pmでぐぐればPearlのソースで見つかるので流用も楽。



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



トラックバック用URL:
http://r2089.blog36.fc2.com/tb.php/166-1c14b26f

Appendix

profile

那駕〇

Author:那駕〇

recent entries

アクセスの多い記事

過去の記事


義援金募集

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

ブロとも申請フォーム

この人とブロともになる

カウンタ

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