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

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




0、いきさつ

 天体関連の撮影データの処理にはRaw画像を処理することがほぼ必須です。
 これを実現するために非圧縮DNGベースでのダーク減算やフラットフィールディングを行なう RStackerを開発していました。
 今回、より利便性を向上するためCanon製デジタルカメラのRaw画像形式であるCR2形式ファイルから RStackerで直接処理する機能を実装しました。
 このドキュメントは、この実装に際して得られたCR2形式のデコードを行なう方法を 実際の例を交えながら記述したものです。

0.1 免責事項

このドキュメントに記載されている事項はすべて無保証ですので、取り扱いは自己責任でお願いします。

1、Raw画像形式とは

 Raw画像形式とは、デジタルカメラのセンサーが得た情報をそのまま記録した画像形式です。
 デジタル写真向けの画像形式としてもっとも普及しているJPEG形式はRGB各8bitの階調、すなわち0から255の値を保持できますが、 デジタルカメラのセンサーの多くはそれを上回る12bit(0から4095)や14bit(0から16383)の階調で取り込む能力があります。
 このためデジタルカメラのセンサー情報をJPEGに変換するということは、センサーから得た情報の多くを切り捨てていることになります。
このことはコントラストや色調変更等の後処理を行う場合に、センサーからの情報がある場合に比べて出来栄えが不利になります。

 また、CMOSにせよCCDにせよセンサーの波長に対する感度領域は紫外領域から赤外領域まで広がっているため、 単純なひとつのセンサーでは色を識別することができません。 そのため、現時点(2014年)のデジタルカメラのほとんどは(狭義の)センサーの前に、ベイヤー配列と呼ばれる並びでカラーフィルタを実装しています。
実際に人間が識別可能な画像に変換するときは、このカラーフィルタの配列を元に、各色を補完して処理しています。 しかしホットピクセル等除去に代表されるいくつかの処理は、補完した後では厳密にできなくなるため、Raw画像形式での処理が有効となります。

1.1 Raw画像形式の種類

主なRaw画像形式は以下のようなものがあります。

主なRaw画像形式
策定者主な形式備考
キヤノンCR2
ニコンNEF
ソニーARW
富士フィルムRAF
AdobeDNG仕様が公開されている。

1.2 CR2形式

 CR2形式は、他のメーカー主導のRaw画像形式と同様に、その仕様が公開されていません。
 そのため、その内容は有志による無保証の解析結果に頼ることになります。
 最も有益なサイトは以下のサイトです。

Understanding What is stored in a Canon RAW .CR2 file, How and Why

このサイトを読めばCR2形式の大方の内容はつかめるはずです。

上記以外に、仕様が公開されているいくつかの情報が必要です。

まずCR2形式の骨格はTIFF形式となっているためTIFFの理解が必要です。
以下のAdobeのサイトに仕様書があります。
http://partners.adobe.com/public/developer/tiff/index.html

TIFFは普及しているフォーマットなので、上記以外にも日本語での解説サイトがいくつかあります。

次にRaw画像データ本体はITU-T T.81 で規定されている所謂JPEGの中のLossless JPEGと呼ばれる形式で 圧縮されています。そのため ITU-T T.81 のLossless JPEGの理解が必要になります。

なおITU-T T.81はJIS X4301としてJIS化されていますので、こちらを参照しても結構です。

参考:有用なツール

CR2ファイルの解析を行なうにあたり有用なツールを以下に記載します。
このドキュメントも以下のツールを使用して記述しています。

JpegAnalyzer Plus
 JPEG形式やTIFF形式をパースして情報を表示してくれます。CR2形式もパースして情報を表示してくれます。

Stirling
 バイナリーエディタです。使いやすいバイナリーエディタであれば何でも良いです。

Adobe DNG Converter
 非圧縮でRawデータを書き出せますので、実行結果の照合する際に有用です。


次ページ:解説の概要/CR2の構造の概要

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