魚眼レンズで撮った画像の歪みを補正します。
![]() |
![]() |
補正前 | 補正後(オプション -a 120 を指定) |
レンズの画角は 180°決め打ちで、中心から 140°の範囲を切り出して歪みを補正し、元のファイル名の頭に defished- をつけたファイル名で出力します。
hoge.jpg を補正するときは、コマンドプロンプトから
(例) fisheye.exe hoge.jpg
を実行します。df-hoge.jpg というファイルができます。
切り出し範囲の 140°は -a オプションに続けて角度を指定することで変更できます。
(例) 切り出し範囲を 150°まで広げる場合 fisheye.exe -a 150 hoge.jpg
あまり広げすぎると画像周辺が歪んだり画像が小さく見辛くなります。
写野の直径や中心は勝手に求めますが、写真によっては検出に失敗することがあります。そのときはオプション -d に続いて写野の直径を dot 単位もしくは対角線の長さに対する割合で指定できます。
(例) 写野の直径 234dot の場合 fisheye.exe -d 234 hoge.jpg
-d オプションを指定したときは写野の中心の検出は行わないので、写野は画像の真ん中になければなりません。
対角魚眼で撮った写真の場合も写野の直径は検出はできないので、常に -d オプションを指定します。
(例) 対角線が 180°の画像を処理する場合 (対角線長 100% = 180°) fisheye.exe -d 100% hoge.jpg
プリント時のマスクによって画像がトリミングされているときは、120% くらいを指定すれば良いでしょう。
(例) 対角線が 180°の画像を処理する場合 (トリミングあり) fisheye.exe -d 120% hoge.jpg
-s オプションを指定すると、途中経過の表示を抑制します。
(例) fisheye.exe -s hoge.jpg
-f オプションを指定すると、画質を落とす代わりに処理が2倍速くなります。ファイルサイズも小さくなります。
(例) fisheye.exe -f hoge.jpg
fisheye.pl は perl スクリプトです。ActivePerl v5.8.3 で動作確認しています。画像処理には GD v2.11 を使いました。fisheye.exe は fisheye.pl を PerlApp で実行形式に変換したものです。
補正の際、近似は一切使ってないつもりですが、計算が間違ってるのか歪みを完全には修正できません。補正の計算式(等距離射影)は次のとおりです:
r' = [ atan{ ( r / R ) * tan (t0) } / ( pi / 2 ) ] * R r' : 補正前の写野中心からの距離 r : 補正後の画像中心からの距離 R : 写野の直径(画角は 180°とする) t0 : 切り出す範囲(半画角。デフォルトは 140/2 = 70°)