ここで、ここまで出てきた各種Raw画像データのサイズについて整理します。
このドキュメントでの呼称 | 説明 | サンプルでの値 |
---|---|---|
公称RAW画像サイズ | カタログ上の画像サイズ | 4896x3264 |
実効RAW画像サイズ | 実際にデータが格納されているサイズ。 DNG変換時の実サイズ | 4952x3288 |
フォーマット上の RAW画像フルサイズ | フォーマット上でのRAWデータのサイズ | 5120x3288 |
実際にRAFファイル上で格納されているデータの大きさは「フォーマット上のRAW画像フルサイズ」になります。
ただし、X-M1のような色深度12bit機では2pixel分(各pixelを16bit長SHORT型で表現すると4バイト)のデータを3バイトにパックしています。X-E2は1pixel分(2バイト)のデータを2バイトで格納しています。
このあたりの圧縮の仕方はタグ0xF004や0xF005が関係してそうですが、いまのところ不明です。
実際に計算してみると
5120 x 3288 x 2 x 3 / 4 = 25,251,840byte
これはStripByteCountsの値と一致します。
それでは実際にデータを取得してみます。
RAWデータの先頭の6バイトの値は以下の通りです。
FF 00 10 FF E0 0F
これを2進数表現し、4bitづつ番号を振ります。
FF | 00 | 10 | FF | E0 | 0F | ||||||
1111 | 1111 | 0000 | 0000 | 0001 | 0000 | 1111 | 1111 | 1110 | 0000 | 0000 | 1111 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
この6バイトのデータを4pixel分8バイトに展開します。
0000 1111 1111 = 0x00FF
3 0 1
0001 0000 0000 = 0x0100
4 5 2
0000 1111 1111 = 0x00FF
9 6 7
0000 1111 1110 = 0x00FE
10 11 8
確認のため、実際に非圧縮DNG形式に変換したデータと照合してみます。
一致しています。
なお上記はX-E2のように圧縮していない形式の場合は不要です。
しかしこのままのデータ列はセンサーから取得したデータ以外の余剰データが含まれています。
この余剰データは0x0000 である場合がほとんどなのですが、まれに違う値が含まれている場合があります。
RStackerでは末尾の0x0000の並び量から、この余剰データ量を算出し、実効RAW画像サイズを処理するようにしています。
次ページ:CFAの処理
前のページ
[1]
[2]
[3]
[4]
[5]
[6]
次のページ