2007年 02月 23日

DNG の仕様を読む

実装に秋田ので DNG を適当に読んでみる。秋田っていうか JPEG のパースが思ったより (TIFF より) めんどい……
仕様は書き込み側 (カメラメーカ) 向けに書いてあるっぽい感じ (Adobe が書いてるんだからそりゃそうだろうけど)

DNG のポイント

  • TIFF 互換だよ
  • 絶対ではないけどサムネイルも作ってくれるとうれしいな (サムネイルを含む可能性がある)
  • RAW データの IFD には NewSubFileType を 0 に設定しようね。サムネイルとかは 1 にするよ。
  • カメラソフトウェア設計者は CPU にあわせてバイトオーダーを選んでいいよ (DNG はどっちもサポートするよ=TIFF と同じ)
  • センサー周辺のゴミピクセルは収録してもしなくてもいいよ。収録する場合は ActiveArea に有効画素を記録してね
  • メタデータはいくつか格納法があるよ。TIFF-EP と EXIF はどっちもだいたい同じで、いちおうどっちもサポートするけど、EXIF のほうがお勧めかな (決めろよといいたい)
  • BitsPerSample は 8 から 32bits までサポートするけど、8 16 32 以外の場合は上位ビットをうめてね。
  • Compression で格納データの種類がわかるよ。1 は無圧縮、7 は JPEG 圧縮だ。7 の場合、If PhotometricInterpretation = 6 (YCbCr) and BitsPerSample = 8/8/8, or if PhotometricInterpretation = 1 (BlackIsZero) and BitsPerSample = 8, then the JPEG variant must be baseline DCT JPEG. それ以外の場合は lossless JPEG として格納しないといけないよ。
  • JPEG の width, height は純粋にサンプリングの数をいれてくれればいいよ。
  • PhotometricInterpretation で種類がわかるよ。1, 2, 6 はサムネイルにだけ使われる普通の画像データの種類を識別するやつで、32803 は CFA (カラーフィルター配列)、34892 がリニア RAW (CFA 使ってないカメラ用) だよ。
  • CFARepeatPatternDIM でカラーフィルターパターンのサイズを指定して、CFAPattern でどういう構成になってるかを指定するよ

あといろいろあるけどあきた
カラーフィルターパターンから現像プロセスを算出すればメーカーごとに全部実装するとかはしなくていいようになってるのか。カラーフィルターの値の設定があればいい、みたいなのかな。