Division By Zero

ゼロで割る

JPEGについて少し調べてみた

JPEGは、いわずと知れた静止画像の圧縮方式。

一般的に非可逆圧縮の画像フォーマットとして知られているが、可逆圧縮形式もサポートしている。しかし、可逆圧縮は特許などの関係でほとんど利用されていない。

http://ja.wikipedia.org/wiki/JPEG

Webで用いる画像非可逆圧縮では事実上の標準フォーマットといえるだろう。圧縮の手順は、

  1. RGBをYCrCbに変換
  2. 画像を8x8画素のブロックに分割
  3. ブロック毎に離散コサイン変換
  4. 量子化
  5. エントロピー符号化

となっているが、この逆の手順で展開(解凍)できさえすればいいのだろう。使用する量子化テーブルによっては、離散コサイン変換で少し手を抜いたりできるはずだ。

JPEG(JFIF)のファイル構造は、日本語ではここがわかりやすい。JpegAnalyzer Plusというアプリのマニュアルで、もちろん、このアプリ自体も便利だ。

量子化の際に利用するテーブルを変更することで、圧縮率を変化させることができる。一般には、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

圧縮に際して、人の目が鈍い空間周波数領域の情報を適度に減らせばいいのだろう。周波数の最も高い部分で数値が最大となっていないのは、人間の目が単純に高周波成分に弱いというわけではないということか。また、縦方向をやや強めに減らしている。

自然界には水平成分が多く、そのため視覚の縦方向と横方向の解像度は異なっている。この特性を利用して、同一画素ながら、水平方向に比べ垂直成分の解像度を低下させた、横長のディスプレイが販売されている。

http://www.ricoh.co.jp/about/company/technology/voice/column/012.html

なるほど奥が深い、とわかったところで終了!