PotomeX 0.02

PotomeXはデジカメで撮影したJPEG画像から、 対象物の大きさを測定するためのツールです。 測定対象の範囲をマウスで指定するだけで、大きさがわかります。 ただし今のところオリンパスのフォーサーズ機で撮影したJPEG画像でしか使えません。 それから、被写界深度が浅い状況でないと精度が出ないので、 高倍率望遠系のマクロ撮影でないと使えません。 距離が離れると急速に誤差が大きくなります。 具体的には私が使用している35mmマクロ+1.4倍テレコンの場合、 画像の横幅が50mmぐらいまでは5%程度以下の誤差のようです(まだ数を調べてません)。 虫系の人が自然観察で使えるレベルと思いますが、 非常に便利なので なんとかメーカーに撮影倍率に関する情報を 保存するようにしてもらいたいのです。 そのためには多くの人が要望しないとダメで、 まずは人々にこの便利さを認知させることから始める必要がありそうです。 そういった目的でこのソフトを公開しましたので、当然フリーです。 また実験的で使いにくい部分もあると思いますが、 ご協力をお願いします。 GUIツールは独立していてPotome(似てますが)という名前です(下図)。 Potomeは大きさのわかるものを写し込んでおけば、 フォーサーズ機以外でも使えます。 PotomeはJavaScriptで書かれており、ブラウザ上で動作します。 詳細はこちらを見てください。

1. 試してみる

1.1 サンプル画像で

GUIツールがどんなものかは、以下のサンプルで動かしてみることができます。 問題が出る場合は、とりあえずPotomeの 説明を見てください。 マウスで測定対象の始点から終点までドラッグすれば、右側に大きさが出ます。 レンズは35mm+1.4倍テレコンで、単焦点で100mm相当の望遠なんですが、 けっこう歪みが出てますね。

1.2 画像をアップロードして

ここから画像をアップロードして試すことができます。 サーバ側で処理を行いPotomeを起動します。 マウスで測定対象の始点から終点までドラッグしてください。
()
以下の点に注意してください。

2. インストール

2.1 Mac編

Mac OS Xでのみ動作します。 確認したのは、10.5.6のみです。 プログラムは、AppleScriptとperlで書かれています。 (1) 下のファイルをダウンロードしてください。 potomex-0.02-mac.zip potome(0.42)と、ExifTool(8.18)の一部が含まれています。 (2) 解凍してください。 (3) potomex.appができるので、これををDockにしまってください。 使い方は、 Dockのアイコンに、ファイルをドロップしてください。 標準のブラウザが起動されPotomeの画面をきます。 大きさがわかった場合は、黄色いツールが選択された状態になるので、 測定対象の範囲をドラッグしてください。 Potomeの使い方は、こちらをごらんください。

2.2 Windows編

とりあえずWindowsXPで試しました。 メインはperlで書いてますが、Perl Packagerというツールでexeにしてます。 perlの実行環境はすべて含まれているのでインストールは不要です。 (1) 下のファイルをダウンロードしてください。 potomex-0.02-win.zip (2) 解凍してください。 (3) potomex.exeができるので、これをデスクトップにでもコピーするなり、 ショートカットにするなりしてください。 (4) ユーザ名に日本語が含まれている場合、 環境変数 PAR_GLOBAL_TEMP に、適当なディレクトリ 'C:\potomex' 等を指定してください。 使い方は、 デスクトップのアイコン上に画像ファイルをドロップしてください。 標準のブラウザが起動されPotomeの画面を開きます。 黄色いツールが選択された状態になるので、 測定対象の範囲をドラッグしてください。 対応していない画像ファイル(フォーサーズ以外)の場合でも開きます。 最初に起動されたときに展開するのでかなり時間がかかります(10-20秒)。 この間なにも表示されませんからしばらくお待ちください。 2回目以降は早くなります(といっても2-3秒かかる)。 複数の画像を同時に処理することはできません。

3. 原理

3.1 撮影倍率

ピントの合う面に置かれた被写体の大きさXと、 カメラの中で結像したときの大きさYの比を 撮影倍率mと言います(m = Y/X)。 撮影倍率がわかれば、撮像素子の大きさから、 画像の幅の実サイズが計算できます。 例えば、オリンパスのフォーサーズ機はCCDの幅(Y)が17.3mmなので、 撮影倍率(m)が1/2倍のときは実際の幅(X)は34.6mmということがわかります (17.3/(1/2) = 34.6mm)。

3.2 誤差

(1) 被写界深度が深いと精度が悪くなる。 被写体を正確にピントが合っている面に置かないと精度が出ませんが、 ピントがあっている範囲が広い(被写界深度が深い)と誤差が大きくなります。 被写界深度が浅いための条件は(私も良く理解してませんが)、 CCDが大きい、 レンズの口径が大きい、 焦点距離が長い、 撮影距離が短い 等です。
(2) 被写体が物体面に対して斜めになっていると当然誤差がでます。 (3) ピントがあっていないと誤差が出ます。 (4) レンズの歪み。 正方形を撮影しても少したわんで写りますが、これはレンズの歪みといいます。 当然誤差になります。 単焦点レンズよりズームレンズの方が歪みが大きくなります。 また長焦点レンズより広角レンズの方が歪みが大きくなります。 下は単焦点レンズ100mm相当なので比較的有利な方ですが、少し歪んでいるのがわかります。
(5) レンズごとのばらつきを校正していませんが、 校正しないでどこまで精度が出るのかは、まだ調べてません。 (6) レンズの物理的な変形。 全群繰り出し型のレンズでは、 機械的な可動部分があって、 ここにガタがあるため、 その位置によって変わる可能性があります。

3.3 撮影倍率の計算

3.3.1 レンズの繰り出し量と撮影倍率

オリンパスのフォーサーズ機で実際にしまわれているのは、 レンズの繰り出し量に関する情報です。 全群繰り出し型のレンズの場合、繰り出し量と撮影倍率は比例します。 またインナーフォーカスの場合も焦点移動するための量と撮影倍率は、 比較的単純な関係にあると思いますので、 何点か測定して、線形補間によって繰り出し量から撮影倍率を求めることにします。 Phil Harveyさんのツール(後記)では、 exif情報にFocusStepCountという名前になってます。 35mm F3.5 マクロレンズの場合、 値の範囲は0から4000付近の整数で、十分な精度があります。 別に、FocusDistanceという情報(たぶん像面から物体面までの距離)も 保存されていますが精度が低くて使えない感じでした。 仮に高精度で保存されていたとして、 1/2倍と2倍とは撮影距離は同じになるので原理的には使えないと思います。 等倍をまたぐレンズはほとんどないようですが、 等倍付近で精度が悪くなる気がします。

3.3.2 ズームレンズ

ZoomStepCountという情報が出てます。 2次元の補間処理をすれば対応できると思いますが、 私は必要でないため、対応してません。

3.3.3 テレコン

プログラムでは、単純に倍率を1.414倍にしてますが、 問題ないのかどうか、良くわかってません。

3.4 規格化

もし、規格化してメーカーに対応してもらえるようならば、 「画像の縦、横の物体面での大きさ(mm)+何%-何%」 とかいう情報だと扱いやすいと思います。

4. 対応状況

4.1 本体

ネット上に転がっている画像の情報から、FocusStepCountが書き出されているか調べました。
E-30
E-410
E-420
E-510
E-520
E-620情報が出ている場合と出ていない場合がある
E-PL1×
E-P2×

4.2 レンズ

Olympus Zuiko Digital 35mm F3.5 Macro

4.3 エクステンダー

Olympus Zuiko Digital EC-14 1.4x Teleconverter
Olympus Zuiko Digital EC-20 2.0x Teleconverter

4.4 コンデジ

情報(FocusStepCount)が出ているようだが、 ズームレンズなのでプログラムが対応してない。
uT6000
uT8000
u1030SW
u1050SW

5. 協力お願いします

35mmマクロも、ばらつきがどれぐらいあるのかを調べるため、 情報ください。

5.1 他のレンズ

オリンパスの50mmマクロあたりは対応してみようかと思うので、協力お願いします。 以下の4点ほどの倍率で、定規の写真を撮ってください。 最大倍率を1とすると、1, 0.5, 0.25, 0.125の4点(だいたいで良いです)。 写真は 掲示板の方に貼ってください。
注意点

5.2 ズームレンズ対応

だれかプログラムを書いてください。

5.3 他のメーカー

Phil Harveyさんのサイトを見る限り、現状ではそれらしい情報はしまわれてません。

6. ライセンス

ExifTool

Phil Harveyさんが作成されたperlでExif情報を読むためのモジュールです。 ここ に詳しい情報があります。

Potome&PotomeX

私が書きました。良くわかりませんが、一応GPL2としておきます。

perl関係

perlのラインセンスを見てください。

ActivePerl

ActiveStateという会社が配布している、Windows版のPerlパッケージです。 詳細はこちらをご覧ください。

excanvas.js

IEが対応していないcanvas機能のエミュレータです。 Google社が著作権を有しており、 Apache Licence Version 2.0 で配布されています。 詳細は、 googleのサイトを 見てください。

7. 履歴

8. 連絡先

ドキュメントの内容がわからないという方、使ってみた方、 問題が出て使えなかった方、何か調査された方は、 ぜひこちらの掲示板まで報告願います。 ぽとめ専用掲示板
(C) 2010 Hepota