Hugin (Panorama Tools)によりパノラマ写真を作る

 

フリーで使えるパノラマ合成ツールは無いものか、とネットを探したところ「hugin」が見つかりました。さっそく試してみたところ、なかなか一筋縄ではないことがわかったのでメモを残すことにしました。特に360°パノラマを作ろうとするとコツが必要です。

尚、ここで説明しているのはWindows版のhuginです。Windowsの他にMAC版、Linux版があるようです。

 

1 ソフトウェアの入手... 15

2 インストール... 24

2-1 huginのインストール... 25

2-2 PTStither.exeのコピー... 27

2-3 Autopano-siftのインストール... 29

2-4 Pano12.dllのリネーム... 31

3 設定... 34

3-1 PTSticherとPTOptimizerのファイル位置の指定... 35

4 パノラマの作成... 38

4-1 写真の読み込み... 39

4-2 基準となる写真を選択して[基準にする点を編集...]ボタンをクリック.. 41

4-3 コントロールポイントの自動検出... 43

4-4 レンズの指定... 45

4-5 コントロールポイントの調整... 47

4-6 最適化... 53

4-7 スティッチング... 61

4-8 出来上がり.. 70

 

 

ソフトウェアの入手

hugin」はパノラマ作成ソフトスイート「Panorama tools」を利用するためのGUIで、Panorama toolsにもjavaによるアシスト用アプレットが付属してますがさっぱり使い方がわかりませんでした。huginがないと私にはpanorama toolsははっきり言って扱えません。Huginの入手はこちらhttp://hugin.sourceforge.net/からできます。

 

Huginのパッケージには最低限必要なファイルがそろっているのですが、別途入手しておきたいプログラムがあります。

 

ひとつめはPTSticher.exeというプログラムでこれはPanorama Toolsのひとつなのですが、ライセンスの関係か何かの理由でhuginにはパッケージされていないため別途ここからhttp://www.path.unimelb.edu.au/~dersch/PanoTools.zipダウンロードしてください。PTSticher.exeが無くてもパノラマ写真を作成できるのですが、PTSticher.exeのほうが良い結果を得られるようです(その代わり処理が遅い)

 

もうひとつ入手しておくべきプログラムとして、写真をつなぎ合わせる位置の目印となるコントロールポイントを自動的に抽出してくれるプログラム「autopano-sift」もここからhttp://user.cs.tu-berlin.de/~nowozin/autopano-sift/ダウンロードしてください。

 

インストール

2-1 huginのインストール

huginのダウンロードしたファイル自体がインストーラになっているので素直にインストールしてください。

2-2 PTStither.exeのコピー

PanoTools.zipを解凍するといくつかファイルが出てきますが、必要なのはPTStitcher.exeだけです。このファイルをhuginをインストールしたディレクトリにコピー(or移動)してください。

2-3 Autopano-siftのインストール

Autopano-siftもインストーラになっているので素直にインストールしてください。

2-4 Pano12.dllのリネーム

Pano12.dllというのはhuginにパッケージされているPanoramaToolsを構成するファイルなのですが、huginからPTSticher.exeを使うときは標準のpano12.dllだとうまく動きません(エラーが発生してパノラマを作成できない)。Huginをインストールしたディレクトリにpano12_for_usage_with_ptstitcher.dllというファイルがあるので、pano12.dllを削除(orリネーム)してpano12_for_usage_with_ptstitcher.dllをpano12.dllにリネームしてください

 

設定

3-1 PTSticherPTOptimizerのファイル位置の指定

1-1Huginを起動して「ファイル」「環境設定」[Panotools]タブでPTSticherとPTOptimizerのファイル位置を指定します。


1-2[Autopano]タブでAutopano-SIFTのファイル位置を指定します。


パノラマの作成

4-1 写真の読み込み

パノラマの元になる写真を順に読み込みます。読み込み順は右回り・左回りどちらでも問題ありません。例では360°パノラマを作るのに12枚の写真を使っています。

4-2 基準となる写真を選択して[基準にする点を編集...]ボタンをクリック

下の画面になるのでクロスカーソルをドラッグして基準点を指定する。360°パノラマを作る時は、横線を水平線(空と地上/海上の境目)に合わせるのがコツ。もし写真が傾いているときはマウスの右ボタンを押してドラッグすることでクロスカーソルが回転するのできっちりと水平を合わせましょう。後で自動補正するので、ここはアバウトで良いことがわかりました。

4-3 コントロールポイントの自動検出

写真を重ね合わせる位置の目印=コントロールポイントをautopano-SIFTにより自動的に検出します。手作業で指定することもできますが、autopan-SIFTはかなり優秀なので自動検出のほうが楽で確実です。[検出]ボタンを押すと下の画面になります。パラメータはデフォルトのまま画面下の[Compute]ボタンを押せば良いでしょう。Warningが表示されますが、気にせず[YES]を押してください。

下のように[Keypoint Matching]まで終われば終了です。デフォルトではRefiningは実行されません。おそらく、RefiningするとKeypointが間引かれるのだと思いますが今のところ特に必要性を感じないためRefiningは使用していません。[OK]ボタンを押した後、autopano-SIFTには終了コマンドが無いのでウィンドウ枠の[X]で閉じます。

autopano-SIFTを終了すると自動検出されたコントロールポイントの数が表示されます。

4-4 レンズの指定

写真の変形量を計算する時のパラメータとなるレンズ情報を指定します。右下にある[EXIFを使用]ボタンを押すとデジカメの情報が反映されます。後でここのパラメータは自動的に補正しますのでここはアバウトな値でもOKです。私の場合、EXIF情報から計算した画角は60.16°となっていますが、自動補正の結果では48.5°と、かなり食い違いが発生しました。EXIF情報が利用できずに手で入力するときの目安としてはCrop Factorは1.0として焦点距離は35mm換算の焦点距離を入力してください。

私の場合、[EXIFを使用]では焦点距離8.7mmとなりましたが、これでは画角が広すぎでした。どうやらCropFactorが正しくないように思われます。

この後の工程である[最適化]を実行するとCropFactor=1で焦点距離が38.42mmに補正されました。

4-5 コントロールポイントの調整

[コントロールポイント]のタブで自動検出したコントロールポイントを確認します。Autopano-SIFTはかなり優秀なので特に変更する必要は無いでしょう。車や人など撮影途中で移動しているものがコントロールポイントになっているときはそのポイントを削除したほうが良いと思います。

[コントロールポイント]タブを開いたときには左右ともに[0]が表示され画面下のコントロールポイントが空になっていますが、左に[0]、右に[1]というように隣り合う画像を表示するとコントロールポイントが写真上にで表示され、画面下に一覧が表示されます。

360°パノラマを作る場合は、「水平な線」、「垂直な線」を追加すると良い結果が得られます。左右に同じ写真を表示して水平な線の位置で左右別な位置を指定します。私はできるだけ左右が離れた位置を指定するようにしています。

水平な線は文字通り水平線/地平線を指定することがコツです。垂直な線は建築物の縁に指定しましょう。

 

2006/04/09追記) ここから―――――――

360°パノラマを作るときのコツとしてもうひとつ有効なコツを見つけました。それは、コントロールポイントは遠景に重点を置くことです。Autopano-SIFTで自動検出したコントロールポイントのうちカメラから近距離にあるものを削除すると水平線(or地平線)が素直に繋がり、360°パノラマとしての出来映えが良くなります。また、遠景のみにコントロールポイントを置くと次の最適化工程でパノラマが大きく波を打つ現象が発生しませんでした。

――――――――――――――――ここまで

4-6 最適化

[最適化]タブで最適化することで各写真の位置調整が計算されます。

デフォルトの「位置(基準から一枚ずつ)」を実行したところ下図のような結果となりました。「コントロールポイントのずれ、平均:124.9」となっていますが、これではずれが大きくて、継ぎ目がきれいに繋がらなかったり、パノラマ画像が大きく波打ってしまいます(プレビュー画面)。しかし、とりあえずここでは[適用]を実行してください。
 

 

次に再度最適化を実行します。今度は[最適化]方法として「全部」を選択します。最適化の結果は平均値3.176となりました。注意する点はいきなり「全部」で最適化を実行しないことです。まず、「位置(基準から一枚ずつ)」であたりをつけた後に「全部」を実行すると非常に良い結果を得られています。最適化の実行結果でコントロールポイントのずれ平均値は5以下に抑えるとまずまずの結果が得られるようです。しかし、必ずしも「全部」でうまくいくわけではないようで「全部」ではとんでもない値になってしまったりします。そんな時は「位置と視野(y,p,r,v)」や「位置と視野とたる型歪み(y,p,r,v,b)」などで様子を見てください。

最初から「全部」を指定した場合、下図のような“WARNINGが表示され、プレビューが表示されなかったり、huginが異常終了したり、という異常な結果となりました。


 

4-7 スティッチング

[スティッチング]タブでパノラマ画像を作成します。

l         視野:[最適な視野を計算]ボタンをクリック

l         スティッチングモード:[カスタマイズ]を選択

l         パノラマのサイズ: [最適なサイズを計算]ボタンをクリック

l         スティッチングプログラム: [PTStitcher]を選択

l         露出の修正:[明るさ]を選択 
(露出を固定して撮影した写真を使う場合は[なし]を選択してください。私のデジカメはオートしか無いので明るさ補正を選びます。[色合い]補正は良い結果を得られませんでした。)

その他のパラメータはいろいろ試してみてください。

[スティッチングの実行]ボタンを押すと出力ファイルを指定するダイアログが表示されるのでファイル名を入力すると処理が始まります。

処理の実行中は下図のように経過状況が表示されます。

データによると思いますが処理には数分を要します。処理が終了すると上のダイアログが消えます(終了メッセージはありません)。

4-8 出来上がり

以上で出来上がりです。スティッチングのパラメータをいろいろ試してみることで仕上がりが変わってくると思います。私のデジカメはオートでしか取れないので各写真の露出がバラバラです。おまけに周辺部の光量がガタ落ちなので、それをそのまま繋げると写真どうしがきれいに繋がってくれません。露出の補正をPTSwitcherで実行しているわけです。三脚を使わずに手持ちで撮影した素材なのでガタガタになっていますがまずまずの結果です。

 

最後に

huginの出力形式の選択リストにはVRML,IVRなどの選択肢が入っているのですが、これらはまだ動かせていません。今回はhuginとPTSticherを使用しましたが、huginではPTSticherの代わりとなるnonaというプログラムがデフォルトのスティッチングソフトです。Nonaは貼り合わせがあまり得意ではないようで、enblenderというプログラムで貼り合わせることが推奨されています。Panorama toolsにはPTSticherの代替プログラムとしてPTBlenderというプログラムが同梱されていますが、huginで使うことはできませんでした。

 

フリーのパノラマ作成ソフトは多数あるのではないかと思っていたのですが、簡単に見つかるのは有償ソフトばかりでフリーで使えるモノはhuginしかみつかりませんでした。需要はあるのでもっと簡単に使えるソフトが出てくることを願います。

 

ともあれ、フリーソフトでパノラマ写真を作成できるようになりました。素材が良ければhuginを使って非常にきれいなパノラマ写真を作ることもできるようです。Huginの作者、huginの日本語化をされた方、panorama toolsの開発チームには感謝です。