OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::kinfu::KinFu 類參考抽象類

KinectFusion 實現。更多...

#include <opencv2/rgbd/kinfu.hpp>

cv::kinfu::KinFu 的協作圖

公共成員函式

virtual ~KinFu ()
 
virtual void getCloud (OutputArray points, OutputArray normals) const =0
 獲取當前 3d 網格的點和法線。
 
virtual void getNormals (InputArray points, OutputArray normals) const =0
 計算給定點的法線。
 
virtual const ParamsgetParams () const =0
 獲取當前引數。
 
virtual void getPoints (OutputArray points) const =0
 獲取當前 3D 網格的點。
 
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< KinFucreate (const Ptr< Params > &_params)
 

詳細描述

KinectFusion 實現。

此類實現了 [136] 論文中描述的 3d 重建演算法。

它接受從深度感測器獲取的一系列深度影像(或任何深度影像源,例如立體相機匹配演算法,甚至光線步進渲染器)。 輸出可以作為點向量及其法線獲得,或者可以從給定的相機姿勢進行 Phong 渲染。

模型的內部表示是一個體素長方體,它儲存 TSDF 值,TSDF 值是到表面的距離的一種形式(有關詳細資訊,請閱讀有關 TSDF 的 [136] 文章)。 目前還沒有該表示的介面。

如果可用,KinFu 會自動使用 OpenCL 加速。 要顯式啟用或停用它,請使用 cv::setUseOptimized()cv::ocl::setUseOpenCL()

此實現基於 kinfu-remake

請注意,KinectFusion 演算法已獲得專利,其使用可能受到本模組目錄中的 README.md 檔案中提到的專利列表的限制。

這就是為什麼您需要在 CMake 中設定 OPENCV_ENABLE_NONFREE 選項才能使用 KinectFusion。

建構函式 & 解構函式文件

◆ ~KinFu()

virtual cv::kinfu::KinFu::~KinFu ( )
virtual

成員函式文件

◆ create()

static Ptr< KinFu > cv::kinfu::KinFu::create ( const Ptr< Params > & _params)
static
Python
cv.kinfu.KinFu.create(_params) -> retval
cv.kinfu.KinFu_create(_params) -> retval

◆ getCloud()

virtual void cv::kinfu::KinFu::getCloud ( OutputArray points,
OutputArray normals ) const
純虛擬函式
Python
cv.kinfu.KinFu.getCloud([, points[, normals]]) -> points, normals

獲取當前 3d 網格的點和法線。

法線的順序對應於點的順序。 點的順序未定義。

引數
points點向量,為 4 浮點向量
normals法線向量,為 4 浮點向量

◆ getNormals()

virtual void cv::kinfu::KinFu::getNormals ( InputArray points,
OutputArray normals ) const
純虛擬函式
Python
cv.kinfu.KinFu.getNormals(points[, normals]) -> normals

計算給定點的法線。

引數
points輸入點向量,為 4 浮點向量
normals輸出對應法線向量,為 4 浮點向量

◆ getParams()

virtual const Params & cv::kinfu::KinFu::getParams ( ) const
純虛擬函式

獲取當前引數。

◆ getPoints()

virtual void cv::kinfu::KinFu::getPoints ( OutputArray points) const
純虛擬函式
Python
cv.kinfu.KinFu.getPoints([, points]) -> points

獲取當前 3D 網格的點。

點的順序未定義。

引數
points點向量,為 4 浮點向量

◆ getPose()

virtual Affine3f cv::kinfu::KinFu::getPose ( ) const
純虛擬函式

獲取體素空間中的當前姿態。

◆ render() [1/2]

virtual void cv::kinfu::KinFu::render ( OutputArray image) const
純虛擬函式
Python
cv.kinfu.KinFu.render([, image]) -> image
cv.kinfu.KinFu.render(cameraPose[, image]) -> image

將體資料渲染為影像。

使用 Phong 著色將 TSDF 的 0 表面渲染到 CV_8UC4 Mat 中。 光源姿勢固定在 KinFu 引數中。

引數
image結果影像

◆ render() [2/2]

virtual void cv::kinfu::KinFu::render ( OutputArray image,
const Matx44f & cameraPose ) const
純虛擬函式
Python
cv.kinfu.KinFu.render([, image]) -> image
cv.kinfu.KinFu.render(cameraPose[, image]) -> image

將體資料渲染為影像。

使用 Phong 著色將 TSDF 的 0 表面渲染到 CV_8UC4 Mat 中。 光源姿勢固定在 KinFu 引數中。

引數
image結果影像
cameraPose從中渲染的相機姿勢。 如果為空,則從當前姿勢渲染,當前姿勢是最後一幀相機姿勢。

◆ reset()

virtual void cv::kinfu::KinFu::reset ( )
純虛擬函式
Python
cv.kinfu.KinFu.reset() ->

重置演算法。

清除當前模型並重置姿態。

◆ update()

virtual bool cv::kinfu::KinFu::update ( InputArray 深度)
純虛擬函式
Python
cv.kinfu.KinFu.update(深度) -> retval

處理下一深度幀。

將深度積分到體素空間中,並考慮其 ICP 計算的姿勢。 如果輸入影像具有另一種型別,則在內部將其轉換為 CV_32F。

引數
深度單通道影像,其大小和深度比例在演算法引數中描述
返回
如果成功對齊新幀與當前場景,則為 true,如果相反,則為 false

此類文件由以下檔案生成