JPEG ハフマン分割
にて話題になった、Apple Retina の JPEG 画像。
とりあえず、JPEG chunk を見てみると、
yoya@sakura:~$ jpeg_segment unlock_001.jpg | grep DHT | wc 11 33 360
(https://twitter.com/yoya/status/250783995107872769)
効果の程
ハフマンブロック分割で、どの位の効果が出てるのか。
yoya@sakura:~$ convert unlock_001.jpg test.jpg yoya@sakura:~$ convert test.jpg test2.jpg yoya@sakura:~$ ls -l unlock_001.jpg test.jpg test2.jpg -rw-r--r-- 1 yoya develop 942006 2012-10-30 17:57 test.jpg -rw-r--r-- 1 yoya develop 942236 2012-10-30 17:57 test2.jpg -rw-r--r-- 1 yoya develop 850671 2012-09-19 21:20 unlock_001.jpg
分割しない場合に比べて、1割弱減っていると推測出来る。
チャンク
yoya@sakura:~$ jpeg_segment unlock_001.jpg (0) marker=SOI(FFD8): length=0 (1) marker=APP0(FFE0): length=14 (2) marker=DQT(FFDB): length=65 (3) marker=DQT(FFDB): length=65 (4) marker=SOF2(FFC2): length=15 (5) marker=DHT(FFC4): length=27 (6) marker=SOS(FFDA): length=37956 (7) marker=DHT(FFC4): length=27 (8) marker=SOS(FFDA): length=25509 (9) marker=DHT(FFC4): length=26 (10) marker=SOS(FFDA): length=25397 (11) marker=DHT(FFC4): length=60 (12) marker=SOS(FFDA): length=123686 (13) marker=DHT(FFC4): length=80 (14) marker=SOS(FFDA): length=128703 (15) marker=DHT(FFC4): length=40 (16) marker=SOS(FFDA): length=139193 (17) marker=DHT(FFC4): length=39 (18) marker=SOS(FFDA): length=191382 (19) marker=DHT(FFC4): length=38 (20) marker=SOS(FFDA): length=33315 (21) marker=DHT(FFC4): length=77 (22) marker=SOS(FFDA): length=58239 (23) marker=DHT(FFC4): length=38 (24) marker=SOS(FFDA): length=33123 (25) marker=DHT(FFC4): length=71 (26) marker=SOS(FFDA): length=53400 (27) marker=EOI(FFD9): length=0
- APP1, APP2 等のメタ情報が無いので制作したソフトウエアのヒントが無い
- DHT で区切られた SOS の長さがてんでバラバラなので、単純に等間隔に分割させたとは考え難い。(勿論、圧縮の結果違うというのもありうるけど)
- 一度、ハフマン符号だけ解いて、本当の分割長を調べる必要がある