2013 年 7 月の履歴(もしくは日誌)


2013 年 7 月

7 月 14 日

フリーウェアで古いレンズの歪曲収差を補正する

レンズの歪曲収差や倍率色収差などを画像処理で補正するのは今や当たり前になりました.でもレンズのデータが画像処理ソフトに登録されていければ歪曲収差補正はできません.古いレンズは今後も対応してもらえないだろうし,最新のレンズも画像処理ソフトが対応するまで待たなければならなかったり.
でも自分でレンズの歪曲収差を計測してデータを作れば大丈夫.
ここではいくつかのツールと方法を紹介します.

まず歪曲収差 (distorsion) のデータを作成する方法です.

フリーウェアなら,まずは Hugin に付属の「calibrate_lens_gui」を試してみるのが良いでしょう.Hugin は複数の画像をつなぎ合わせてパノラマ写真を合成するためのソフトウェアです.そういった合成では歪曲収差の補正が必要なので,レンズの歪曲収差を補正するためのツールが付属しているのです.歪曲収差を測定したいレンズで複数の画像を撮影します.画像は縦横に直線がくっきり写ったコントラストの高い画像が良いみたいです.calibrate_lens_gui で複数の画像を開きます.EXIF に焦点距離が入っていれば自動的に読み込まれますが,そうでなければ手で入力.焦点距離換算係数はフルサイズ FX フォーマットなら 1 ですが,APS-C とか DX フォーマットなら 1.5 とかの数値を入れます.読み込んだ画像の種類によってエッジ検出スケールとか閾値とかその他の値を調整する必要があります.とりあえず「線を探す」というボタンをクリックして画像の中の線が認識されるか試します.認識されると画面右側の画像に緑の線が引かれて,画面左上の画像ファイル名一覧のファイル名に何本線が見つかったか表示されます.0 本ではだめなので,オプションの欄のパラメータを調整してみます.どうしても駄目ならもっと違った画像を撮影して画像を差し替えましょう.線が見つかったら次にレンズの数値の部分の (a), (b), (c) のチェックを入れて,「以下を最適化」ボタンをクリックします.これで歪曲収差のデータが得られました.「レンズを保存」をクリックしてデータを保存しますが,ここでは lensfun 形式で保存しましょう.すると拡張子 xml のファイルができます.保存先は自分で分かるところに保存しておきましょう.この xml ファイルはテキストエディタで開く事ができます.テキストエディタで内容を確認して,必要があればテキストエディタで直接編集しても良いでしょう.

この (a), (b), (c) の値が重要です.これがわかればレンズの歪曲収差が決定でき歪曲収差を補正できます.

この Hugin の calibrate_lens_gui は読み込む画像や線を探す時のパラメータなどで精度がばらつきます.もしうまくできないときは (a) と (c) のチェックを外し (a) と (c) の値を 0 にして (b) だけにチェックをして最適化をやり直してみましょう.歪曲収差がわりと素直な場合は (b) の値だけでも悪く無いと思います.

有料のソフトウェアですがパノラマ写真合成ソフトの PTGui Pro でもこの (a), (b), (c) の値がわかります.パノラマ写真を合成してから「Lens Setting」のタブを開くと Lens correction parameters として a, b, c の値が表示されます.PTGui Pro ではパノラマ合成する時にこの値を自動的に算出します.パノラマ合成がうまく行ったときにはこの値も精度よく算出できているものと思います.

歪曲収差が計測できたら,このデータを使って画像を補正します.

フリーウェアでは darktable が良いでしょう.

Mac 版の darktable で保存した XML ファイルを利用するには,ちょっと手間がかかります.Finder で darktable のアプリケーションアイコンをキーボードの control キーを押しながらマウスボタンでプレスするとメニューがホップアップします.そのメニューの「パッケージの内容を表示」を選ぶと darktable の中身が表示されます.Contents/Resources/shere/lensfun にさっき保存した lensfun 形式で保存した拡張子 xml のファイルをコピーします.

その後で darktable で画像処理するときに「レンズ補正」でレンズを手動で選ぶときに,自分でデータを作ったレンズが選択できるようになります.

バッチ処理をしたい時は ImageMagick が利用できます.これもフリーウェアです.ImageMagick のサイトには英語ですがレンズの収差補正についてとても詳細に解説されたページがあるので,これを見ると良いでしょう.

こういうレンズの収差補正のツールとしては PTLens が有名ですが,PTLens に自分で作ったデータを加える方法がぼくには良くわかりません.誰か教えてください.

PTLens みたいなソフトで Mac 用には LensFix CI があります.これは a, b, c の値を手入力して自分のカスタムデータベースを作る機能があります.残念ながら LensFix CI は現在開発者の都合で販売停止中かな.

英語では歪曲収差補正の情報がいくつか見つかります.

Hugin の calibrate_lens_gui と Darktable の二つのフリーウェアを使って歪曲収差補正をする手順の詳細
Darktable, Lensfun, Hugin and a Pentax 25mm f1.4 CCTV Lens | Victor Dima
http://victordima.ca/darktable-lensfun-hugin-and-a-pentax-25mm-f1-4-cctv-lens/
Hugin の calibrate_lens_gui の使い方詳細
Creating lens distorsion models with Hugin's lens calibrator | Libre Graphics World
http://libregraphicsworld.org/blog/entry/creating-lens-distorsion-models-with-hugin-lens-calibrator
PTGui
有料.PTGui 単体でも一枚の画像の歪曲収差補正ができる.ぼくは試した事がないけど.
Photo stitching software 360 degree Panorama image software - PTGui
http://www.ptgui.com/
フリーウェア ImageMagick での歪曲収差補正について詳細
Lens Correction -- IM v6 Examples
http://www.imagemagick.org/Usage/lens/
LensFix CI.これは Mac 版のみ
LensFix | Kekus Digital, LLC | Kekus Digital
http://www.kekus.com/lensfix.html

Mac 前提でしたが,Mac 版のみなのは LensFix だけ.Linux 版が無いのは PTGui のみ.Hugin や Darktable,ImageMagick は Linux や Windows でも使えると思います.

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20130714n1 TrackBack