Exif ファイルの覗き方 OM SYSTEM OM-1 の Raw および TIFF、OM-D E-M1X も
バイナリーエディターを使って画像ファイルを覗いてみた。
サンプルファイルは、OM SYSTEM OM-1 で記録した Raw データである。
TIFF もだいたい同じだった。
OLYMPUS の OM-D E-M1X の Raw と TIFF も似たようなものだった。
OM-1 には GPS が搭載されていないが、スマートフォンのアプリを使って位置情報を埋め込んだので、GPS の情報が存在する。
ファイル名および撮影情報
20230918_144439_P9183870.ORF, 2023-09-18 14:44:39, OM-1, LEICA DG ELMARIT 200/F2.8+TC2.0, F8.0, 1/400sec, ISO3200
記載したデータについて
文中に画像として貼り付けた罫線のない表がデータの説明である。
左端:アドレス(10進表記)
中央:データ(16進表記)
右端:簡単な説明
表のデータ部のうち、IFD のデータエントリー(12バイト)については、次のように4つに区切って表示した。
1111 2222 33333333 44444444
タグ(2バイト)
タイプ(2バイト)
データの個数(4バイト)
データまたはデータへのオフセット(4バイト)
一塊のIFDの構成はつぎのとおり
先頭の2バイト:エントリーの個数
続くデータ:個数分のデータエントリー(1個あたり12バイト)
最後の4バイト:データの終端または継続データへのオフセット
ヘッダー部
アドレス 0 が 4949 なので、リトルエンディアンで書かれている。
これが Exif データの基準の位置になる。
プライマリーエントリー
アドレス 4 に最初のデータへのオフセットが書かれている。08000000 はリトルエンディアンで書かれているので、ビッグエンディアンに直して 00000008、10進数表記では 8 である。
最初のデータの先頭は、アドレス 0 から 8 バイトオフセットしたところ、つまりアドレス 8 である。
Exif IFD
プライマリーエントリーの 6987(ビッグエンディアンで 8769、アドレス286)が Exif IFD へのポインターである。
最後の4バイト 3a010000 は、データへのオフセットである。ビッグエンディアンに直すと 13a であり、10進での表記は 314 である。
基準のアドレス 0 から 314 オフセットしたところ、つまりアドレス 314 がデータの先頭である。
GPS IFD
プライマリーエントリーの 2588(ビッグエンディアンでは 8825、アドレス298)が GPS IFD へのポインターである。
最後の4バイト 26020000 は、データへのオフセットである。ビッグエンディアンに直すと 0326、10進表記は 806 である。アドレス 0 から 806 オフセット、つまりアドレス 806 が GPS IFD の先頭である。
MakerNote IFD
Exif IFD の 7c92(アドレス 532)が メーカーノートへのポインターである。オフセットは 88150000。これは、ビッグエンディアンで 1588、10進表記は 5512 である。
アドレス 0 から 5512 オフセット、つまりアドレス 5512 がメーカーノートの先頭である。
Equipment IFD in MakerNote
MakerNote IFD 内、1020(ビッグエンディアンでは 2010、アドレス 5566)は Equipment IFD へのポインターである。オフセットは、76000000 とある。ビッグエンディアンに直すと 76、10進表記は 118 である。
このメーカーの場合、メーカーノート内のオフセット値の基準位置は、MakerNote IFD の先頭である。このサンプルの場合は、5512 である。
5512 から 118 オフセットしたところ、つまり 5630 が Equipment IFD の先頭となる。
CamSettings IFD in MakerNote
メーカーノート内のタグ 2020(ビッグエンディアン 2020、アドレス 5578)は、CamSettings IFD へのポインターである。b4010000 はビッグエンディアンで1b4、10進表記は 436。
よって、5512 + 436 = 5948 が CamSettings IFD の先頭となる。
FocusInfo IFD in MakerNote
メーカーノート内のタグ 5020(ビッグエンディアン 2050、アドレス 5614)は、FocusInfo IFD へのポインターである。4e100000 はビッグエンディアンで 104e、10進表記は 4174。
よって、5512 + 4174 = 9686 が FocusInfo IFD の先頭となる。
データまたはデータへのオフセットということ
1個の IFD エントリーのサイズは 12バイト。その最後の 4バイトには、データかデータへのオフセットのどちらかが書かれている。データが 4バイトに収まらない場合には、オフセットが書かれているのである。
データのタイプ別に、データ1個あたりのサイズ(バイト)が決まっている。遠tリーには、データの個数が描かれているので、サイズ×個数で、トータルのデータサイズがわかる。それが4バイトを超える場合、データは別な場所に書かれ、4バイトには、オフセットが書かれるわけである。
オフセットが書かれている場合には、基準の位置からオフセットした場所にデータを読みにいく必要がある。
参考
デジタルスチルカメラ用画像ファイルフォーマット規格 Exif 2.3
https://www.cipa.jp/std/documents/j/DC-008-2012_J.pdf
Exif について大部理解が進んだと思うので、記事にまとめた。
まだまだ間違って解釈しているところがあるかもしれない。
t.koba
この記事が気に入ったらサポートをしてみませんか?