DNGファイルの中を見てみた

天体写真の画像処理でダーク減算やフラット補正を行う場合、現像前の状態で行う方が良いとされている(現像処理では近隣画素の情報も加味した処理が行われてしまうため)。

そのためのツールが「RAP2」や「RStacker」だが、これらのソフトは、各社のオリジナルRAWファイルに各々対応するのが大変なためか、AdobeのDNGファイルに変換してから処理するようになってきている。

ただ、利用者として不安なのが、DNGファイルの中身がよく分からないこと。オリジナルのRAWデータ同様、ちゃんと画素毎の生データが記録されているのだろうか。それにカラーフィルター配列が一般的なベイヤー配列ではなく特殊な「X-Trans」となっている我が「X-E2」では尚更気になる。

これはDNGの仕様書を読めば良いのだろうが、英語だし大変そう。

というわけで、実践あるのみということで、RStackerの開発者から教えて頂いた「JpegAnalyzer Plus」というソフトを使い、DNGファイルの中を見てみた(ソフト名からしてJpeg向けのようだが、実際は色々なファイルを解析できる)。

まず、左上が赤色で占められている画像をX-E2で撮影した。

そして、このRAWファイル(*.RAF)を、DNG Converter8.3でDNGファイルに変換した。設定は、RAP2やRStackerで指定されている「非圧縮、リニア無し、JPEGプレビュー無し」。

次に、このDNGファイルについて、RStackerを用いて、R,G,Bの各色に単色分離したDNGファイル出力を行った(1枚だけでは処理できないので、同じファイルをコピーして2枚に増やし、加算平均)。このうち、Rチャンネルのファイルについても追加で解析することにした。

こうして作成した「DNG変換のみ」と「Rチャンネル分離」の2つのDNGファイルを、JpegAnalyzer Plusで解析した。

まずは、「DNG変換のみ」

これを見ると、下記のようなことが分かる。

  • CFA(カラーフィルターアレイ)パターンは、6×6で、1行目は「RGRBGB」となる。画像1行目(1ライン目)はこれの繰り返し。X-Trans配列情報をちゃんと継承しているようだ。
  • 画像データは、アドレス 0004529A から開始
    (点順次というのは、左上->右下へ順に並んでいる?)
  • 画像ビットは16bit = 2byte
  • 黒レベルは1024、白レベルは16384。2の14乗=16384なので、輝度は14bit精度。

上記画像データ開始アドレスから、とりあえず12画素分の情報を抜き出してみる(図中の赤線部)。

  • 1画素の情報は2byteなので、最初(左上)の画素データは「13 0A」。
  • (このダンプ画像にはないが)ファイルの一番最初に
    「00000000 TIFF header 49492A0008000000 little endian (インテル)」
    の情報があった。リトルエンディアンは、2バイト分の数値を「下位バイト、上位バイト」の順で記録するので、「13 0A」は16進数で「0A13」のこと。つまり、10進数では
    • 「0A13」=0*16^3 + 10*16^2 + 1*16^1 + 3 = 2579
  • となる。

また、「Rチャンネル分離」のDNGファイルも同様にダンプを取ってみた.

ダンプを見ても分かりにくいので、CFA情報と合わせ、頭から12画素の情報を下表のようにまとめた。

  • 「DNG変換」では、R画素の輝度が大きいことが分かる。この画像左上部分は赤色が支配的なので、CFA情報と輝度情報がちゃんとマッチしていることが分かる(ただし、この先頭から12画素程度の部分は、現像ではcropで切り捨てられる所かもしれない)。
  • また、「Rチャンネル分離」では、R以外のチャンネルが黒レベル(1024)に強制上書きされていることが分かる。

このように、DNGファイルは、CFAによるカラー配列情報と、各画素の輝度情報を保持出来ている。カラー配列がCFA情報として記述できる限り、X-Transであっても、DNGファイルの規格内でRAWデータ(生データ)として記録出来るようだ。

RStackerはこのCFA情報を見て処理しているので、未知のX-Transであっても対応出来たとのこと。

ただし、カメラによっては黒レベルが縦、横位置によって補正されるなどのケースがあって、その場合は機種依存処理が必要なようだ。

まとめると、DNGはTIFFファイルの記録形式を用いて輝度情報とカラー配列情報、その他を記録し、現像ソフトはこれらの情報から、指定された現像パラメータとそれぞれの味付け(アルゴリズム)でRGB変換する、といったところだろうか。

あとはオリジナルのRAWファイル(RAF)の中を見て、DNGと比較したいところだが、JpegAnalyzer PlusでRAFを開いても、EXIF情報は見られるが、生データのアドレスが分からなかった(追記:これについては翌日に実施)。

コメント

タイトルとURLをコピーしました