RAFファイルのRawデータを読み取ってみる その2 解説の概要/RAFの構造の概要

since:2014-7-21
last update:2014-7-21
前のページへ   次のページへ




2、解説の概要

 このドキュメントでは実際にRAF形式からRawデータを取り出す手順を具体例を通じて記述しています。
 この具体例は、X-M1 で撮影した以下のサンプルを用いて行ないます。
raf_data.zip (24,815,748 byte)(23.6MByte)
MD5値:6721c24d9f27973df002248c6b5bedae
です。ファイルサイズが大きいので注意してください

圧縮ファイルの中身は以下の通りです。
DSCF0054.RAF  RAFファイルです。
DSCF0054_CFA.tif CFA領域を切り出したファイルです。
DSCF0054_ISO200_exp1-160sec.dng DSCF0054.RAFを非圧縮DNGに変換したファイルです。
DSCF0054.JPG JPEGファイルです。

X-Trans CMOS機以外のセンサーを利用している機種の場合、大幅に内容が異なる場合がありますので、あらかじめご留意ください。

ちなみに利用する画像のイメージは以下の通りです。(以下のイメージは縮小しています。)

月齢18.3
Vixen ED100Sf + X-M1 ISO200 1/160sec

 解説にあたっては、TIFFの基本的構造はかなり端折って説明しますので、その点は事前に押さえておいてください。
 なおX-E2およびX-M1以外の他の機種で同様に取得できるかは不明ですので、その点はご留意ください。

3、RAF形式の各セクションの内容

3.1 RAF形式の構造の概要

 RAF形式の構造は独自のバイナリー構造とTIFFの混合となっています。
 ファイルヘッダー部とJPEG部、CFA Header部、CFA部から構成されています。
 概要は以下の表の通りです。

構造の概要
領域説明
Headerマジックナンバーや各セクションのポインターが格納されている。Big Endian
JPEGJPEG画像データ(フルサイズ)に関する情報(EXIF情報含)が格納されている。
CFA HeaderRAWに関連する情報が格納されている。Big Endian
CFARAWデータが格納されている。TIFF形式(Little Endian)。

3.2 ファイルヘッダ領域

 RAF形式の最初の百数十バイトがファイルヘッダになります。バイトオーダーはBig Endianです。
 サンプルの場合は148byte長です。


図1.ファイルヘッダのダンプ表示(0x0000 0000 から 0x0000 0093 まで)

 最初の16バイト(アドレス0x0000 0000-0x0000 000F)はRAF形式のマジックナンバーを示しています。値はASCII表現でFUJIFILMCCD-RAW です。

 次の4バイト(アドレス0x0000 0010-0x0000 0013)は固定値で、値はASCII表現で0201です。
 次の8バイト(アドレス0x0000 0014-0x0000 001B)はモデル番号でしょうか?不明です。
 次の32バイト(アドレス0x0000 001C-0x0000 003B)はモデル名になります。\0が終端の文字列表現になります。サンプルでは値はASCII表現でX-M1です。

 ここから各セクションへのオフセット情報が格納されています。
 次の4バイト(アドレス0x0000 003C-0x0000 003F)はバージョンになります。サンプルでは値はASCII表現で0100です。
 次の20バイト(アドレス0x0000 0040-0x0000 0043)は未使用領域のようです。

 次の4バイト(アドレス0x0000 0044-0x0000 0047)はJPEG領域の開始アドレスです。サンプルでは0x0000 0094です。
 次の4バイト(アドレス0x0000 0048-0x0000 004B)はJPEG領域の長さです。サンプルでは0x0003 73DCです。

 次の4バイト(アドレス0x0000 004C-0x0000 004F)はCFA Header領域の開始アドレスです。サンプルでは0x0003 75D0です。
 次の4バイト(アドレス0x0000 0050-0x0000 0053)はCFA Header領域の長さです。サンプルでは0x0000 5630です。

 次の4バイト(アドレス0x0000 0054-0x0000 0057)はCFA領域の開始アドレスです。サンプルでは0x0003 CC00です。
 次の4バイト(アドレス0x0000 0058-0x0000 005B)はCFA領域の長さです。サンプルでは0x0181 5800です。

以降の領域は不明ですが、CFA領域長さと同じ値が格納されているだけのようですので、無視していても問題はなさそうです。

各領域のアドレスと長さの情報を纏めると以下の通りになります。

サンプルでの各セクションの開始アドレスと長さ
領域開始アドレス長さ
Header0x0000 00000x94
JPEG0x0000 00940x0003 73DC
CFA Header0x0003 75D00x0000 5630
CFA0x0003 CC000x0181 5800


次ページ:CFA Header領域

前のページ  [1] [2] [3] [4] [5] [6]  次のページ