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

此类文档由以下文件生成