IFD3はサンプルでは0x0000 B6A6から始まります。
JPEG Analyzer PlusでパースしたIFD3部分を以下に示します。
このIFDにはRawデータへのアドレスが含まれています。
そのアドレスはサンプルで0x0024 D560となっており、長さは16,908,088byteです。
このRawデータはITU-T T.81で規定されるJPEG形式の中のLossless方式(以下単にLossless JPEGとします)で圧縮されています。
ただしこの圧縮データは、実際のセンサーの並び順にRawデータが格納されているわけではありません。
ここで必要なのが タグ0xC640で示される3つの値です。
「Understanding...」のサイトではcr2_sliceと呼ばれるものです。
3つの値をa,b,cとしたときに、bの幅のピクセルをa回繰り返し、最後にcの幅があるという意味になります。
すなわち、以下の関係が成り立ちます。
sensorWidth = a x b + c
サンプルでは2,1728,1888なので、センサーからの情報を幅で1728,1728,1888の3つの領域に分割します。
図で表すと下図のようになります。
これを下図のように、#0の領域から、Lossless JPEG圧縮用のデータ配列として順に配置していきます。
#0の領域が終われば、#1の領域、#2の領域と同様に配置していきます。
このようにしてできたデータ配列がLossless JPEG圧縮されています。
デコードするときは、この逆の作業が必要になります。
次ページ:Lossless JPEGのデコード
前のページ
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
次のページ