ExifからPixel単位の焦点距離を計算する

3次元復元系の論文を読んでいると、よく「初期値にはExifから取得した焦点距離を使用する」的なことが書いてあります。しかし、カメラ内部パラメータとかの焦点距離はピクセル単位なのに、Exifに記録されてる焦点距離はmm単位です。

このExifの情報を使ってmm単位の焦点距離をピクセル単位に直すことについて言及した日本語ドキュメントってそういえば見たことがないなと思ったので、変換方法を解説しようと思います。

使用する情報

ピクセル単位の焦点距離導出に使用するExifの情報は以下です。

Exifのタグ名説明
focalLengthmm単位の焦点距離
focalPlaneXResolution単位長あたりのピクセル数(X軸方向)
focalPlaneYResolution単位長あたりのピクセル数(Y軸方向)
focalPlaneResolutionUnit単位長の種類を示した番号
2: inch
3: cm
4: mm

なぜ単位長あたりのピクセル数がX軸とY軸で分かれているかというと、フォトダイオードは完全な正方形ではないからです。詳しくはこちらの記事で解説してます。

ピクセル単位の焦点距離の計算方法

focalPlaneResolutionUnit=2、すなわち単位長がインチの場合を考えてみると、X軸方向のピクセル単位の焦点距離は以下のように計算できます。

同様にY軸方向のピクセル単位の焦点距離も計算できます。

なお、focalPlaneXResolutionやfocalPlaneYResolutionがわからない場合でも、Exifに焦点距離(mm単位)と35mmフィルム換算焦点距離(mm単位)の情報があれば、そこからピクセル単位の焦点距離を求めることができます。
(経験則ですが、focalPlaneXResolutionとかがある場合はそっちを使って計算する方が一般的だと思われます。)

参考:

https://www.exiv2.org/tags.html

コメント