#include <sdf_tracker.h>
Public Member Functions | |
virtual Vector6d | EstimatePoseFromDepth (void) |
Estimates the incremental pose change vector from the current pose, relative to the current depth map. | |
virtual Vector6d | EstimatePoseFromPoints (void) |
Estimates the incremental pose change vector from the current pose, relative to the current point vector. | |
virtual void | FuseDepth (void) |
Fuses the current depth map into the TSDF volume, the current depth map is set using UpdateDepth. | |
virtual void | FuseDepth (const cv::Mat &depth) |
Estimates the pose, fuses the given depth map and renders a virtual depth map (all in one) | |
virtual void | FusePoints (void) |
Fuses the current point vector into the TSDF volume, the current point vector is set using UpdatePoints. | |
cv::Mat * | GetCurrentDepthImg () |
Eigen::Matrix4d | GetCurrentTransformation (void) |
gets the current transformation matrix | |
void | GetDenoisedImage (cv::Mat &img) |
gets the denoised image produced by Render. | |
virtual void | LoadSDF (const std::string &filename) |
Loads a volume from a VTK image. The grid is resized to fit the loaded volume. | |
void | MakeTriangles (void) |
Runs the Marching Tetrahedrons algorithm. The result is then available in triangles_. Each three consecutive entries in triangles_ represents one triangle. | |
bool | Quit (void) |
In interactive sessions, this function returns true at any point after a user has pressed "q" or <ESC> in the render window. | |
virtual void | Render (void) |
Render a virtual depth map. If interactive mode is true (see class SDF_Parameters) it will also display a preview window with estimated normal vectors. | |
virtual void | SaveSDF (const std::string &filename=std::string("sdf_volume.vti")) |
Saves the current volume as a VTK image. | |
void | SaveTriangles (const std::string filename=std::string("triangles.obj")) |
Dumps the zero level set as triangles to an OBJ file. SaveTriangles must be preceded by a call to MakeTriangles. | |
void | SaveTrianglesSTL (const std::string filename=std::string("triangles.stl")) |
Dumps the zero level set as triangles to an STL file. This method also computes the triangles so there is no need to call MakeTriangles. | |
virtual double | SDF (const Eigen::Vector4d &location) |
Returns the signed distance at the given location. | |
virtual double | SDFGradient (const Eigen::Vector4d &location, int dim, int stepSize) |
Computes the gradient of the SDF at the location, along dimension dim, with central differences. stepSize chooses how far away from the central cell the samples should be taken before computing the difference. | |
SDFTracker () | |
Constructor with default parameters. | |
SDFTracker (SDF_Parameters ¶meters) | |
Constructor with custom parameters. | |
void | SetCurrentTransformation (const Eigen::Matrix4d &T) |
sets the current transformation to the given matrix | |
Eigen::Vector3d | ShootSingleRay (int row, int col, Eigen::Matrix4d &pose) |
Ray-trace a single ray (for the ray defined by camera pixel x,y?) | |
Eigen::Vector3d | ShootSingleRay (int row, int col) |
Ray-trace a single ray. | |
Eigen::Vector3d | ShootSingleRay (Eigen::Vector3d &start, Eigen::Vector3d &direction) |
Ray-trace a single ray. | |
cv::Point2d | To2D (const Eigen::Vector4d &location, double fx, double fy, double cx, double cy) |
Finds the inverse projection of a 3D point to the image plane, given camera parameters. | |
Eigen::Vector4d | To3D (int row, int column, double depth, double fx, double fy, double cx, double cy) |
Projects a depth map pixel into a 3D point, given camera parameters. | |
Eigen::Matrix4d | Twist (const Vector6d &xi) |
Computes an antisymmetric matrix based on the pose change vector. To get a transformation matrix from this, you have to call Twist(xi).exp(). | |
virtual void | UpdateDepth (const cv::Mat &depth) |
Sets the current depth map. | |
virtual void | UpdatePoints (const std::vector< Eigen::Vector4d, Eigen::aligned_allocator< Eigen::Vector4d > > &Points) |
Alternative to depth maps, sets the current point vector (x y z 1) | |
bool | ValidGradient (const Eigen::Vector4d &location) |
Checks the validity of the gradient of the SDF at the current point. | |
virtual | ~SDFTracker () |
Public Attributes | |
SDF_Parameters | parameters_ |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW std::vector< Eigen::Vector4d > | triangles_ |
Protected Member Functions | |
virtual void | DeleteGrids (void) |
virtual void | Init (SDF_Parameters ¶meters) |
void | MarchingTetrahedrons (Eigen::Vector4d &Origin, int tetrahedron) |
Eigen::Vector4d | VertexInterp (double iso, Eigen::Vector4d &p1d, Eigen::Vector4d &p2d, double valp1, double valp2) |
Protected Attributes | |
std::string | camera_name_ |
Vector6d | cumulative_pose_ |
boost::mutex | depth_mutex_ |
boost::mutex | depthDenoised_mutex_ |
cv::Mat * | depthImage_ |
cv::Mat * | depthImage_denoised_ |
bool | first_frame_ |
std::vector< Eigen::Vector4d, Eigen::aligned_allocator < Eigen::Vector4d > > | interest_points_ |
float *** | myGrid_ |
std::vector< Eigen::Vector4d, Eigen::aligned_allocator < Eigen::Vector4d > > | Points_ |
boost::mutex | points_mutex_ |
Vector6d | Pose_ |
bool | quit_ |
Eigen::Matrix4d | Transformation_ |
boost::mutex | transformation_mutex_ |
std::vector< Eigen::Matrix4d, Eigen::aligned_allocator < Eigen::Matrix4d > > | transformations_ |
bool ** | validityMask_ |
Definition at line 50 of file sdf_tracker.h.
Constructor with default parameters.
Definition at line 51 of file sdf_tracker.cpp.
SDFTracker::SDFTracker | ( | SDF_Parameters & | parameters | ) |
Constructor with custom parameters.
Definition at line 56 of file sdf_tracker.cpp.
SDFTracker::~SDFTracker | ( | ) | [virtual] |
Definition at line 61 of file sdf_tracker.cpp.
void SDFTracker::DeleteGrids | ( | void | ) | [protected, virtual] |
Definition at line 142 of file sdf_tracker.cpp.
Vector6d SDFTracker::EstimatePoseFromDepth | ( | void | ) | [virtual] |
Estimates the incremental pose change vector from the current pose, relative to the current depth map.
Definition at line 1138 of file sdf_tracker.cpp.
Vector6d SDFTracker::EstimatePoseFromPoints | ( | void | ) | [virtual] |
Estimates the incremental pose change vector from the current pose, relative to the current point vector.
Definition at line 1245 of file sdf_tracker.cpp.
void SDFTracker::FuseDepth | ( | void | ) | [virtual] |
Fuses the current depth map into the TSDF volume, the current depth map is set using UpdateDepth.
Definition at line 840 of file sdf_tracker.cpp.
void SDFTracker::FuseDepth | ( | const cv::Mat & | depth | ) | [virtual] |
Estimates the pose, fuses the given depth map and renders a virtual depth map (all in one)
Definition at line 1021 of file sdf_tracker.cpp.
void SDFTracker::FusePoints | ( | void | ) | [virtual] |
Fuses the current point vector into the TSDF volume, the current point vector is set using UpdatePoints.
Definition at line 901 of file sdf_tracker.cpp.
cv::Mat* SDFTracker::GetCurrentDepthImg | ( | ) | [inline] |
Definition at line 161 of file sdf_tracker.h.
Eigen::Matrix4d SDFTracker::GetCurrentTransformation | ( | void | ) |
gets the current transformation matrix
Definition at line 1450 of file sdf_tracker.cpp.
void SDFTracker::GetDenoisedImage | ( | cv::Mat & | img | ) |
gets the denoised image produced by Render.
Definition at line 1436 of file sdf_tracker.cpp.
void SDFTracker::Init | ( | SDF_Parameters & | parameters | ) | [protected, virtual] |
Definition at line 81 of file sdf_tracker.cpp.
void SDFTracker::LoadSDF | ( | const std::string & | filename | ) | [virtual] |
Loads a volume from a VTK image. The grid is resized to fit the loaded volume.
Definition at line 1527 of file sdf_tracker.cpp.
void SDFTracker::MakeTriangles | ( | void | ) |
Runs the Marching Tetrahedrons algorithm. The result is then available in triangles_. Each three consecutive entries in triangles_ represents one triangle.
Definition at line 159 of file sdf_tracker.cpp.
void SDFTracker::MarchingTetrahedrons | ( | Eigen::Vector4d & | Origin, |
int | tetrahedron | ||
) | [protected] |
Definition at line 364 of file sdf_tracker.cpp.
bool SDFTracker::Quit | ( | void | ) |
In interactive sessions, this function returns true at any point after a user has pressed "q" or <ESC> in the render window.
Definition at line 1443 of file sdf_tracker.cpp.
void SDFTracker::Render | ( | void | ) | [virtual] |
Render a virtual depth map. If interactive mode is true (see class SDF_Parameters) it will also display a preview window with estimated normal vectors.
Definition at line 1347 of file sdf_tracker.cpp.
void SDFTracker::SaveSDF | ( | const std::string & | filename = std::string("sdf_volume.vti") | ) | [virtual] |
Saves the current volume as a VTK image.
Definition at line 1467 of file sdf_tracker.cpp.
void SDFTracker::SaveTriangles | ( | const std::string | filename = std::string("triangles.obj") | ) |
Dumps the zero level set as triangles to an OBJ file. SaveTriangles must be preceded by a call to MakeTriangles.
Definition at line 180 of file sdf_tracker.cpp.
void SDFTracker::SaveTrianglesSTL | ( | const std::string | filename = std::string("triangles.stl") | ) |
Dumps the zero level set as triangles to an STL file. This method also computes the triangles so there is no need to call MakeTriangles.
double SDFTracker::SDF | ( | const Eigen::Vector4d & | location | ) | [virtual] |
Returns the signed distance at the given location.
Definition at line 1108 of file sdf_tracker.cpp.
double SDFTracker::SDFGradient | ( | const Eigen::Vector4d & | location, |
int | dim, | ||
int | stepSize | ||
) | [virtual] |
Computes the gradient of the SDF at the location, along dimension dim, with central differences. stepSize chooses how far away from the central cell the samples should be taken before computing the difference.
Definition at line 354 of file sdf_tracker.cpp.
void SDFTracker::SetCurrentTransformation | ( | const Eigen::Matrix4d & | T | ) |
sets the current transformation to the given matrix
Definition at line 1460 of file sdf_tracker.cpp.
Eigen::Vector3d SDFTracker::ShootSingleRay | ( | int | row, |
int | col, | ||
Eigen::Matrix4d & | pose | ||
) |
Ray-trace a single ray (for the ray defined by camera pixel x,y?)
Definition at line 1576 of file sdf_tracker.cpp.
Eigen::Vector3d SDFTracker::ShootSingleRay | ( | int | row, |
int | col | ||
) |
Ray-trace a single ray.
Definition at line 1591 of file sdf_tracker.cpp.
Eigen::Vector3d SDFTracker::ShootSingleRay | ( | Eigen::Vector3d & | start, |
Eigen::Vector3d & | direction | ||
) |
Ray-trace a single ray.
Definition at line 1643 of file sdf_tracker.cpp.
cv::Point2d SDFTracker::To2D | ( | const Eigen::Vector4d & | location, |
double | fx, | ||
double | fy, | ||
double | cx, | ||
double | cy | ||
) |
Finds the inverse projection of a 3D point to the image plane, given camera parameters.
Definition at line 259 of file sdf_tracker.cpp.
Eigen::Vector4d SDFTracker::To3D | ( | int | row, |
int | column, | ||
double | depth, | ||
double | fx, | ||
double | fy, | ||
double | cx, | ||
double | cy | ||
) |
Projects a depth map pixel into a 3D point, given camera parameters.
Definition at line 248 of file sdf_tracker.cpp.
Eigen::Matrix4d SDFTracker::Twist | ( | const Vector6d & | xi | ) |
Computes an antisymmetric matrix based on the pose change vector. To get a transformation matrix from this, you have to call Twist(xi).exp().
Definition at line 235 of file sdf_tracker.cpp.
void SDFTracker::UpdateDepth | ( | const cv::Mat & | depth | ) | [virtual] |
Sets the current depth map.
Definition at line 807 of file sdf_tracker.cpp.
void SDFTracker::UpdatePoints | ( | const std::vector< Eigen::Vector4d, Eigen::aligned_allocator< Eigen::Vector4d > > & | Points | ) | [virtual] |
Alternative to depth maps, sets the current point vector (x y z 1)
Definition at line 831 of file sdf_tracker.cpp.
bool SDFTracker::ValidGradient | ( | const Eigen::Vector4d & | location | ) |
Checks the validity of the gradient of the SDF at the current point.
Definition at line 272 of file sdf_tracker.cpp.
Eigen::Vector4d SDFTracker::VertexInterp | ( | double | iso, |
Eigen::Vector4d & | p1d, | ||
Eigen::Vector4d & | p2d, | ||
double | valp1, | ||
double | valp2 | ||
) | [protected] |
Definition at line 196 of file sdf_tracker.cpp.
std::string SDFTracker::camera_name_ [protected] |
Definition at line 68 of file sdf_tracker.h.
Vector6d SDFTracker::cumulative_pose_ [protected] |
Definition at line 60 of file sdf_tracker.h.
boost::mutex SDFTracker::depth_mutex_ [protected] |
Definition at line 65 of file sdf_tracker.h.
boost::mutex SDFTracker::depthDenoised_mutex_ [protected] |
Definition at line 67 of file sdf_tracker.h.
cv::Mat* SDFTracker::depthImage_ [protected] |
Definition at line 61 of file sdf_tracker.h.
cv::Mat* SDFTracker::depthImage_denoised_ [protected] |
Definition at line 62 of file sdf_tracker.h.
bool SDFTracker::first_frame_ [protected] |
Definition at line 72 of file sdf_tracker.h.
std::vector<Eigen::Vector4d,Eigen::aligned_allocator<Eigen::Vector4d> > SDFTracker::interest_points_ [protected] |
Definition at line 55 of file sdf_tracker.h.
float*** SDFTracker::myGrid_ [protected] |
Definition at line 71 of file sdf_tracker.h.
Definition at line 84 of file sdf_tracker.h.
std::vector<Eigen::Vector4d,Eigen::aligned_allocator<Eigen::Vector4d> > SDFTracker::Points_ [protected] |
Definition at line 56 of file sdf_tracker.h.
boost::mutex SDFTracker::points_mutex_ [protected] |
Definition at line 66 of file sdf_tracker.h.
Vector6d SDFTracker::Pose_ [protected] |
Definition at line 59 of file sdf_tracker.h.
bool SDFTracker::quit_ [protected] |
Definition at line 73 of file sdf_tracker.h.
Eigen::Matrix4d SDFTracker::Transformation_ [protected] |
Definition at line 58 of file sdf_tracker.h.
boost::mutex SDFTracker::transformation_mutex_ [protected] |
Definition at line 64 of file sdf_tracker.h.
std::vector<Eigen::Matrix4d,Eigen::aligned_allocator<Eigen::Matrix4d> > SDFTracker::transformations_ [protected] |
Definition at line 54 of file sdf_tracker.h.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW std::vector<Eigen::Vector4d> SDFTracker::triangles_ |
Definition at line 83 of file sdf_tracker.h.
bool** SDFTracker::validityMask_ [protected] |
Definition at line 70 of file sdf_tracker.h.