そもそも再構成とは長距離データ処理に基づいて作成した対象物の3Dモデルのことであります。 再構成は、ステレオメトリック、ステレオフォトメトリック、ボリューム除去、モーションデータなど、さまざまな原理で行うことができる。

この作品は、GPU、つまりビデオカードを使って、物体形状を再構成する簡単なアプリケーションの開発方法を説明するガイドである。

上記の原理の中で、Brian Cureless と Mark Levoy が “A Volumetric Method for Building Complex Models from Range Images” という論文で提案したボリューム除去アルゴリズムを選択しました。

下の図は、このアルゴリズムの基本原理を明らかにしたものです。 一連の画像から再構成されるオブジェクトは左側に示されている。 画像を処理する際、アルゴリズムは対象物の前方に位置する3次元点(著者らは深度マッピングのために構造化光技術を適用した)を除去し、その先にあるものを除去する。 中央が1枚目の画像処理の結果です。 2台目のカメラで撮影したデータを使って、さらに3Dポイントを削除している。 9801>

このアプリケーションでは、画像中のオブジェクト輪郭を超えたところにある点のみを削除する簡易版のアルゴリズムを実装しています。 元の記事に従い、空間全体を立方体の要素(ボクセル)の集合に分割する。

ボクセルが3Dオブジェクトに属するかどうかを判断するために、GPUレンダリングを適用し、得られた投影をオブジェクトのシルエットにマッチさせる。

投影を取得するために、以下の関数を使用します。

より詳しく説明すると、

pixelBuffer->makeCurrent () – 画面外の QGLPixelBuffer バッファに描画内容を切り替えます。

出力バッファを初期化するとき、オブジェクトに対するボクセルの空間位置を決定することだけが目標なので、クリッピング、深度テスト、およびミキシングは無効になります。

HComparator::render でコンテンツを切り替えた後、出力バッファをクリアし、投影パラメータを設定します。

ボクセルをレンダリングするには、コマンドの事前形成リストを実行するために glCallList(voxelList) 関数がコールされます。 初期化関数は:

描画後、オブジェクトに対するボクセルの空間位置は HComparator::compareData 関数を使用して決定されます。

比較データ関数はバッファの内容をコピーし、3つの可能なオプション(下図参照)に基づいてオブジェクトのシルエットと比較します:

a) ボクセルは完全にオブジェクト内に位置しています(コード 1);

b) ボクセルは境界に属しています(コード 2);

c) ボクセルは完全にオブジェクトを超えて配置されています(コード 0)。

HReconstruction::process 関数で3Dモデルの開発に使用した角度の集合を逐次処理する。 各ボクセルがオブジェクトに属するという仮定からスタートする。 もし、ある角度のボクセルが物体から外れた位置にあると判断された場合、その処理は停止され、モデルから削除される。 この処理は、全ての角度を考慮するまで行われる。

ボクセルとオブジェクトのシルエットを一致させるには、投影パラメータを知る必要があります。 それらはGL_PROJECTIONおよびGL_MODELVIEW行列によって定義されます(setGL関数を参照)。

GL_PROJECTION行列はカメラパラメータ、特に焦点距離と画像サイズ(HFrame::loadIntrisicParameters関数)で定義されます。

カメラ3D位置は拡張現実マーカーを用いて決定でき、我々はそれをarucoライブラリから取得しています。 マーカーは紙に印刷する特殊な画像です(下図参照)

オブジェクトの撮影時には、マーカーを動かさないようにして、それぞれのオブジェクト写真でカメラの視野に入るようにしなければなりません。

ライブラリは、マーカーの制御点を検出し、カメラの焦点距離を使用して、マーカーの3D位置(rvecとtvec)を計算します。

rvec と tvec パラメータは GL_MODELVIEW マトリックスを決定します (HFrame::loadExtrisicParameters 関数を参照してください)。

このように、複数のカメラからのデータを処理することにより、画像平面上にボクセルを投影し、オブジェクト画像に対するボクセルの位置を決定し、投影パラメータを計算し、ボクセルがオブジェクトボリュームに属しているかどうかを判断する方法を学びました。

Leave a comment

メールアドレスが公開されることはありません。