OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
cv::kinfu::KinFu 类参考抽象类

KinectFusion 实现。 更多…

#include <opencv2/rgbd/kinfu.hpp>

cv::kinfu::KinFu 协作图

公共成员函数

虚函数 ~KinFu ()
 
虚函数 void getCloud (OutputArray points, OutputArray normals) const =0
 获取当前三维网格的点和法向量。
 
虚函数 void getNormals (InputArray points, OutputArray normals) const =0
 计算给定点的法向量。
 
虚函数 const ParamsgetParams () const =0
 获取当前参数。
 
虚函数 void getPoints (OutputArray points) const =0
 获取当前三维网格的点。
 
虚函数 Affine3f getPose () const =0
 获取体素空间中的当前姿态。
 
虚函数 void render (OutputArray image) const =0
 将体积渲染到图像中。
 
虚函数 void render (OutputArray image, const Matx44f &cameraPose) const =0
 将体积渲染到图像中。
 
虚函数 void reset ()=0
 重置算法。
 
虚函数 bool update (InputArray depth)=0
 处理下一个深度帧。
 

静态公共成员函数

静态 Ptr< KinFucreate (const Ptr< Params > &_params)
 

详细描述

KinectFusion 实现。

此类实现了在 [133] 论文中描述的三维重建算法。

它接收从深度传感器(或任何深度图像源,例如立体相机匹配算法甚至光线追踪渲染器)获取的深度图像序列。输出可以作为点及其法向量的向量获得,也可以从给定的相机姿态进行 Phong 渲染。

模型的内部表示是一个体素长方体,它保留 TSDF 值,这些值是一种到表面的距离(有关详细信息,请阅读 [133] 关于 TSDF 的文章)。目前还没有对此表示的接口。

KinFu 如果可用,会自动使用 OpenCL 加速。要显式启用或禁用它,请使用 cv::setUseOptimized()cv::ocl::setUseOpenCL()

此实现基于 kinfu-remake

请注意,KinectFusion 算法已获得专利,其使用可能受本模块目录中 README.md 文件中提到的专利列表的限制。

这就是为什么你需要在 CMake 中设置 OPENCV_ENABLE_NONFREE 选项才能使用 KinectFusion。

构造函数和析构函数文档

◆ ~KinFu()

virtual cv::kinfu::KinFu::~KinFu ( )
虚函数

成员函数文档

◆ create()

静态 Ptr< KinFu > cv::kinfu::KinFu::create ( const Ptr< Params > & _params)
静态
Python
cv.kinfu.KinFu.create(_params) -> 返回值
cv.kinfu.KinFu_create(_params) -> 返回值

◆ getCloud()

virtual void cv::kinfu::KinFu::getCloud ( OutputArray points,
OutputArray normals ) const
纯虚函数
Python
cv.kinfu.KinFu.getCloud([, points[, normals]]) -> points, normals

获取当前三维网格的点和法向量。

法向量的顺序与点的顺序对应。点的顺序未定义。

参数
points4 个浮点数构成的向量,表示点
normals4 个浮点数构成的向量,表示法向量

◆ getNormals()

virtual void cv::kinfu::KinFu::getNormals ( InputArray points,
OutputArray normals ) const
纯虚函数
Python
cv.kinfu.KinFu.getNormals(points[, normals]) -> normals

计算给定点的法向量。

参数
points4 个浮点数构成的输入点向量
normals4 个浮点数构成的对应法向量输出向量

◆ 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

获取当前三维网格的点。

点的顺序未定义。

参数
points4 个浮点数构成的向量,表示点

◆ 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 depth)
纯虚函数
Python
cv.kinfu.KinFu.update(depth) -> 返回值

处理下一个深度帧。

根据其 ICP 计算的姿态将深度集成到体素空间中。如果输入图像具有其他类型,则会在内部转换为 CV_32F。

参数
depth单通道图像,其大小和深度比例在算法参数中描述
返回值
如果成功将新帧与当前场景对齐,则为真;否则为假。

此类的文档是从以下文件生成的: