見出し画像

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
  1. タグ(2バイト)

  2. タイプ(2バイト)

  3. データの個数(4バイト)

  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

この記事が気に入ったらサポートをしてみませんか?