球面パノラマの作成方法(by Hugin&Pano2QTVR)・・How to CubicVR
2007/11/23作成
球面パノラマ(CubicVR)とは一周360度だけではなく真上や真下も見ることができるパノラマのことです。(一例として、私が作成した球面パノラマのページです。 )
主にアップルのクイックタイムプレーヤー(QuickTime player)で閲覧できるファイル形式(拡張子.mov)で作られることが多いためQTVRと言われたりもしますが、最近はflashプレーヤーやjavaで閲覧できるタイプもあります。
ここでは、Windows上での、なるべく金をかけずにフリーソフトメインで、全く経験のない超初心者でもわかりやすいように、球面パノラマの作り方を解説していきます。
めにゅ
簡単な作成の流れ
素材として一周をカバーする写真を撮る → 素材をステッチソフトでステッチ(繋ぎ合わせ)する → 真下部分を嵌め込み合成する → パノラマ作成ソフトでパノラマファイルを作る。
機材・ソフトウェア
- デジタル一眼レフカメラ
撮影機材としてNikon D40を使っています。最初に下のニコンFマウント用sigma8mmレンズを手に入れたので、それが使える一番安いボディを選んだだけです。(結果としてラチチュードの広さと高感度の強さから正解だったと思う。理由は後述。)
デジ一をもってなければ、マニュアル撮影ができてワイコンを付けられるカメラならコンパクトタイプでも代用できます。
- なるべく広角のレンズ
完成後の解像度と撮影の手間のバランスからシグマの8mm魚眼レンズがお勧めです。これより焦点距離の長いレンズを使えば解像度は上がりますが撮影とステッチの手間が増えます。逆に焦点距離の短いレンズ(APS-C用では存在しませんが)を使えば撮影とステッチの手間が減りますが解像度が落ちます。
- 回転雲台
パノラマヘッドやパンヘッドなどとも呼ばれます。ようするに三脚の上につけてカメラをぐるっと一周まわすための雲台です。既製品としてNodalNinjaや303SPHなどがありますが、値段が高いため私は自作しました。山頂からの風景など遠距離のパノラマ撮影なら手持ちでもいけますが、ある程度の近距離撮影なら必須です。
- 三脚
雲台が交換できる事が必須です。がっしりとした頑丈な三脚を使えば素材ごとのズレが減ります。私は手軽さと軽さを優先してベルボンのULTRA LUX i Fを使っています。近景を撮らないのなら一脚や手持ちでもいけます。
- ステッチソフト
複数枚の写真をつなぎあわせるためのソフト。フリーソフトであるhuginを使っています。実は高価な有料のソフトとステッチエンジンは同じで機能的には十分です。
- パノラマ作成ソフト
ステッチした写真からパノラマファイルを作るソフト。フリーソフトであるPano2QTVRを使っています。
- 魚眼→広角変換ソフト
真下が三脚や雲台で隠れるため、別に撮影した魚眼写真を後から合成するために必要です。魚眼レンズでなく広角レンズで素材写真を撮影する人は必要ありません。私はフリーのPanorama ToolsというPhoto shopやPaint Shop Proのプラグインソフトを使っています。フォトショやペインショを持ってない人は、別の広角レンズや広角デジカメで真下を撮影するという手もあります。真下をあきらめて三脚の影になる部分にオリジナルのロゴやマークをかぶせて合成するという手もあります。
- パソコン
パノラマを作成したり、完成したパノラマを閲覧するために必要です・・当たり前ですね。性能が低くてもステッチに時間がかかるだけなので支障はありません。快適に作成・閲覧しようと思ったらメモリ容量とCPU処理速度が必要です。グラフィックボードは低性能のものでかまいません。写真をステッチするときにはHDDの空きが作業スペースとして1GBくらいは必要です。以前はMacの独断場でしたが現在ではWindowsでもソフトが充実しています。
詳しい説明
- カメラについて
素材となる写真を撮影するときにはフォーカスと露出(SSシャッタースピード、絞り、感度)を固定しなければなりません。露出オートで撮ると角度によって明るさの異なるチグハグなパノラマになってしまいます。後からパソコンで補正しても白飛びや黒潰れやノイズが異なるため限界があります。必ずマニュアル撮影ができるカメラが必要です。
露出を決定するには、まずカメラを絞り優先オート(AEモード)にして絞りと感度をおおよそ適当な値に固定して、表示されるSSを確認しながらカメラをぐるっと一周回転させ、表示されたSSの最大値と最小値の間で適当な値を使ってマニュアルモードで撮影します。
日差しの強い日に太陽が画面内に入るようなシーンでは、どうしても太陽まわりが白飛び・影が黒つぶれになるので、自分が重視する被写体にあわせてSSを決定することになります。私は一発ではまず決まらないので、SSを変えて何度か試し撮りをして決めています。一つの露出で明暗差を表現しなければならないので、なるべくラチチュードの広いカメラ・・つまり映像素子の面積が同じならなるべく画素の少ないカメラ・・が良いと思います。ただしもちろん解像度は落ちますけどね、それはレンズで対応できます。
また、せっかく露出を固定しても素材撮影中に周りの明るさが変わってしまえば角度によって明るさが異なってしまいます。風の強い日に太陽が雲に隠れたり出たり、日の出・日の入り直前だとそうなります。これはもうなるべく素早く素材写真を撮るしかないです。
最近では、同じ写真を露出を変えて何枚か撮り、白飛び黒潰れのところを重ねて合成しラチチュードを広げたHDRを素材とした球面パノラマも流行ってるようですが、オートブラケット機能(D40には無い・・)が必要なうえ、パノラマ作成ですごく手間が増えるのでやってません。やってみたいけど。

- レンズについて
私はsigma 8mmF3.5 Fisheyeを使ってカメラを縦位置で5度斜め上に向けて水平5枚+真下1枚の計6枚で素材を撮ってます。縦方向で斜め上にすることで真上から三脚の脚が少し写るくらいのほぼ真下までカバーできます。
実はどんなレンズを使っても球面パノラマは作れます。極端な話をすれば300mmの望遠レンズでも、隙間がでないよう何百枚と素材を撮って手作業でステッチすれば球面パノラマを作れます。レンズが望遠になればなるほど撮影とステッチの手間は増えますが解像度は上がります。
私がsigma 8mmを使っているのは画角の広さゆえの素材撮影枚数の少なさと解像度のバランスがとれているからです。(1600x1200のモニターで全画面表示させて少し拡大しても大丈夫。)
sigma 8mmをAPS-Cカメラで縦方向で撮った場合、水平に3枚撮れば一周カバーできるんですが、画像周辺部になるほど色収差が出ることと、写真が重なる範囲が広いほどステッチの自由度が広がるので水平5枚で撮ってます。
超広角なのでピントが合う範囲は非常に広く、絞り開放F3.5でも2mから先はパンフォーカス、F8まで絞れば1m先からパンフォーカスとなります。D40ではAFが効きませんがかえって好都合です。ピントリングはゆるゆるなので動かないようにビニールテープをまいて固定しています。
- 回転雲台について
カメラを水平に回転させる際に、三脚穴やレンズの先端を軸にして回してはいけません。カメラを回転させるときには、レンズのノーダルポイントという、視点をずらしても被写体の角度がずれないポイントを軸にする必要があります。
このノーダルポイントはレンズによって異なるので、自分で回転軸をずらしながら探すか、メーカーや他のユーザーが情報を公開してるレンズを使う必要があります。sigma 8mmはメーカーがノーダルポイントを公開しています・・ピントリング前のくぼみのあたりです。
更にカメラを縦にして回転させる必要もあるので、専用の雲台が必要になります。
既成品として、マンフロットの303SPHやNodal Ninjaや kaidanのQuickPan等がありますが、いずれも海外からの輸入物で値段が高いので自作しています。
最初はホームセンターで売っているベアリング付き回転板と水平器と鉄の棒をエポキシパテやボンドで組み合わせて作りましたが、水平回転部にクリックストップが欲しかったので現在はヤフオクで落としたミノルタのパノラマ雲台(水平回転機能のみ)と金具を組み合わせたものを使っています。パノラマ雲台にはアームと水準器がついていましたが真下方向の視界を邪魔するので取り外ています。かわりに三脚のクイックシュー下部に100円ショップダイソーの水平器をばらして取り出した水平器を2つパテでつけて水平を測れるようにしてます。
水平回転部分は水平を出したほうが後で手間が省けます。ネジを回して水平を微調整できる専用の雲台(レべリングベース)もありますが重いし高いし応用も利かないので、大型カメラ用の頑丈な自由雲台で代用しています。
三脚へのパノラマ雲台の付け外し、パノラマ雲台へのカメラの付け外しを素早くかつ確実にできるように、クイックシューを付けています。
三脚は頑丈なほうが撮影ごとのブレが少なくて良いのですが、可搬性を優先してvelbonのULTRA LUX i Fの雲台を取り外して自由雲台を後付したものを使っています。(このシリーズって脚のロックがレバーじゃなく回転式なので便利なんですよ)
回転雲台と三脚についてるクイックシューは同じものにして、パノラマを撮影しない通常の撮影でも同じ三脚を使えるようにしています。

- 真下撮影について
三脚にカメラを据えて素材を撮ると、雲台や三脚によって真下部分が遮られ写真に写りません。(私の場合は三脚にじゃまされるのを前提でカメラを斜め上に向けているのでそもそも真下が写りません。)
なので、この部分にロゴやマークを合成して誤魔化すか、三脚をどかして真下を撮影した写真をはめ込み合成することが必要になります。
真下を撮影する際には、三脚から水平に棒をのばして先にカメラをつけて撮影すると確実ですが、手間と機材が増えるため、私は三脚をたたんで脚の先をもって撮影しています。(図)これだとノーダルポイントがきっちり出ないので真下に凸凹があると合成が難しいのですが、平面の床なら画像を変形させて(Photoshopの「変形→自由な形に」で)対応できるし、ゴチャゴチャした草や岩なら境界をぼかして重ねれば、まず不自然にはなりません。
一応、なるべくノーダルポイントをあわせるために、回転雲台とレンズにパテでレーザーポインターをつけて目星をつけられるようにしています。(図2)(回転雲台のレーザーで真下点を確認し、写真の中央を照射するようにしたレンズのレーザーで同じ真下点を照らすようにすればだいたい合います。高さは測れないので目分量で・・)
手持ちだと暗い場面での真下撮りができないんじゃないかと思われるかもしれませんが、水平方向は低感度・長時間露出(たとえばISO200、SS8秒)で、手持ちで真下を撮るときには感度を上げSSを速くして(ISO1600、SS1秒)やればなんとか対応できます。なのでなるべく高感度に強いカメラが良いです。はめ込み合成の範囲は狭いのでノイズが増えてもそんなに目立ちません。
露出を固定して撮影してもレンズの性質により写真周辺部で光量が落ち暗くなり、コーティングのせいか色味も変わるので、ステッチした写真の真下部分が暗く、別撮りした真下部分が明るくなり、色調補正が必要になります。ズレを確認するためにレイヤーとして重ねて乗算・比較暗・スクリーンモードなどで表示すると便利です。
真下部分もsigma 8mmで撮影した場合、魚眼の歪んだ像となるので、真下部分に合成するためにこれを広角に変換する必要があります。これはフォトショップ&ペイントショッププロのプラグインである、フリーのPanorama toolsを使います。
詳しいやり方は実践編で。

- ステッチについて
回転させて撮った複数枚の写真を繋ぎ合わせて一枚のつながった写真に合成するソフトです。市販でSticherやPTGUIなどがありますが、私はフリーソフトであるhuginを使っています。実は市販のステッチャーもエンジン部分はhuginと同じものを使ったりしてるのでhuginで十分です。オートでステッチしてくれる機能もありますがズレ易いので、毎回手作業で重ねるポイントを指定してます。(2時間くらいかかる・・)
市販ソフトのトライアル版とhuginで同じ素材をオートステッチして結果を比べてみたことがありますが、精度や処理の綺麗さの違いはわかりませんでした。
水平回転部と三脚を完全にガタやブレがないガッチリしたものにして、水平回転部のクリックストップも確実なものにすれば、一度手作業でステッチして重ねるポイントを保存しておけば後は完全にステッチを自動化できるはずですが、現状では可搬性を優先して貧弱な三脚と自作でガタのある回転雲台を使っているため毎回手作業でステッチしてます。
詳しい使い方は実践編で。
- パノラマ作成ソフトについて
上のhuginでステッチして出力した写真はあくまでメルカトル図法の地図のような1枚の写真であり、ぐりぐり動かせるパノラマにはなっていません。また真下部分が大きく引き延ばされ別撮りした写真を合成するのも不可能です。なのでこれを立方体の6面に再構成して6枚の写真として出力させ、手を加えたあとでパノラマファイル(QTVR)として出力することが必要になります。私はフリーソフトのPano2QTVRを使っています。
詳しい使い方は実践編で。
実践編
私のやり方を紹介します。
1.撮影編
- 三脚にパノラマ雲台をセットし、水平器を見ながら自由雲台部分で水平を出す。(カメラを先につけると重さで水平調整がしずらくなる。)水平が出たらパノラマ雲台にカメラをセットする。
- カメラを絞り優先オートにして絞りと感度を適当な値に固定し、SSを確認しながらカメラを水平にぐるっと回す。(リアルタイムでSSが表示されないカメラの場合、試しに5枚撮影して撮影結果からSSを読み取るといいでしょう。)
カメラをマニュアルモードにして、さきほど表示されたSSの最大値と最小値の間で適当な値に設定する。(レンズを斜め上に向けているため空の明るさの影響を受けて地上部分が暗くなりがちなので、最大値よりにすることが多い。)
一度でバッチリな値にするのはまず無理なので、重視する方向で試し撮りして撮影結果を見て調整する。ある程度の白飛び・黒潰れはあきらめるしかない。
- 水平方向に等間隔で5(ないし4)枚撮影する。暗所でのロングシャッターならリモコンや5秒タイマーを活用して。
- ノーダルポイントの真下になる地面の位置を目視かレーザーポインタで確認し、忘れないように靴の先で踏んでおく。
三脚の脚を伸ばしたままたたんで脚の先を持って後ろに下がり、5秒セルフタイマーモードにしてシャッターボタンを押し、目視かレンズに設置したレーザーポインタでさっきの真下位置とレンズの中心位置をなるべくあわせる。レンズは真下を向くようにする。ノーダルポイントの高さもなるべくあわせる。
真上が空ではなく人工物だったら、念のため真上も一枚撮っておく。(滅多にやらないが)
2.作成編
- huginを起動し、Assistantタブ画面にある「1.load images」ボタンを押して水平分の5枚の写真を読み込む。読み込むと同梱されてるAutoPanoがある程度自動的にステッチしてくれるが、手動指定が確実なのでこれは無視する。
- レンズタイプは円周魚眼レンズ、Focal length(焦点距離)は8.12mm、Focal length multiplierは1.5x、を指定。
「2.Align」と「3.Create panorama」ボタンには触れない。

- コントロールポイントタブ画面で、左右画面に1-2、2-3、3-4、4-5、5-1枚目を100%表示にして一致するポイントをクリックして指定していく。多いほうがステッチ後のズレがなくなるので、最低でも20ポイントはあったほうがいい。

コントラストの高い部分(物の角とか色の境目とか)で指定するとhuginの「自動的に微調整」が上手くいきやすい。一角に集中させずに上下にまんべんなく指定する。(画像周辺部になると魚眼効果でひずんで難しくなるが。)
水平線(目線)の位置は左右画面に同じ画像を表示させて5枚分を指定する。

時々ソフトが落ちることがあるので、こまめにプロジェクトファイルを保存しといたほうがいい。
このプロジェクトファイルを保存しておけば、次にステッチするときにファイルネームを今回のと同じにして読み込ませればある程度の自動化ができる。
- 指定が終わったら最適化タブ画面で、まず「位置(基準から1枚ずつ)」を選び実行、次に「全部」を選び実行。
(偏差値が100以内なら正常だが千や万単位だとどこかで間違えてるので要確認。)

- スティッチングタブ画面にて、パノラマタイプは「Equirectangular」、視野とパノラマのサイズは自動計算ボタンを押し(画角が水平360上下180にならなければどこかで失敗してる)、スティッチングモードは「カスタマイズ」、スティッチングプログラムは「nona」、スティッチング設定は画像補完「Poly3(Bicubic)」ガンマ「1.00」、出力ファイル設定は画像フォーマット「TIFF」圧縮「Deflate」を指定し、滑らかに融合するにチェックを付け、「スティッチングを実行」ボタンを押す。
DOS画面が開いて処理が始まる。パソコンのスペックによって異なるが2〜10分程度かかる。

- DOS窓が閉じたら、できあがったEquirectangularファイルをフォトショップなどのレタッチソフトに読み込む。
繋ぎ目でズレがないかチェック。ズレがあれば選択範囲の変形やコピースタンプツールで修正する。ズレが酷すぎたらポイント指定からやり直したほうが早かったりする。
水平が斜めってた場合は直しようがないので、水平ポイント指定をさっさとやり直す。
画像のコントラスト・明るさ・色調に不満があればここで補正しておく。
つなぎ目のところに人がいて2枚を撮影する間に人が動いていた場合、像がダブってゴースト(残像)が出てしまう。この場合、huginで出力ファイル設定の画像フォーマットを「TIFF複数枚」を指定してファイルを出力し、2枚のどっちか一枚からその人の部分を切り取ってステッチした画像に移動させ重ねて上書きする。

- 修正が終わったEquirectangularファイルをPano2QTVRで読み込む。Project typeのpanoramaタイプで「Equirectangular」を指定し、「Convert to Cubic」ボタンを押すとEquirectangularが立方体の各面に再構成されて6枚のcubic画像ファイルが出力される。

- cubicファイル6枚をそれぞれフォトショップで読み込み、ズレなどの最終確認。
真下部分は三脚と雲台、そしてレンズを少し斜め上に向けていたことにより黒く穴があいているので、別に撮っておいた写真を嵌め込み合成する。
ここでは真下もsigma 8mmで撮影した場合についてフォトショップを使っての合成方法を説明する。
@別撮りした真下の写真を読み込む。横長(か縦長)になっているので、「カンバスサイズ」で短い辺を延長して縦横を同じ長さにする。
Aインストールしておいたプラグイン「Panorama tools」を呼び出し、「Remap」にて左のConvert from(元画像種類)に「Fisheye Hor.」を、右のConvert to(変換後画像)に「Nomal」を選ぶ。画角はHFOVとVFOVどちらも179°にする。
BOKボタンを押すと魚眼から広角に変換される。
Ccubicの真下画像を読み込み、別撮り画像と並べて表示させる。
D「カンバスの回転」で適当な角度を指定してcubic画像と向きを合わせる。「画像解像度」で大きさもだいたいでいいので合わせる。少し大きめがいい。(cubic画像をいじってはいけない。)
E別撮り画像の、cubic画像の穴の範囲より少し大きい範囲を選択指定する。選択範囲が大きいほど解像度は上がるが、後での嵌め込み合成が難しくなる。
F「選択範囲→境界をぼかす」で10〜30ピクセル程度を指定して選択範囲をぼやかせる。
GCtrlキーを押しながら選択範囲をcubic画像にドラッグ&ドロップ。
Hレイヤーモードを「スクリーン」「乗算」「比較(暗)」など上下の比較がしやすいモードにして、「変形→自由な形に」で四隅をつかんで変形させ、上と下の画像を一致させる。くりかえし何度も変形させないと一致できないので根気よく。
I一致したらレイヤーモードを通常に戻す。ズレがないかを再度確認したら、明度とコントラストと色調を一致させるべく調節する。だいたいの場合、コントラストを低く、明度を暗く、彩度を落とす方向に調節することになる。
J目でみてわからないくらい一致したらレイヤーの統合を行い画像を保存する。


これが面倒な場合やフォトショップなどのレタッチソフトを持ってない場合は、ロゴやマークを自作して重ねても良いかと。
真上部分は周辺減光により変なスジができてる事が多いのでコピースタンプで消す。真上画像を別に撮影していればそれを真下と同じように嵌め込み合成しても良い。
- Pano2QTVRにて、Project typeのpanoramaに「cubic」を選び、画像として6枚のcubic画像のどれか1枚を選ぶ。
Settingsタブ画面でQuality(画像圧縮度・・私はだいたい70)、Window size(movファイルを開いたときの表示サイズ&縦横比・・900x600)、Viewing Parameters(最初に開いたときの視点の高さと左右位置(任意)や視界の広さ(65度))などを指定する。「Spot in Quicktime」ボタンを押すとプレビューを見ながら指定できて便利。
Userdataタブ画面でファイル情報(タイトルや制作者名や制作年月日など)を入力する。

Hotspot(パノラマの指定した位置をクリックするとウェブページが開く)タブ画面でホットスポットを指定することもできる。知り合い何人かがパノラマの中に写ってる場合、各人の顔にウェブサイトのリンクを貼ったりするといいかも。
- 下にある「Create」ボタンを押すと指定した位置にmovファイルができる。完成。

3.ウェブページ編
インターネットで球面パノラマを公開する場合、movに直接リンクを張るとブラウザの中にQuickTimePlayerがぽっかり浮かんだ状態で表示されて殺風景なので、javaで見栄えのいいフロントエンドを表示させてやるとカッコいい。
私はjavaなんて打てないのでhtmlソース、javaとも某ページからパクらせてもらいました。てへへ。
戻