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

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




2、解説の概要

 このドキュメントでは実際にCR2形式からRawデータを取り出す手順を具体例を通じて記述しています。
 この具体例は EOS Kiss X5 で撮影した以下のサンプルを用いて行ないます。
IMG_2026.zip (72,308Kbyte):これにはCR2から切り出したLossless JPEGデータなども含まれます。
MD5値:1962284f1c542111c71ba69b3231a948 です。ファイルサイズが大きいので注意してください

圧縮ファイルの中身は以下の通りです。
IMG_2026.CR2 今回のドキュメントの対象となるCR2ファイル
IMG_2026_IFD3_JPEG.jpg IMG_2026.CR2からIFD3に含まれるLossless JPEG部分を切り出したファイル
IMG_2026.dng IMG_2026.CR2を無圧縮DNG変換したファイル。
IMG_2026_RAW_Data_from_DNG.bin IMG_2026.dngからRAWデータを切り出したファイル

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

太陽
Vixen ED100Sf + ND400+ND16(49mm) + EOS Kiss X5 ISO100 1/4000sec

 解説にあたっては、TIFFの基本的構造はかなり端折って説明しますので、その点は事前に押さえておいてください。
 なお他の機種で同様に取得できるかは未知数ですので、その点はご留意ください。
 またmRAWやsRAWの説明は含まれていません。

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

3.1 CR2形式の構造の概要

 CR2形式の構造は基本的にTIFF形式です。
 ファイルヘッダー部と4つのIFDから構成され、それらにEXIFや実画像情報がポイントされています。
 概要は以下の表の通りです。

構造の概要
説明
File HeaderTiff File Headerおよびマジックナンバーが格納されている。
IFD0JPEG画像データ(フルサイズ)に関する情報(EXIF情報へのポインタ含)およびその画像データへのポインタが格納されている。
IFD1サムネイル画像(JPEG画像)へのポインタが格納されている。
IFD2非圧縮の縮小画像情報およびそれへのポインタが格納されている。
IFD3RAWデータ情報およびそれへのポインタが格納されている。

3.2 ファイルヘッダ

 CR2形式の最初の16バイトがファイルヘッダになります。

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

 最初の8バイトはTIFF形式と互換です。
 最初の2バイト(アドレス0x0000 0000-0x0000 0001)はバイトオーダーを示しています。
 今回のサンプルの値は 0x49 0x49 ですので、リトルエンディアンを示しています。

 次の2バイト(アドレス0x0000 0002-0x0000 0003)はTIFFのマジックナンバーでSHORT型で示されます。 値は0x002A (42)です。
 次の4バイト(アドレス0x0000 0004-0x0000 0007)は最初のIFDへのアドレスです。LONG型で示され、値は0x0000 0010 です。

 ここまでがTIFFのファイルヘッダになります。ここからの8バイトはCR2独自のヘッダ部になります。

 次の2バイト(アドレス0x0000 0008-0x0000 0009)はCanon Raw形式のマジックナンバーになります。
 値は0x430x52 で文字列にすると"CR"です。

 次の1バイト(アドレス0x0000 000A)はメジャーバージョンです。値は0x02です。
 次の1バイト(アドレス0x0000 000B)はマイナーバージョンです。サンプルでは値は0x00です。

 次の4バイト(アドレス0x0000 000C-0x0000 000F)はIFD3へのアドレスです。IFD3はRAWデータが格納されており、 TIFFの構造をパースせずともこのアドレスからRAWデータへアクセスが可能となっています。
サンプルでは 0x0000 B6A6 です。


次ページ:IFD0とExif IFD

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