インターリブとノンインターリブ

BackIndexNext
偶然見つけた特殊なJPEGファイルですが、いい事例だと思いますので載せました。
00000000 ****** SOI :Start Of Image ******
00000002 [0010] APP0 :JPEG File Interchange Format Ver 1.1 (JFIF)
         density 1:1 no unit
00000014 [0084] DQT :Define Quantization Table
         00000018 QT0-8bit 汎用輝度(IJG50,LEAD050,ACD20-22)
         00000059 QT1-8bit 汎用色差(IJG50,LEAD050,ACD47-48)
0000009A [0011]
SOF0 :Start Of Frame 0 - Baseline DCT
         217[7] x 318[2] pixel - 24bit color (YCbCr 4:2:0)
         ComponentID-01 Y 2x2 QT0
         ComponentID-02 Cb 1x1 QT1
         ComponentID-03 Cr 1x1 QT1
000000AD [00D2] DHT :Define Huffman Table
         000000B1 HT0-DC 汎用輝度HT-DC
         000000CE HT0-AC 汎用輝度HT-AC
00000181 [0008] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Y[0/0]
0000018B ****** Image Data ******
         Data Size 7,762 bytes
00001FDD [00D2] DHT :Define Huffman Table
         00001FE1 HT1-DC 汎用色差HT-DC
         00001FFE HT1-AC 汎用色差HT-AC
000020B1 [0008] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Cb[1/1]
000020BB ****** Image Data ******
         Data Size 747 bytes
000023A6 [00D2] DHT :Define Huffman Table
         000023AA HT1-DC 汎用色差HT-DC
         000023C7 HT1-AC 汎用色差HT-AC
0000247A [0008] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Cr[1/1]
00002484 ****** Image Data ******
         Data Size 425 bytes
0000262D ****** EOI :End Of Image ******
まずは、このファイルの構造を良く見て下さい。
ベースライン形式でありながらDHTとSOS、イメージデータがそれぞれ3つ有りますよね。
SOSのHT Selectorを見て下さい。
YCbCrが別々に保存されている事が判ります。

このように成分毎に分ける方法を
ノンインターリブといいます。
一般的には、この
ノンインターリブ方式はY成分だけのグレースケール(白黒)画像しかありません。

ノンインターリブと反対にY、Cb、Cr各成分を混ぜる方法をインターリブといいます。
インターリブ方式は、WEBブラウザのように逐次複号をおこない画像を表示するようなソフトでは、先頭からカラーで表示出来ます。
カラーのJPEGファイルはほとんど
インターリブ方式です。

関連ページ:表示色成分について


以下にいろいろなパターンの解析リスト(SOFからスキャンデータまで)を用意しました。
構造を見比べて下さい。
以下のどの構造もJPEG規格に適合していますので画像ビュアで表示出来ています。


一般のベースライン(インターリブ)

0000009A [0011] SOF0 :Start Of Frame 0 - Baseline DCT
         768[0] x 560[0] pixel - 24bit color (
YCbCr 4:2:2)
         ComponentID-01 Y 2x1 QT0
         ComponentID-02 Cb 1x1 QT1
         ComponentID-03 Cr 1x1 QT1

000000AD [01A2] DHT :Define Huffman Table
         000000B1 HT0-DC 汎用輝度HT-DC
         000000CE HT0-AC 汎用輝度HT-AC
         00000181 HT1-DC 汎用色差HT-DC
         0000019E HT1-AC 汎用色差HT-AC
00000251 [000C] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Y[0/0] Cb[1/1] Cr[1/1]
0000025F ****** Image Data ******
         Data Size 60,106 bytes

←3つの成分を指定









←3つの成分がまとめて保存されている


グレースケール(ノンインターリブ)

00000059 [000B] SOF0 :Start Of Frame 0 - Baseline DCT
         747[5] x 767[1] pixel -
8bit grey scaled (Mono)
        
ComponentID-01 Y 1x1 QT0
00000066 [001B] DHT :Define Huffman Table
         0000006A HT0-DC CRC-EF9FF62A
00000083 [003C] DHT :Define Huffman Table
         00000087 HT0-AC CRC-83D74A7E
000000C1 [0008] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Y[0/0]
000000CB ****** Image Data ******
         Data Size 23,386 bytes


←ひとつの成分を指定





←ひとつの成分を保存


グレースケールのプログレッシブ(ノンインターリブ)

00000081 [000B] SOF2 :Start Of Frame 2 - Progressive DCT
         Image size 623 x 768 pixel -
grey scaled
        
Component-Y 1x1 QT0
0000008E [001B] DHT :Define Huffman Table HT0-DC
000000AB [0008] SOS :Start Of Scan 0-0[01]
         HT Selector[DC/AC]
Y[0/0]
         Image Size 4,640 bytes Address (000000B5-000012D5)
000012D6 [002F] DHT :Define Huffman Table HT0-AC
00001307 [0008] SOS :Start Of Scan 1-5[02]
         HT Selector[DC/AC]
Y[0/0]
         Image Size 7,110 bytes Address (00001311-00002ED7)
00002ED8 [0038] DHT :Define Huffman Table HT0-AC
00002F12 [0008] SOS :Start Of Scan 6-63[02]
         HT Selector[DC/AC]
Y[0/0]
         Image Size 3,543 bytes Address (00002F1C-00003CF3)
00003CF4 [002B] DHT :Define Huffman Table HT0-AC
00003D21 [0008] SOS :Start Of Scan 1-63[21]
         HT Selector[DC/AC]
Y[0/0]
         Image Size 10,538 bytes Address (00003D2B-00006655)
00006656 [0008] SOS :Start Of Scan 0-0[10]
         HT Selector[DC/AC]
Y[0/0]
         Image Size 937 bytes Address (00006660-00006A09)
00006A0A [0029] DHT :Define Huffman Table HT0-AC
00006A35 [0008] SOS :Start Of Scan 1-63[10]
         HT Selector[DC/AC]
Y[0/0]
         Image Size 23,919 bytes Address (00006A3F-0000C7AE)


←ひとつの成分を指定

←ひとつの成分をビット・係数分割で保存
 係数0(DC成分)を1bit


 係数1〜5(AC成分)を2bit



 係数6以降(AC成分)を2bit



 係数1以降(AC成分)を1bit


 係数0(DC成分)の残りのbit



 係数1以降(AC成分)の残りのbit

(サンプルをなくしたので解析リストはちょっと古いです)


特殊なパターンのベースライン(複合パターン)

0000012E [0011] SOF0 :Start Of Frame 0 - Baseline DCT
         160[0] x 120[0] pixel - 24bit color (
YCbCr 4:2:2)
         ComponentID-01 Y 2x1 QT0
         ComponentID-02 Cb 1x1 QT1
         ComponentID-03 Cr 1x1 QT1

00000141 [0008] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Y[0/0]
0000014B ****** Image Data ******
         Data Size 6,832 bytes
00001BFB [0051] DHT :Define Huffman Table
         00001BFF HT0-DC CRC-BD0F99F2
         00001C18 HT0-AC CRC-5DCBB91E
00001C4E [000A] SOS :Start Of Scan 0-63[00]
         HT Selector[DC/AC]
Cb[0/0] Cr[0/0]
00001C5A ****** Image Data ******
         Data Size 1,582 bytes

←3つの成分を指定




←輝度成分だけ保存、ここはノンインターリブ






←色差成分Cb、Crがまとめて保存、ここはインターリブ

Top