OpenCV  4.10.0
开源计算机视觉库
正在加载...
正在搜索...
无匹配项
公共成员函数 | 静态公共成员函数 | 所有成员列表
cv::kinfu::KinFu 类参考abstract

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 实现。

此类实现了一种 3D 重建算法,如 [134] 论文中所述。

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

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

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() -> None

重置算法。

清除当前模型并重置姿态。

◆ update()

virtual bool cv::kinfu::KinFu::update ( InputArray  depth)
纯虚函数
Python
cv.kinfu.KinFu.update(depth) -> retval

处理下一帧深度图像。

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

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

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