OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
cv::kinfu::KinFu クラス abstract

KinectFusion implementation [詳解]

#include <kinfu.hpp>

公開メンバ関数

virtual const Params & getParams () const =0
現在のパラメータの取得
virtual CV_WRAP void render (OutputArray image) const =0
ボリュームを画像にレンダリングする[【詳解】(英語]
virtual CV_WRAP void render (OutputArray image, const Matx44f &cameraPose) const =0
ボリュームを画像にレンダリングする[【詳解】(英語]
virtual CV_WRAP void getCloud (OutputArray points, OutputArray normals) const =0
現在の3Dメッシュの点と法線を取得します。[【詳解】(英語]
virtual CV_WRAP void getPoints (OutputArray points) const =0
現在の3Dメッシュの点を取得します。[【詳解】(英語]
virtual CV_WRAP void getNormals (InputArray points, OutputArray normals) const =0
与えられた点の法線を計算します。[【詳解】(英語]
virtual CV_WRAP void reset ()=0
アルゴリズムのリセット[【詳解】(英語]
virtual const Affine3f getPose () const =0
ボクセル空間での現在のポーズの取得
virtual CV_WRAP bool update (InputArray depth)=0
次の深度フレームを処理[【詳解】(英語]

静的公開メンバ関数

static CV_WRAP Ptr< KinFu > create (const Ptr< Params > &_params)

詳解

KinectFusionの実装

このクラスは,以下で説明されている3D再構成アルゴリズムを実装しています.[kinectfusion] のペーパーに記載されている3D再構成アルゴリズムを実装しています。

このクラスは,深度センサ(または,ステレオカメラマッチングアルゴリズムやレイマーチングレンダラなどの任意の深度画像ソース)から取得した一連の深度画像を受け取ります。出力は,点とその法線のベクトルとして得られるほか,与えられたカメラのポーズからフォンレンダリングすることもできます.

モデルの内部表現は、ボクセルキューボイドで、サーフェイスへの距離のようなものであるTSDF値を保持しています(詳細については[kinectfusion] の詳細はTSDFについての記事をご覧ください)。この表現に対するインターフェースはまだありません。

KinFuは、利用可能であれば自動的にOpenCLアクセラレーションを使用します。明示的に有効または無効にするにはcv::setUseOptimized()または cv::ocl::setUseOpenCL().

この実装はkinfu-remake.

KinectFusion アルゴリズムは特許を取得しており,このモジュールディレクトリ内の README.md ファイルに記載されている特許リストによって,その使用が制限されている可能性があることに注意してください.

そのため、KinectFusionを使用するには、CMakeでOPENCV_ENABLE_NONFREEオプションを設定する必要があります。

関数詳解

getCloud()

virtual CV_WRAP void cv::kinfu::KinFu::getCloud ( OutputArray points,
OutputArray normals
) const
pure virtual

現在の3Dメッシュの点と法線を取得します。

法線の順番は、点の順番に対応します。点の順序は不定です。

引数
points 4-float ベクトルである点のベクトル
normals 4-float ベクトルである法線のベクトル

getNormals()

virtual CV_WRAP void cv::kinfu::KinFu::getNormals ( InputArray points,
OutputArray normals
) const
pure virtual

与えられた点の法線を計算します。

引数
points 4-float ベクトルである点の入力ベクトル
normals 対応する法線の出力ベクトル(4浮動小数点型ベクトル

getPoints()

virtual CV_WRAP void cv::kinfu::KinFu::getPoints ( OutputArray points ) const
pure virtual

現在の3Dメッシュの点を取得します。

点の順序は不定です。

引数
points 4-float ベクトルである点のベクトル

render() [1/2]

virtual CV_WRAP void cv::kinfu::KinFu::render ( OutputArray image ) const
pure virtual

ボリュームを画像にレンダリングする

Phongシェーディングを用いてTSDFの0面をCV_8UC4にレンダリングします.Mat. ライトのポーズを固定したKinFuparams.

引数
image レンダリング結果の画像

render() [2/2]

virtual CV_WRAP void cv::kinfu::KinFu::render ( OutputArray image,
const Matx44f & cameraPose
) const
pure virtual

ボリュームを画像にレンダリングする

Phongシェーディングを用いてTSDFの0面をCV_8UC4にレンダリングします.Mat. ライトのポーズを固定したKinFuparams.

引数
image レンダリング結果の画像
cameraPose レンダリングするカメラのポーズ.空の場合は,最終フレームのカメラポーズである現在のポーズからレンダリングします.

reset()

virtual CV_WRAP void cv::kinfu::KinFu::reset ( )
pure virtual

アルゴリズムのリセット

現在のモデルをクリアし、ポーズをリセットします。

update()

virtual CV_WRAP bool cv::kinfu::KinFu::update ( InputArray depth )
pure virtual

次の深度フレームを処理

ICPで計算されたポーズを基準にして,ボクセル空間に深度を統合します.入力画像が他の種類のものである場合,内部的にCV_32Fに変換されます.

引数
depth アルゴリズムのパラメータに記述されたサイズと深度スケールを持つ,1チャンネルの画像.
戻り値
新しいフレームを現在のシーンに合わせることに成功した場合はtrue、反対の場合はfalse

このクラス詳解は次のファイルから抽出されました: