VR画像(パノラマ写真)の作り方:PTGuiによるスティッチ

VR画像(パノラマ写真)の作り方:一眼レフカメラでの撮影とノーダルポイント」、「VR画像(パノラマ写真)の作り方:HDR(ハイ・ダイナミック・レンジ)合成」という記事で、一眼レフカメラによる360度VR画像の撮影について書きました。この記事では「PTGui」というソフトウェアによるスティッチ(合成)の作業について書いています。この記事は、一眼レフカメラを使った高画質高精細の360度VR画像(パノラマ写真)の作り方をご紹介しています。VR専用のカメラを使う場合は、本記事の「スティッチ(合成)」は必要ない場合がほとんどです。

PTGuiについて

PTGuiは、オランダ・ロッテルダムのソフトウェア開発会社「New House Internet Services BV」が提供するパノラマ合成ソフトウェアです。1996年から開発が始まり2001年に「PTGui ver1.0」がリリースされました。2018年6月には3年ぶりとなる最新バージョン「PTGui ver.11」がリリース。処理速度が大幅に向上しました。

「PTGui」と「PTGui Pro」の2製品がありますが、「PTGui Pro」でないと「HDR合成」「バッチ処理」「ビューポイント補正」といった重要な機能が使えません。ver.11になり価格は少し安くなりました。Personal Licenseだと「PTGui」が約¥12,500、「PTGui Pro」が約¥25,000です。Personal Licenseでも商用利用が可能ですが、企業であればcompany licenseが必要になります。

素材となる画像を読み込む

PTGuiを起動すると、まず以下のような画面が2つ開きます。

PTGuiを起動したときのメイン・ウィンドウ。

PTGuiを起動したときのpanorama editorウィンドウ。

かなりユニークな画面です。ここに、前回の記事「VR画像(パノラマ写真)の作り方:HDR(ハイ・ダイナミック・レンジ)合成」で準備した3枚6組計18枚の素材写真を読み込みます。「1.Load Images…」を押します。

HDR合成のため撮影した3枚6組計18枚の素材写真。

素材写真を読み込む。

素材を読み込むとアクティブになる、「2. Align Images」を押します。HDR撮影をした素材の場合、PTGuiが自動的にそれを認識してくれて小窓が表示されます。「The Project appears to contain 6 sets of 3 bracketed exposures. What would you like to do?」。「3段のブラケット撮影で撮影された6組の画像があるようですが、どうしますか?」。ここは、ブラケットの段数、撮影した角度によって違います。5段のブラケットで90度ずつ4角度で撮影した場合は、「4 sets of 5 bracketed」となります。

今回はHDRで合成しようと思うので、一番上の「Enable HDR mode and link the bracketed images」を選択します。真ん中の選択肢は、手持ちの撮影などでブラケット撮影した3枚にズレがある場合につかいます。何かの事情で三脚が使えなかった場合などは、こちらを選んだ方がもしかしたら綺麗に合成できるかもしれません。

「HDR Method」の欄は、通常「Exposure Fusion」を選択します。「True HDR」との大きな違いは「トーンマッピング」の作業の有無。「Exposure Fusion(露出合成)」では、各素材写真から露出値その他の情報を取得し、合成後の1枚の写真が自然な仕上がりになるように自動的に調整してくれます。「トーンマッピング」も自動処理です。一方の「True HDR」は「トーンマッピング」の作業を手動で行えるほか、32bitのHDR(High Dynamic Range)ファイルが出力できます。私たちが普段一般的に扱っているファイルは「LDR(Low Dynamic Range)ファイル」です。これは、HDR(High Dynamic Range)撮影で得られる階調(光の記録の幅)を再現できるモニターやプリンターがないためですが、HDRファイル形式であれば「一般的には使えない」ものの「データとしては保存できる」ことになります。最近では、アプリケーションもHDRファイルを直接EDITできるようになってますし、HDRファイルを持っておけば、後日また違う階調でVR画像を出力し直すこともできます。ROWデータの扱いと似ていますね。ただ、「True HDR」合成ではその他にもより多くの知識が必要になるので、今回は「Exposure Fusion」で合成作業を進めます。

うまく合成できた場合:完成までのワークフロ−

「Enable HDR mode and link the bracketed images」と「Fusion Exposure」を選択後「OK」を押すと、数秒で合成が完了しメインウィンドウの「3. Create panorama…」ボタンがアクティブになります。そしてもう一つの「Panorama Editor」ウィンドウに合成結果が表示されます。この合成結果が綺麗なエクイレクタングラー画像になっていれば、合成は正しくできたことになります。正しく合成ができた場合、「中心点の設定」→「最適化処理」→「明るさ(Exposure)の調整」→「出力」というのが最低限のワークフローになります。ゴールは間近です。

中心点の設定

Panorama Editor画面。

「Panorama Editor」画面ではまず、VR画像(パノラマ写真)の中心点を決めます。画面上部の左から3つめのアイコン「Set Center Point」ツールを選択して、中心にしたい場所をクリックします。垂直方向は緯度0度に当たる場所、水平方向はどの位置でも構いません。クリックすると画面上の中心点も切り替わります。

中心点を設定。

「Panorama Editor」ではこのほか、各写真のポジションを確認したり、エクイレクタングラー以外の投影(Projection)を確認することができます。

最適化処理と撮影精度の確認

最適化処理(Optimization)の画面。

中心点の設定が終わったら、メイン・ウィンドウの右上にある「Advanced >>」ボタンをクリックし、「Optimizer」タブメニューを表示させ、「Optimizer」タブを選択します。この処理では、写真のExif情報を元に、レンズの歪み補正を合成結果に反映してくれます。画面下の「Run Optimizer」ボタンを押して処理を実行します。

最適化処理(Optimization)の結果を知らせる小窓。

最適化処理が終わると小窓が表示され、今回のサンプルでは中央に「This is Good.」と表示されています。「OK」を押すと最適化処理の結果が反映されます。「Panorama Editor」で見ると、合成結果が少し整っているのが分かります。

実は、この「Optimizer」処理は、底面処理を施す場合や、大量の写真を合成する場合、手持ちで撮影した場合など、微妙な調整を色々と試しながら最適な合成結果を求めるときに「Acvanced」モードが活躍します。ただ「Simple」モードでも処理をした後に「This is Good.」のコメントがでます。これは、「Very Good」から「Very Bad.」までの6段階のコメントがあり、「正しい撮影ができたかどうか」の指標のひとつになります。三脚とパノラマ雲台を正しく使い、素材写真のデータに大きなミスがなければ、「Very Good」または「Good」が表示されます。撮影環境が悪く多少のズレが生じたような場合でも、「not so bad」というコメントになる場合がほとんどです。「bad」や「Very Bad」などのコメントが出た場合には、ノーダルポイントがズレていたり、カメラを回転している間に位置がズレてしまったなど、撮影が上手くできなかった可能性が高いです。次の撮影に活かすためにも、撮影した素材の精度がどのくらいだったのか、「Optimize」処理の結果でチェックしておくのが良いと思います。

明るさ(Exposure)の調整

Exposure/HDR画面。

「Exposure/HDR」タブを選択し、明るさを調整します。冒頭の「HDR」モードや、「Exposure Fusion」「True HDR」メソッドの選択もここで変更可能です。今回は、「Enabled HDR Stitching」にチェックが入っていることを確認し、「Exposure Fusion」で明るさを調整します。

Exposure Fusion 画面で最終的な明るさの調整をします。

360度VR画像(パノラマ写真)の出力

「Exposure Fusion」で画像の明るさを調整したら、「Create Panorama」タブへ移動し、360度VR画像(パノラマ写真)を出力します。サイズ欄には、この素材画像から合成出力できる最大のサイズがデフォルトで入っていますが、キリの良い数字に調整します。エクイレクタングラー形式の画像は縦横比が2:1になります。今回のサンプルでは、8000px x 4000pxくらいが良いでしょう。

Create Panorama 画面でパノラマ写真を出力します。

最後に、「Create Panorama」ボタンを押します。これで、360度VR画像(パノラマ写真)の合成出力作業は終わりです。「Create Panorama」」ボランの右にある、「Save and Send To Batch Stitcher」を押すと、バッチ処理を開始します。最近のマシンであれば10000px以上の画像を出力しても数分で終わりますが、超高画質の画像・大量の画像を出力する際には重宝する機能です。

うまく合成できない場合のチェック項目と対策

冒頭の、「Enable HDR mode and link the bracketed images」と「Fusion Exposure」を選択後「OK」を押して合成処理を行った後、エラーメッセージが表示され「Panorama Editor」ウィンドウ内の合成結果がメチャクチャだった場合、まずはいくつかチェックするポイントがあります。

レンズの情報が正しく認識されているか

PTGuiは、画像ファイルのEXIFデータからレンズの情報などを自動的に認識してくれるのですが、稀に正しくインプットされなことがあります。メイン・ウィンドウの「Lens Settings」タブから、レンズの情報が正しいかどうかを確認します。

Lens Settings 画面でレンズ情報を確認。

もし、focal length(焦点距離)欄に入っている数値が実際に使ったレンズと違っていたら、正しい値を入力します。その後、「Project Assistant」タブに戻り、再度「2. Aligh Images…」を試します。

クロップの範囲が間違っていないか

こちらも通常は自動的に検出されますが、例えばフルサイズカメラ・円周魚眼で撮影した場合、合成に使用する範囲をトリミングする「クロップ」の設定が間違っていることがあります。

Crop画面でトリミングの範囲を確認。

点線が「クロップ」されている範囲です。画像が記録された範囲よりも極端に大きな円でクロップされている場合、合成がうまくできません。点線をドラッグして範囲を調整します。調整後は先ほどと同様に、「Project Assistant」タブに戻り、再度「2. Aligh Images…」を試します。

コントロールポイントを確認する

上記2点が正しく設定されているにも関わらず「2. Aligh Images…」で正しく画像が合成されない場合、「コントロールポイント(Control Point)」の調整を行います。この「コントロールポイント(Control Point)」が、画像合成においてキモとなる部分であり、本質でもあります。

コントロールポイント(Control Point)の設定画面。

UIは直感的で分かりやすいと思います。左の写真と右の写真の上に色のついた番号が散らばっています、これがコントロールポイントです。それぞれ「同じ番号が付いているポイント」が、「同じ場所」となります。左右の画像の上にタブがあり「0〜17」まで計18枚の写真がありますが、3段のオートブラケットで撮影した素材なので、「0、1、2」で1組、「3、4、5」で1組…となります。このサンプルでは、3枚ずつの組のうち適切な露出に近くて見やすい1枚目の写真同士を比べると、作業がしやすそうです。左側は「0」を選び、右側はその隣の角度・同じ露出設定で撮った写真「3」を選びます。

左右のコントロールポイントをよく見ていくと、明らかに違う場所が「同じ場所」と認識されていることがあります。幾何学的なパターン模様であったり、空間そのものがシンメトリーな要素を持っていたりすると、自動処理で正しくコントロールポイントを抽出するのが難しく、間違った検出をすることがあります。そうしたコントロールポイントは、ドラッグして位置を修正するか削除していきます。のっぺりとした変化のない空間、例えば真っ白で大きな壁が一面に広がっているような場所で撮影すると、そもそもコントロールポイントが抽出できていないケースもあります。手動でコントロールポイントを追加していきます。合成の品質は、「コントロールポイント(Control Point)」の精度と数に依るところが大きく、たった数個の間違ったコントロールポイントが合成全体をダメにしていたということも多々あります。怪しい箇所は全て修正し、足りない部分には追加していきます。

「コントロールポイント(Control Point)」のズレ具合・抽出の可否は素材写真の精度に依存します。場合によっては、全ての写真の組み合わせで「コントロールポイント(Control Point)」を手動設定しなければならないこともありますし、それをやっても正しく合成できないケースもあります。「正しく撮影する」ことがまず第一です。「ひとつひとつコントロールポイントを設定する」ような労働集約的な作業は、できることなら避けたいものです。

コントロールポイント(Control Point)の追加修正を行い、合成精度を改善します。

コントロールポイントの調整が完了したら、「Project Assistant」タブに戻り、再度「2. Aligh Images…」を試します。ダメだったら、また「コントロールポイント(Control Point)」の調整・追加を繰り返します。スティッチ(合成)が上手くいかなかったときのこの作業は、違うソフトであっても360度VR動画になっても基本的には同じです。何をやってもいくら時間をかけてもダメな場合もあります。そうならないためにも、撮影時の精度や工夫が大事なのです。

静止画にしろ動画にしろ実写の360度VRでは、1つのレンズで全天周を撮れるようなカメラが登場するまで、「No-Parallax-Point(ゼロ視差点)問題」と「スティッチ(合成)作業」からは逃れられません。この点が通常の写真撮影や映像制作と根本的に違う部分で、制作物の品質を左右する重要なポイントでもあります。カメラ・レンズ・リグ・撮影方法を工夫して、いかに「No-Parallax-Point(ゼロ視差点)問題」を吸収していくか。スティッチ(合成)作業を見越して、撮影時にどんな工夫を仕込んでおくか。そうした部分でカメラマンやクリエイターの経験やアイデアが活かされるのが、VR画像・映像制作の面白さでもあります。

さて、PTGuiによるスティッチが成功したら、以下のようなエクイレクタングラー形式のVR画像(パノラマ写真)が完成します。

今回のサンプルで完成した360度VR画像(パノラマ写真)

この360度VR画像(パノラマ写真)を使った「バーチャルツアー」の制作について、今度は書きたいと思います。PTGuiのより詳しい使い方や撮影時の工夫なども、良いサンプルが見つかったら書いてみようと思います。