パノラマ写真をつくる

〔このチュートリアルは、Rob Park 氏による "Create a Panorama" を日本語に訳出したものです。オープンソースソフトを使い、複数の写真をくっつけ合わせてパノラマ写真をつくる方法を 解説しています。〕

準備

パノラマ写真をつくる第一歩は、その元になる写真を撮ることです。 Manfrotto 社によるガイド "guide to making panoramas" を読むと良いでしょう。Manfrotto 社は、三脚メーカーで、パノラマ撮影を 補助するパノラマ雲台を販売しています。確かに、パノラマ雲台は便利ですが、 絶対に必要と言う訳ではありません。 近いところを撮影しようとするのでなけば、機材は重要ではありません。 明るい日の山頂なんかだと、パノラマ雲台どころか、 三脚も必要ないかもしれません。逆に、物でいっぱいの地下倉庫なんてもののパノラマを 撮ろうとすると、機材無しでは難しいでしょう。私は、パノラマ雲台は持ってませんが、 公開しているパノラマギャラリーを見てもらって、必要かどうか決めていただければと思います。

良いパノラマ写真を作るには、30から50パーセントほどオーバーラップさせて 個々の写真をとる必要があります。また、カメラをマニュアル露出モードにして、 パノラマ全体の平均の光の明るさを露出計で測ります。 こうすれば、すべての写真で同じ露出にできます。 マニュアル露出にせずに、たとえば、屋外の写真でのパノラマを作ろうとするとします。 そうすると、日差しが多くあたっているところが暗くなってしまいます。 というのも、太陽からの光が強いと、カメラが自動的にシャッタースピードを速め、 光量を落とすようにするからです。結果として、真ん中の部分が暗い、変なパノラマ写真が出来上がります。

写真をくっつけるのにはソフトを使いますが、ここでは、 autopano-sift, hugin それから enblend を取り上げます。 〔GNU/Linux への〕インストールについては、私の解説 をお読みください。

Autopano-SIFT

autopano-sift のユーザインターフェースは、下の画像のような感じで、 “Basic options” タブと “Advanced options” タブの 2つのパートに分かれています〔訳注:バージョン 2.3 の Windows 版では特にタブに分かれていないようです〕。 私が使って見た限りでは、たいていの場合、 デフォルトの設定でうまくいくと思います。 使い方は単純で、まず“Add Images”をクリックして、くっつけ合わせたい写真を選択します。

Autopano-SIFT basic options tab

くっつける前に、写真の回転が必要ならば、 “Advanced options” タブにある “Automatic pre-aligning of images” をオンにし、写真の向きを選択して、 “generate horizon lines” をオンします。 個人的には、autopano-sift に水平線を作成させたことはあまり無いのですが、 気に入らないときは後から削除することもできます。 水平線が無くて困ってしまうことが無いよう、作成して後から削除するように するのも良いでしょう。準備が整ったら、 “Compute” を押して、autopano-sift にパノラマ写真合成用のコントロールポイントを生成させます。

Autopano-SIFT advanced options tab

Autopano-sift は3段階で処理を行います。まず、各写真のキーポイントを探します。 次に、写真どうしで互いに重なり合うキーポイントをチェックし、その結果に基づいて コントロールポイントを生成します。最後に、オプションで、キーポイントの微調整を 行います。ただし、デフォルトでは微調整は行われません。個人的には、微調整を行うと 処理時間が掛かりますし、無しでも十分良い結果が得られるので、特に必要だとは 感じません。

Autopano-SIFT progress meter

autopano-sift の GUI について、機能をさらに詳しく見てみたいときには、 Sebastian Nowozin 氏(プログラムの作者)が各ボタンについてのデモンストレーションを公開しているので、見てみると良いでしょう。 flash 版html 版 があります。

Hugin

はじめに

autopano-sift が終了したら、作成された .pto ファイルを hugin に読み込みます。 下の画像のようになります。autopano-sift を起動させるボタンが hugin にあったりしますが、 実際は動作しないと思います。読者の手元で動作するとしたら素晴らしいですが、 このチュートリアルでは動作しないのを前提にしています。

Hugin images tab

レンズ

写真を撮ったカメラのレンズに関する設定を、正しいものにする必要があります。 デジタルカメラを使っているなら、EXIF のデータに正確なレンズ情報が保持されています。 写真のどれかを選択し、 “Load EXIF” ボタンを押します。 フィルムカメラを使っているなら、EXIF の情報が無いですので、 マニュアルで設定を入力する必要があります。

Hugin lens tab

コントロールポイント

次に、autopano-sift により、適切なコントロールポイントが作成されているか、 チェックします。autopano-sift が使っている SIFT アルゴリズムは正確ですし、 不適切なコントロールポイントが生成されているのを見つけたことがないので、 チェックを省略してもさほど問題ないと思います。

Hugin control points tab

最適化

コントロールポイントが適切でも、写真をくっつける前に最適化を行う必要があります。 最適化とは、hugin が独自の方法で、コントロールポイントを調べ、より適切にオーバーラップするように 写真を変形させる方法について検討を行うものです。まず、“Positions (incremental, starting from anchor)”〔位置(基準から一枚ずつ)〕 最適化を行い、次いで、“Positions (y,p,r)”〔 位置(y,p,r)〕最適化を行います。

Hugin optimizer tab

各最適化には、それぞれの目的があります。hugin を使っていくうちに、どの最適化を 使うべきかは飲み込めてくるでしょう。カメラにたる型ひずみがある場合は、 “Positions and Barrel Distortion (y,p,r,b)”〔位置とたる形歪み (y,p,r,b)〕 が重要でしょう。また、“Positions, View, and Barrel (y,p,r,v,b)”〔位置と視野とたる形歪み (y,p,r,v,b)〕 も有用です。

“Everything”〔全部〕を使いたくなるかも知れませんが、これは、各写真が50%以上オーバーラップしており、 コントロールポイントがオーバーラップ範囲に均等に分布している場合にだけ使っても良いかと思います。 その条件を満たしていない場合、端部に近いところのコントロールポイントの最適化エラーは 減少しますが、中央部分で変なふくらみや歪が起きます。

プレビュー

最適化を行ったら、プレビューウインドウで、各写真がどのように重なるかを 見ることができます。プレビューでは、はっきりとつなぎ目が見えますが、問題ありません。 プレビューは最終結果を示しているものではなく、写真の並びを確認するためだけの ものだからです。下の図を見てもらうと、写真は適切に(写真のはしっこが飛んだりせずに) 並んでいるのがわかります。ただ、ちょっと期待したのと違うところがあります。 すこし歪んでいて、左上の方に曲がってしまっています。

Hugin preview window

では、まっすぐに並ぶようにしてみましょう。 垂直のガイドラインを追加して、写真の左端にある建物がまっすぐになる様にします。 ガイドラインを追加するには、control points 〔コントロールポイント〕タブで、左右とも同じ写真を選択します。 そして、左側をクリックし、次いで右側をクリックします。 クリックする点は、作りたいガイドラインの両端です。 ガイドラインを追加したら、最適化をもう一度行い、プレビューウインドウで結果を 見てみましょう。

Hugin control points tab

これだけではまだ十分じゃないようで、今度は左ではなく、右上へ曲がっています。 右端の写真に、歩道に沿うように、水平のガイドラインを追加してやります。

Hugin control points tab

どこにガイドラインを追加して、垂直・水平のどちらのガイドラインを使えば良いかを わかるようになるには、すこし経験が必要です。明確なルールがあるわけでもなく、 うまく行くならばそれで良いのです。一般的には、垂直ガイドラインは建物の端部に 沿うように、水平ガイドラインは地平線にあるようにします(ちなみに、hugin は、 水平ガイドラインを合成する写真の中央部分に持ってきます)。

この右端の写真では、残念なことに、垂直ガイドラインを設定できるような建物は 写っていませんし、水平も木々によって良くわかりません。下のほうに写っている 歩道がまっすぐなので、水平ガイドラインを設定してみました。 そのように設定したら、パノラマの下の方の黒いエリアが広がってしまいました (写真下部の歩道を水平と設定したので、そこがパノラマの上下の中央と扱われるので)。

最適化をまた行います(コントロールポイントに変更を加えたら、解析済みの パノラマの更新を行うために、最適化が必要となります)。 そして、プレビューウインドウを見てみます。うまくできてるみたいですね! まずまずのパノラマが作れそうです。

Hugin preview window

私的には、ブレンドモードを“difference”にして、2つの写真の差を見るようにするのが 好みです。このモードは、2つの写真のオーバーラップしている部分の差を 計算し、写真の違いを表示します。オーバーラップ部分が真っ黒に 表示される(つまり差が無い)のが理想的です。しかし、実際には、差が完全になくなることは ありません。もし、差の表示のところに、白い斑点が現れて、写真の被写体の形がはっきり見えてしまう場合は、 コントロールポイントが不適切であるか、間違った最適化を行っているかでしょう。 元の写真の視差が少なければ少ないほど、うまく行きます。

Hugin preview window

はじめのうちは、写真が変形されてパノラマが作られるのに違和感があるかもしれません。 しかし、これはバグではなく、hugin の機能なのです。つまり、 写真を何列にも並べたパノラマ写真が作れるということです。 アングルが異なる写真を撮影したら、撮影した地点や向きにかかわらず、それらを並べることができます。 写真を一列にしか並べられないような、機能の貧弱なプログラムもありますね。 一列にまっすぐ並べるだけなら、それらでもうまく行くとは思います。

写真をくっつける

プレビューウインドウでの結果に満足したら、写真を互いにくっつけて合成します。 “Calculate Field of View”〔最適な視野を計算〕 ボタンを押すと、パノラマ周囲の余白部分が 大きくなりすぎないようになります。私の経験では、小さなパノラマに対しては、 これでうまく行きます。ただし、180度を越えるような大きなパノラマに対しては、 実際の上下方向の視野によらず、“vertical”〔上下方向〕値を180にしておくと 良いでしょう。手動で入力した場合は、プレビューウインドウで確認します。 大きすぎると余白が大きくなりますし、小さすぎると写真がカットされてしまいます。

次に、“Calculate Optimal Size”〔最適なサイズを計算〕ボタンを押します。 元の写真を拡大せずにすむ範囲で、最大のパノラマサイズが設定されます。 普通は、設定された値をそのまま使います。ただし、 20,000 を超えると大きすぎて、写真をくっつけるのにも時間がやたらとかかりますし、 できたパノラマもでか過ぎます。ですので、20,000 以上になったら、20,000 に設定しなおすと、 よい感じになるでしょう。

スチッチングプログラム (stitching engine) が“nona”に、 画像フォーマット (image format) が“Multiple TIFF”〔TIFF 複数ファイル〕に 設定されているのを確認してください。TIFF 複数ファイルを使うのは、nona に写真を並べるところまでの 処理を行わせ、enblend にそのTIFFを使って後処理を行うようにするためです。 “TIFF”フォーマットを選択し、“Soft Blending” チェックボックスをオンにすると、 hugin から enblend を実行することもできますが、好みではありません。 enblend は実行速度が遅いですし、プログレスバーも出ず、クラッシュしても良くわからないからです。

設定が完了したら、“Stitch now!”〔スティッチングの実行〕をクリックします。 〔ファイル保存のダイアログが出たら、出力ファイルに付けるプレフィックスを入力します。 ここではnonaとします。〕 nona が複数のサイズの大きい TIFF ファイルを出力します。

Hugin stitcher tab

Enblend

次のステップでは、hugin が生成した TIFF ファイルに対して enblend で処理を行います。enblend はコマンドラインアプリなので、 ターミナル〔やコマンドプロンプト〕を開き、以下のようにして実行します。

$ enblend -m 256 -v -o enblend.tif nona*.tif

コマンドの各部分について説明します。 -m オプションを使って、最大 256 MB のメモリを使うように指定しています。 この指定は重要で、enblend はメモリを使えるだけ使おうとするのですが、 システムのメモリが不足すると、まずいことになります。 実メモリの半分の指定をまず行うと良いでしょう。 -v オプションで、詳細表示を行うように指定しています。どういう処理が行われているかが わかります。これを指定しなければ、何も表示されず、どうなっているかわかりません。 ’-o enblend.tif’ で最終結果を enblend.tif という名前のファイルに保存するように指定しています。 最後の‘nona*.tif’で、“nona” で始まり ”.tif” で終わる名前のファイル (nona0000.tif, nona0001.tif, など) を入力ファイルとして使うように指定しています。

Enblend の実行には、時間がかかります。入力ファイルのサイズが大きい場合は特にです。 一時ディスク容量もかなり必要となります。しかし、それだけのことをするのに見合った結果が 得られます。

結果

以下が、enblend を行った結果です。大きな単一の TIFF ファイルです。ステータスバーの表示を見てわかるように、ファイルは 104.2 MB あり、 10%に縮小されて表示されています。写真周囲のグレイの市松模様のところは、写真データの無いところで、 透明となっています。

Eye of Gnome

画像処理を行うお好みのプログラムを立ち上げて、細かい修正を行います (使って便利なら、どんなプログラムでも構いません)。写真の周囲の透明な部分を削除したり、 ディスク容量の節約のために JPEG などのフォーマットで 保存しなおしたりします。WEB サイトに載せるなら、画像サイズを小さくします。

完成

最終結果はこちらです。

Final Result

このチュートリアルは参考になったでしょうか。より詳しい情報が必要なら、 公式の hugin サイトには、 他のチュートリアル もあるので参考にすると良いでしょう。

Last updated on Monday, April 25, 2005
翻訳更新: 2005/12/19