JPEGとは
概念図は

ここ

用語
EXIF
Exchangeable image file format
JPEGデータにカメラからえられる情報をヘッダーとして付加したもの。

サムネイルもここに入っている。
これれで見ることが出来る。
Exif Reader
 
セグメント
ここ

ベースライン/プログレッシブ
ベースライン
 通常のもの、左上から順次圧縮、再生する。

プログレッシブ
  初め荒く表示し徐々に細かく表示する、データの送られる順序もそうなるので圧縮時から違う

マーカ

画像サイズなど
SOFマーカ FF C0
 Window のサイズ(X, Y)を設定。 また、データのYC フォーマットを識別し、フォーマット情報を設定。
【例】
FF C0 00 11 08 04 0B 06 40 03 00 21 00 01
00 01 02 11 01
↓ 対応は色で示す
Y=1200 X=1600 YC4:2:2
 22の時YC4:2:0

RSTマーカ
 左端に移動し再生を続ける。(キャラクタ端末の"CRLF"のように)
 エラーが起こるとハフマンコードが解析できなくなるが、とりあえずRST以降の絵は救済される。

DQTマーカ
量子化テーブルが入っている
 この係数がDCTで使われる、割り算の分母を示すので実行前に掛け算用に変換する。
 圧縮率を変えるにはさらにこの係数全体に同じ数値を掛けて変更する。
 標準の量子化テーブルは別途用意されているので使わないことも出来る。

DHTマーカ
 ハフマンテーブルが入っている
 標準のハフマンテーブルは別途用意されているので使わないことも出来る。

DQT、DHTともファイル化する時は添付しなければならないそうだが、中身は標準の物を使うことが多いような気がする

DCT
  離散コサイン変換
  画像を固定サイズ(JPEGでは8*8画素)で空間領域から周波数領域へ変換する
  連続空間領域でないといった意味らしい、演算が掛け算足し算だけで済む利点が有る。

 DSP
掛け算足し算を同時に行う命令(積和演算)をパラレル(8個まとめてとか)に行う演算器を持っているので高速に実行可能だ。
 DSPの"C"コンパイラは特別の記述をしなくてもパラレルに実行可能なコートを出せる、当然変数の引用に前後があるものはNG。

ハフマン符号
エントロピー符号化の代表?
 2進木に出現確立の高いものからあてはめる。
下記の例ではAがもっとも多く出現するので1Bitであらわす。
この符号は最大4Bitでオール1は該当なしになる。
0 1
 
  1
   
  B  1
    
 
    C
  1
       
      D x
復号はゼロが出るまでカウントしてテーブルを参照すれば良い。
DSPはこの手の演算には向いていない。

libjpeg
JPEGのエンコード、デコードを行うためのライブラリである。JPEGファイルを操作するためのユーティリティも含んでいる。
Link
libjpeg