|
|
|
@ -47,7 +47,7 @@ |
|
|
|
|
namespace cv |
|
|
|
|
{ |
|
|
|
|
namespace rgbd |
|
|
|
|
{
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
//! @addtogroup rgbd
|
|
|
|
|
//! @{
|
|
|
|
@ -431,7 +431,7 @@ namespace rgbd |
|
|
|
|
/** Method to compute a transformation from the source frame to the destination one.
|
|
|
|
|
* Some odometry algorithms do not used some data of frames (eg. ICP does not use images). |
|
|
|
|
* In such case corresponding arguments can be set as empty Mat. |
|
|
|
|
* The method returns true if all internal computions were possible (e.g. there were enough correspondences,
|
|
|
|
|
* The method returns true if all internal computions were possible (e.g. there were enough correspondences, |
|
|
|
|
* system of equations has a solution, etc) and resulting transformation satisfies some test if it's provided |
|
|
|
|
* by the Odometry inheritor implementation (e.g. thresholds for maximum translation and rotation). |
|
|
|
|
* @param srcImage Image data of the source frame (CV_8UC1) |
|
|
|
@ -466,16 +466,14 @@ namespace rgbd |
|
|
|
|
|
|
|
|
|
static Ptr<Odometry> create(const String & odometryType); |
|
|
|
|
|
|
|
|
|
//TODO: which properties are common for all Odometry successors?
|
|
|
|
|
CV_PURE_PROPERTY_S(cv::Mat, CameraMatrix) |
|
|
|
|
// CV_PURE_PROPERTY(double, MinDepth)
|
|
|
|
|
// CV_PURE_PROPERTY(double, MaxDepth)
|
|
|
|
|
// CV_PURE_PROPERTY(double, MaxDepthDiff)
|
|
|
|
|
// CV_PURE_PROPERTY_S(cv::Mat, IterationCounts)
|
|
|
|
|
// CV_PURE_PROPERTY(double, MaxPointsPart)
|
|
|
|
|
CV_PURE_PROPERTY(int, TransformType) |
|
|
|
|
// CV_PURE_PROPERTY(double, MaxTranslation)
|
|
|
|
|
// CV_PURE_PROPERTY(double, MaxRotation)
|
|
|
|
|
/** @see setCameraMatrix */ |
|
|
|
|
virtual cv::Mat getCameraMatrix() const = 0; |
|
|
|
|
/** @copybrief getCameraMatrix @see getCameraMatrix */ |
|
|
|
|
virtual void setCameraMatrix(const cv::Mat &val) = 0; |
|
|
|
|
/** @see setTransformType */ |
|
|
|
|
virtual int getTransformType() const = 0; |
|
|
|
|
/** @copybrief getTransformType @see getTransformType */ |
|
|
|
|
virtual void setTransformType(int val) = 0; |
|
|
|
|
|
|
|
|
|
protected: |
|
|
|
|
virtual void |
|
|
|
@ -486,7 +484,7 @@ namespace rgbd |
|
|
|
|
const Mat& initRt) const = 0; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** Odometry based on the paper "Real-Time Visual Odometry from Dense RGB-D Images",
|
|
|
|
|
/** Odometry based on the paper "Real-Time Visual Odometry from Dense RGB-D Images",
|
|
|
|
|
* F. Steinbucker, J. Strum, D. Cremers, ICCV, 2011. |
|
|
|
|
*/ |
|
|
|
|
class CV_EXPORTS RgbdOdometry: public Odometry |
|
|
|
@ -546,7 +544,7 @@ namespace rgbd |
|
|
|
|
double maxTranslation, maxRotation; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** Odometry based on the paper "KinectFusion: Real-Time Dense Surface Mapping and Tracking",
|
|
|
|
|
/** Odometry based on the paper "KinectFusion: Real-Time Dense Surface Mapping and Tracking",
|
|
|
|
|
* Richard A. Newcombe, Andrew Fitzgibbon, at al, SIGGRAPH, 2011. |
|
|
|
|
*/ |
|
|
|
|
class ICPOdometry: public Odometry |
|
|
|
@ -669,8 +667,8 @@ namespace rgbd |
|
|
|
|
mutable Ptr<RgbdNormals> normalsComputer; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** Warp the image: compute 3d points from the depth, transform them using given transformation,
|
|
|
|
|
* then project color point cloud to an image plane.
|
|
|
|
|
/** Warp the image: compute 3d points from the depth, transform them using given transformation,
|
|
|
|
|
* then project color point cloud to an image plane. |
|
|
|
|
* This function can be used to visualize results of the Odometry algorithm. |
|
|
|
|
* @param image The image (of CV_8UC1 or CV_8UC3 type) |
|
|
|
|
* @param depth The depth (of type used in depthTo3d fuction) |
|
|
|
|