ビデオから超長フラットパノラマ画像を作成する





背景



数年前のHabréには、Adam Magyar Einsteinのカメラに関する記事がありました。1人の写真家がどのように時間を描いているかです。 私には非常に興味深いように見えましたが、正直なところ、私はまだステンレスビデオを撮影するための技術を理解していませんでした。 私は特に彼の地下鉄電車の写真を賞賛しました。 その後、私は疑問に思った:私はこのようなものを自分で作成できますか?



問題の声明



私の親liveが住んでいる村からそれほど遠くなく、鉄道があり、私が訪問に行った後、私はカメラと三脚を持って行きました。 私が自分のために設定したタスクの本質は、電車のパノラマ画像を作成することでした。そのため、単純に平坦なパノラマを収集するだけでは削除できませんでした。 つまり、ビデオを撮影し、各フレームから中央のストリップを切り取ってそれらを結合し、非常に長くて美しいパノラマが得られることを期待していました。 最大解像度が60 FPS、ビデオ解像度が1280x720のCanon EOS 600Dカメラ( 仕様 )の所有者であるため、より高い周波数に頼る必要はありませんでした。 一方、1280ピクセルのパノラマは、ほとんどのモニターの垂直解像度よりも優れています。 したがって、結果の品質が私に合っていると思いました。



インターネットの例



続行する前に、見つけたこのトピックの作品へのリンクのリストを提供したいと思います。



射撃! モーター! 行こう!



そこで、レールから約10メートルの距離に三脚を設置し(レールに近づくほどカメラの揺れが強くなる)、カメラを直立位置に取り付けました。 ビデオフレーム全体の中央のストライプのみが必要なため、カメラは水平ではなく垂直に設置するのが最も適切です。この場合、パノラマの解像度が高くなるためです。 たとえば、水平方向が1920x1080の場合、高さ1080ピクセルのパノラマが得られ、垂直方向が1080x1920の場合、高さ1920ピクセルのパノラマが得られます。



ビデオ撮影は、手動モードで、つまり自動化なしで行うのが最適です。 オブジェクトがフレームに入ると、シーンの照明が大幅に変化する可能性があり、カメラがシャッター速度または絞りを変更するため、これは望ましくありません。 そうしないと、電車などの異なる部分の明るさが異なる場合があります。 選択した解像度のフレームレートは当然最大になります。 被写体がフレームに入る瞬間の5〜10秒前に撮影を開始します。 まず、万一の場合、2番目に、録画ボタンを押した後にカメラの移動が停止し、3番目に、背景フレームを選択できるようになりました(雲などにより照明が急速に変化する場合)。 撮影の終了もすぐではなく、約5秒後です。私個人の経験では、撮影時にオブジェクトが完全にフレームに入るかどうか、余分な空きスペースがあるかどうかを計算することをお勧めします。 いくつかのパノラマでは、列車の上部が少し途切れています。 そしてもちろん、事前にマニュアルフォーカスを設定し、オブジェクトにフォーカスすることをお勧めします(ただし、オブジェクト自体はまだ利用できないため、これは困難です)。



ソフトウェア部



Trainz Panoプログラム(C ++ Builder XE3)を作成しました。 アプリケーション64ビット、OS-Windows 7/8/10。 彼女はビデオからパノラマを作成することに集中しています。 このプログラムは商用製品として入手でき、Googleで簡単に入手できます。



アプリケーションを使用する



自分とユーザーの生活を楽にするために、パノラマを作成するプロセスを、実際のアセンブリと編集という2つの部分に分けました。 これは、大量のデータが失われないように、中間段階で保存する方が良いという事実のために行われます。 このため、アプリケーションは64ビットです。



ビデオオープニング







私は自分でビデオをデコードすることを気にしませんでした。私のアプリケーションはFFMPEGを使用し、最初にビデオから一連の画像を受け取り、それからそれらで動作します。



背景オプションの設定







最初の画像では、背景として繰り返しパターンを見ることができます。 これは、各フレームからストリップが数十ピクセル程度の幅で切り取られるという事実によるものです。 実際、オブジェクトと重ならない場合は繰り返されます。 このような背景を取り除き、単調な線に置き換えるために、アプリケーションにはこのプロセスを自動化する機能があります。 残念ながら、結果は私を少しがっかりさせることがあるため、アセンブリプロセスの後に高品質の結果を得るには、レタッチに進むことができるので、バックグラウンドパラメータを設定します。



パノラマアセンブリ



ビデオカメラを撮影するとき、オブジェクトに関連して、直接ではなく、特定の角度で配置することができます。 さらに、カメラはオブジェクトの軌跡に対して角度を付けて配置できます。 それらの影響を補正するために、アプリケーションにはRotationPerspectiveの 2つのコントロールがあります。 それらは選択によって決定されるため、個々のセクションを結合するときに、結果のイメージにニックはありません。 別のパラメーターはWidthです。 現在のフレームから切り取られ、結果のパノラマに追加されるストリップの幅を示す必要があります。 3つのパラメーターはすべて、パノラマアセンブリプロセス中に変更できます。 ただし、ほとんどの場合、 ローテーションパースペクティブは初期段階で設定され、将来変更されません。 ただし、オブジェクトの速度が不安定になる可能性があるため、[ 幅]パラメーターは変更される可能性があります。 私の場合、電車の加速と減速に何度も遭遇しました。



ビデオを垂直方向に撮影する場合、メインメニューで90度の倍数の回転角度を指定する必要があります。 考慮すべきことがもう1つあります。 私がプログラムを書いたとき、私はオブジェクトの動きが右から左に実行されるという事実から進みました。 実際にオブジェクトの動きが左から右に実行される場合はどうすればよいですか? これを行うには、アセンブリ段階でアイテムを左から右に反映させると、すべての碑文が鏡像になります。 また、レタッチの段階では、 Reflection Panoramaコマンドを左から右に使用すると、すべてが適切に配置されます。



パノラマレタッチ







繰り返しの背景を取り除くには(プログラムがそれ自体でできなかった場合)、またはオブジェクトの画像が背景として誤って定義されていた場合にオブジェクトの画像を復元するには、画像(より正確には、画像レイヤー、3つあります)をTrainz Pano Editorプログラムに読み込みます。 以下は、プログラムが提供する機能の短いリストです。



プログラムでのビデオ作品



オンラインヘルプはこちらです。



パノラマを見る



パノラマを保存すると、1つの不快な詳細が明らかになりました。つまり、JPEG形式では画像サイズに制限があります。 長さと幅には2バイトが使用されるため、65535ピクセルより長いパノラマを記録することはできません。 同時に、200,000ピクセル以上の長さのパノラマがありました。 BMPおよびPNGに保存しても問題は発生せず、これらの形式の画像のみが多くのディスク容量を占有します。 表示するために大きなパノラマを開こうとすると、いくつかの問題も発生しました。 XnViewとXnViewMPは、プログラムの作者に書いたピクセルの混乱を示しています。このバグが次のバージョンで修正されることを願っています。 組み込みのWindowsビューアはPhotosを強烈に開き、InfanViewは失望しませんでした。 一般に、すべての視聴者が長いパノラマを正しく表示するわけではないと想定する必要があります。



私の仕事の例



サイトでの私の仕事のいくつかの例を知ることができます。 確かに、サイズが大幅に縮小されています。







可能な応用



列車のパノラマショットに加えて、このプログラムを使用して、車または自動車の列、船、パレードの人々の列、デモ、およびデモのパノラマを作成できます。 良好な道路がある場合は、たとえば電車、路面電車、車などから通りや風景のパノラマ画像を撮影してみてください。



アプリケーション改善計画







結論






All Articles