KinectFusion implementation. More...
#include <opencv2/rgbd/kinfu.hpp>
Public Member Functions | |
virtual | ~KinFu () |
virtual void | getCloud (OutputArray points, OutputArray normals) const =0 |
Gets points and normals of current 3d mesh. | |
virtual void | getNormals (InputArray points, OutputArray normals) const =0 |
Calculates normals for given points. | |
virtual const Params & | getParams () const =0 |
Get current parameters. | |
virtual void | getPoints (OutputArray points) const =0 |
Gets points of current 3d mesh. | |
virtual Affine3f | getPose () const =0 |
Get current pose in voxel space. | |
virtual void | render (OutputArray image) const =0 |
Renders a volume into an image. | |
virtual void | render (OutputArray image, const Matx44f &cameraPose) const =0 |
Renders a volume into an image. | |
virtual void | reset ()=0 |
Resets the algorithm. | |
virtual bool | update (InputArray depth)=0 |
Process next depth frame. | |
Static Public Member Functions | |
static Ptr< KinFu > | create (const Ptr< Params > &_params) |
Detailed Description
KinectFusion implementation.
This class implements a 3d reconstruction algorithm described in [kinectfusion] paper.
It takes a sequence of depth images taken from depth sensor (or any depth images source such as stereo camera matching algorithm or even raymarching renderer). The output can be obtained as a vector of points and their normals or can be Phong-rendered from given camera pose.
An internal representation of a model is a voxel cuboid that keeps TSDF values which are a sort of distances to the surface (for details read the [kinectfusion] article about TSDF). There is no interface to that representation yet.
KinFu uses OpenCL acceleration automatically if available. To enable or disable it explicitly use cv::setUseOptimized() or cv::ocl::setUseOpenCL().
This implementation is based on kinfu-remake.
Note that the KinectFusion algorithm was patented and its use may be restricted by the list of patents mentioned in README.md file in this module directory.
That's why you need to set the OPENCV_ENABLE_NONFREE option in CMake to use KinectFusion.
Constructor & Destructor Documentation
◆ ~KinFu()
|
virtual |
Member Function Documentation
◆ create()
◆ getCloud()
|
pure virtual |
Gets points and normals of current 3d mesh.
The order of normals corresponds to order of points. The order of points is undefined.
- Parameters
-
points vector of points which are 4-float vectors normals vector of normals which are 4-float vectors
◆ getNormals()
|
pure virtual |
Calculates normals for given points.
- Parameters
-
points input vector of points which are 4-float vectors normals output vector of corresponding normals which are 4-float vectors
◆ getParams()
|
pure virtual |
Get current parameters.
◆ getPoints()
|
pure virtual |
Gets points of current 3d mesh.
The order of points is undefined.
- Parameters
-
points vector of points which are 4-float vectors
◆ getPose()
|
pure virtual |
Get current pose in voxel space.
◆ render() [1/2]
|
pure virtual |
◆ render() [2/2]
|
pure virtual |
◆ reset()
|
pure virtual |
Resets the algorithm.
Clears current model and resets a pose.
◆ update()
|
pure virtual |
Process next depth frame.
Integrates depth into voxel space with respect to its ICP-calculated pose. Input image is converted to CV_32F internally if has another type.
- Parameters
-
depth one-channel image which size and depth scale is described in algorithm's parameters
- Returns
- true if succeeded to align new frame with current scene, false if opposite
The documentation for this class was generated from the following file:
- opencv2/rgbd/kinfu.hpp