PotomeX 0.02
PotomeXはデジカメで撮影したJPEG画像から、 対象物の大きさを測定するためのツールです。 測定対象の範囲をマウスで指定するだけで、大きさがわかります。 ただし今のところオリンパスのフォーサーズ機で撮影したJPEG画像でしか使えません。 それから、被写界深度が浅い状況でないと精度が出ないので、 高倍率望遠系のマクロ撮影でないと使えません。 距離が離れると急速に誤差が大きくなります。 具体的には私が使用している35mmマクロ+1.4倍テレコンの場合、 画像の横幅が50mmぐらいまでは5%程度以下の誤差のようです(まだ数を調べてません)。 虫系の人が自然観察で使えるレベルと思いますが、 非常に便利なので なんとかメーカーに撮影倍率に関する情報を 保存するようにしてもらいたいのです。 そのためには多くの人が要望しないとダメで、 まずは人々にこの便利さを認知させることから始める必要がありそうです。 そういった目的でこのソフトを公開しましたので、当然フリーです。 また実験的で使いにくい部分もあると思いますが、 ご協力をお願いします。 GUIツールは独立していてPotome(似てますが)という名前です(下図)。 Potomeは大きさのわかるものを写し込んでおけば、 フォーサーズ機以外でも使えます。 PotomeはJavaScriptで書かれており、ブラウザ上で動作します。 詳細は
こちら
を見てください。
1. 試してみる
1.1 サンプル画像で
GUIツールがどんなものかは、以下のサンプルで動かしてみることができます。 問題が出る場合は、とりあえず
Potome
の 説明を見てください。 マウスで測定対象の始点から終点までドラッグすれば、右側に大きさが出ます。
サンプル1
サンプル3
レンズは35mm+1.4倍テレコンで、単焦点で100mm相当の望遠なんですが、 けっこう歪みが出てますね。
1.2 画像をアップロードして
ここから画像をアップロードして試すことができます。 サーバ側で処理を行いPotomeを起動します。 マウスで測定対象の始点から終点までドラッグしてください。
upload
(
)
以下の点に注意してください。
対応しているのはjpeg画像のみです。
オリンパスのフォーサーズ機で撮影したものに限ります (マイクロフォーサーズはたぶんダメ)。
レンズは35mmマクロ単体か、1.4倍か2倍のテレコンの組み合わせのみです。
画像ファイルの大きさは10MB以下にしてください (縦横のピクセル数はいくらでも良いです)。
縮小しないで、低解像度で撮影した画像を使ってください。
縮小するとレンズの繰り出し量の情報が消えるようです。
ImageMagicは大丈夫でしたが、 Photoshop Elements, OLYMPUS Master 2はダメでした。
ここは共用サーバで、あまり負荷を大きくするとまずそうなので、 良く使う場合はダウンロード(後述)してください。
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が書き出されているか調べました。
○ : 対応済み
× : 情報(FocusStepCount)が出ていないので使えない
無印: 情報(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点(だいたいで良いです)。 写真は
掲示板
の方に貼ってください。
注意点
正確な定規を使ってください。 目盛の線が細かい方が作業しやすいです。
前後に斜めにならないように注意してください。
ピントをある程度正確に合わせてください。
テレコンは独立に処理するので、テレコン無しの状態でお願いします。
画像ファイルの大きさは500KBです。 縮小すると情報が消えるので、 撮影する時点で低解像度(640x480で十分)にしてください。
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. 履歴
2010-5-23: 原理をちょっと書いてみた。ちょっと修正。
2010-5-22: Windows版のインストール方法追加。ちょっと修正。
2010-5-6: ちょっと修正。
2010-5-5: アップ。
8. 連絡先
ドキュメントの内容がわからないという方、使ってみた方、 問題が出て使えなかった方、何か調査された方は、 ぜひこちらの掲示板まで報告願います。
ぽとめ専用掲示板
(C) 2010 Hepota