CR2ファイルのRawデータを読み取ってみる その6 IFD3とRawデータ

since:2014-5-18
last update:2014-8-31
前のページへ   次のページへ







3.6 IFD3

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]  次のページ