2. Exif 画像ファイル規定
2.7. 使用する JPEG マーカセグメント
2.7.1. JPEG マーカセグメントの内容
- 69 -
B.
量子化テーブル定義 (DQT : Define Quantization Table)DQT
は量子化テーブルを定義するマーカコードである。精度
8
ビット(Pq=0)で最大3
種類のテーブルを記録することができる。量子化テーブルは、すべてを ひとつのDQT
マーカセグメント内に記録しなければならない(DQTマーカを複数記録してはならない)。テーブルの値は任意とする(Fig. 16 参照)。DQT、DHT、DRI、SOFの記録順は任意とするが、これら
は
APP1(APP2
を記録する場合はAPP2)以降、SOS
以前の領域に記録する。アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+01 DB DQT
+02 00 フィールドの長さ
C5 2+(1+64)*3=197 (Byte)
+04 00 Y: Pq=0, Nq=0
+05 : 量子化テーブル Y:Q0
: :
: :
: 量子化テーブル Y:Q63
+45 01 Cb : Pq=0, Nq=1
+46 : 量子化テーブル Cb:Q0
: :
: :
: 量子化テーブル Cb:Q63
+86 02 Cr : Pq=0, Nq=1
+87 : 量子化テーブル Cr:Q0
: :
: :
: 量子化テーブル Cr:Q63 Fig. 16 DQT構造図 (量子化テーブル3個)
- 70 -
C.
ハフマンテーブル定義 (DHT : Define Huffman Table)DHT
はハフマンテーブルを定義するマーカコードである。本規格では
1
つのコンポーネントに対し、DC、AC 1
組のハフマンテーブルを持つこととし、各コンポー ネントは DHT で定義されるいずれかのハフマンテーブルに対応していなければならない。ハフマンテー ブルは、すべてをひとつのDHT
マーカセグメント内に記録しなければならない(DHTマーカを複数記 録してはならない)。ハフマンテーブルの値は任意であるが、JPEG
参考値を基本テーブルとして用いる こともできる。(Fig. 17 参照)DQT、DHT、DRI、SOF
の記録順は任意とするが、これらはAPP1(APP2
を記録する場合はAPP2
)以降、SOS 以前の領域に記録する。
アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+01 C4 DHT
+02 01 フィールドの長さ
A2 2+(1+16+12+1+16+162)*2
= 418Byte +04 00 テーブル番号 Y-DC : 00
+05 :
: :
DHT パラメータ +21 10 テーブル番号 Y-AC : 10
+22 :
: :
DHT パラメータ +D4 01 テーブル番号 C-DC : 01
+D5 :
: :
DHT パラメータ +F1 11 テーブル番号 C-AC : 11
+F2 :
: :
DHT パラメータ
Fig. 17 DHT 構造図
- 71 -
D.
リスタートインターバル (DRI : Define Restart Interval)DRI
はリスタートマーカ挿入間隔を定義するマーカである(Fig. 18 参照)。DRIの記録およびリスター トマーカの挿入はオプションである。リスタートマーカを挿入する場合はDRI
を記録し、その値は、色 差サンプリングが4:2:2、4:2:0
の場合に関わらず4MCU(Minimum Coding Unit)単位、すなわち 64
画素単位とする(付録 F参照)。DRIはひとつだけ記録する。DQT、DHT、DRI、SOF
の記録順は任意とするが、これらはAPP1(APP2
を記録する場合はAPP2
)以降、SOS 以前の領域に記録する。
アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+00 DD DRI
+02 00 フィールドの長さ 2+2 = 4 (Byte)
+04 XX 00
YY 04
Fig. 18 DRI構造図
- 72 - E.
フレームヘッダ (SOF : Start of Frame)SOF はフレームセグメントの始まりに位置し、そのフレームに関する各種パラメータを示すマーカコー ドである(Fig. 19 参照)。
DQT、DHT、DRI、SOF
の記録順は任意とするが、これらはAPP1(APP2
を記録する場合はAPP2
)以降、SOS 以前の領域に記録する。
アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+00 C0 SOF
+02 00 フィールドの長さ 11 2+1+2+2+1+2*3 = 17 (Byte)
+04 08 データの精度 (bit)
+05 XX 垂直ライン数 YY XXYY(Hex) lines +07 WW 水平画素数
ZZ WWZZ(Hex) 画素
+09 03 コンポーネント数 +0A 01 コンポーネント番号 (1:Y)
+0B 21or22 H0 = 2, V0 = 1(4:2:2) or 2(4:2:0)
+0C 00 量子化テーブル指定 +0D 02 コンポーネント番号 (2:Cb)
+0E 11 H1 =1, V1 = 1
+0F 01 量子化テーブル指定 +10 03 コンポーネント番号 (3:Cr)
+11 11 H2 =1, V2 = 1
+12 02 量子化テーブル指定 Fig. 19 SOF 構造図
- 73 - F.
スキャンヘッダ (SOS : Start of Scan)SOS
はスキャンに関する各種パラメータを表すマーカコードである(Fig. 20 参照)。アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+00 DA SOS
+02 00 フィールドの長さ 0C 2+1+3*2+3 = 12 (Byte)
+04 03 スキャン中のコンポーネント数 +05 01 コンポーネントセレクタ Y : 01 +06 00 ハフマンテーブルセレクタ Y : 00 +07 02 コンポーネントセレクタ Cb : 02 +08 11 ハフマンテーブルセレクタ C : 11 +09 03 コンポーネントセレクタ Cr : 03 +0A 11 ハフマンテーブルセレクタ C : 11 +0B 00 ブロック内スキャン開始位置 +0C 3F ブロック内スキャン終了位置 +0D 00 Successive approximation
ビット位置
Fig. 20 SOS 構造図
G.
圧縮データ圧縮データは、
Y, Cb, Cr
が所定の比率でブロックインターリーブされ、ハフマン符号化されたバイトデー タである。各ブロックのDCT
係数の最後の値が0
の場合にはEOB
(エンドオブブロック)が挿入される。また、
DRI
でリスタートマーカ挿入を定義した場合には、4MCU
間隔でリスタートマーカが挿入される。H.
圧縮データ終了 (EOI : End of Image)EOI
はエントロピー符号化データの終了を表すマーカコードで、SOI
と対をなしている(Fig. 21 参照)。EOI
の後に続くデータ列については特に規定しない。アドレスオフセット コード 意味 (Hex) (Hex)
+00 FF Marker Prefix
+01 D9 EOI
Fig. 21 EOI 構造図