OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::large_kinfu::LargeKinfu クラスabstract

大規模高密度デプスフュージョン(Large Scale Dense Depth Fusion)の実装。 続き...

#include <opencv2/rgbd/large_kinfu.hpp>

Collaboration diagram for cv::large_kinfu::LargeKinfu:

公開メンバ関数

virtual ~LargeKinfu ()=default
 
virtual void getCloud (OutputArray points, OutputArray normals) const =0
 
virtual void getNormals (InputArray points, OutputArray normals) const =0
 
virtual const ParamsgetParams () const =0
 
virtual void getPoints (OutputArray points) const =0
 
virtual Affine3f getPose () const =0
 
virtual void render (OutputArray image) const =0
 
virtual void render (OutputArray image, const Matx44f &cameraPose) const =0
 
virtual void reset ()=0
 
virtual bool update (InputArray depth)=0
 

静的公開メンバ関数

static Ptr< LargeKinfucreate (const Ptr< Params > &_params)
 

詳細説明

大規模高密度デプスフュージョン(Large Scale Dense Depth Fusion)の実装。

このクラスは、空間ハッシュ化されたTSDFボリューム「サブマップ」を用いて、より広い環境向けの3次元再構成アルゴリズムを実装する。また、長いシーケンスにわたるトラッキングのドリフトを最小化するため、ポーズグラフ最適化を定期的に実行する。現時点では、このアルゴリズムは再局在化(relocalization)やループクロージャのモジュールを実装していない。将来的には、Bag of wordsの実装、あるいはGlocker et al. ISMAR 2013で説明されているRGBD再局在化が実装される見込みである。

これは深度センサ(あるいはステレオカメラのマッチングアルゴリズムやレイマーチングレンダラなど、任意の深度画像ソース)から取得された一連の深度画像を入力とする。出力は、点群とその法線のベクトルとして取得することも、与えられたカメラ姿勢からPhongレンダリングすることもできる。

モデルの内部表現は、空間ハッシュ化されたボクセルキューブであり、最も近い表面までの距離を表すTSDF値を格納する(詳細はTSDFに関する [139] の論文を参照)。この表現に対するインタフェースはまだ用意されていない。

ポーズグラフ最適化のため、Volumeクラス上にSubmap抽象が作成される。現在の視錐台と既存のボリューム/モデルとの可視重なりが少ない場合に、新しいサブマップがモデルへ追加される。複数のサブマップが同時にトラッキングされ、ポーズグラフが作成されて定期的に最適化される。

LargeKinfu はまだOpenCLによる高速化を一切使用していない。明示的に有効化または無効化するには、cv::setUseOptimized() または cv::ocl::setUseOpenCL() を使用する。

この実装は、Kintinuous、InfiniTAM、その他のSOTAアルゴリズムから着想を得ている。

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

構築子と解体子の詳解

◆ ~LargeKinfu()

virtual cv::large_kinfu::LargeKinfu::~LargeKinfu ( )
virtualdefault

メンバ関数詳解

◆ create()

static Ptr< LargeKinfu > cv::large_kinfu::LargeKinfu::create ( const Ptr< Params > & _params)
static
Python:
cv.large_kinfu.LargeKinfu.create(_params) -> retval
cv.large_kinfu.LargeKinfu_create(_params) -> retval

◆ getCloud()

virtual void cv::large_kinfu::LargeKinfu::getCloud ( OutputArray points,
OutputArray normals ) const
pure virtual
Python:
cv.large_kinfu.LargeKinfu.getCloud([, points[, normals]]) -> points, normals

◆ getNormals()

virtual void cv::large_kinfu::LargeKinfu::getNormals ( InputArray points,
OutputArray normals ) const
pure virtual
Python:
cv.large_kinfu.LargeKinfu.getNormals(points[, normals]) -> normals

◆ getParams()

virtual const Params & cv::large_kinfu::LargeKinfu::getParams ( ) const
pure virtual

◆ getPoints()

virtual void cv::large_kinfu::LargeKinfu::getPoints ( OutputArray points) const
pure virtual
Python:
cv.large_kinfu.LargeKinfu.getPoints([, points]) -> points

◆ getPose()

virtual Affine3f cv::large_kinfu::LargeKinfu::getPose ( ) const
pure virtual

◆ render() [1/2]

virtual void cv::large_kinfu::LargeKinfu::render ( OutputArray image) const
pure virtual
Python:
cv.large_kinfu.LargeKinfu.render([, image]) -> image
cv.large_kinfu.LargeKinfu.render(cameraPose[, image]) -> image

◆ render() [2/2]

virtual void cv::large_kinfu::LargeKinfu::render ( OutputArray image,
const Matx44f & cameraPose ) const
pure virtual
Python:
cv.large_kinfu.LargeKinfu.render([, image]) -> image
cv.large_kinfu.LargeKinfu.render(cameraPose[, image]) -> image

◆ reset()

virtual void cv::large_kinfu::LargeKinfu::reset ( )
pure virtual
Python:
cv.large_kinfu.LargeKinfu.reset() -> None

◆ update()

virtual bool cv::large_kinfu::LargeKinfu::update ( InputArray depth)
pure virtual
Python:
cv.large_kinfu.LargeKinfu.update(depth) -> retval

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