@ -104,12 +104,14 @@ namespace rgbd
* ` ` Gradient Response Maps for Real - Time Detection of Texture - Less Objects ` `
* by S . Hinterstoisser , C . Cagniart , S . Ilic , P . Sturm , N . Navab , P . Fua , and V . Lepetit
*/
class CV_EXPORTS RgbdNormals : public Algorithm
class CV_EXPORTS_W RgbdNormals : public Algorithm
{
public :
enum RGBD_NORMALS_METHOD
{
RGBD_NORMALS_METHOD_FALS , RGBD_NORMALS_METHOD_LINEMOD , RGBD_NORMALS_METHOD_SRI
RGBD_NORMALS_METHOD_FALS = 0 ,
RGBD_NORMALS_METHOD_LINEMOD = 1 ,
RGBD_NORMALS_METHOD_SRI = 2
} ;
RgbdNormals ( )
@ -133,10 +135,13 @@ namespace rgbd
* @ param method one of the methods to use : RGBD_NORMALS_METHOD_SRI , RGBD_NORMALS_METHOD_FALS
*/
RgbdNormals ( int rows , int cols , int depth , InputArray K , int window_size = 5 , int method =
RGBD_NORMALS_METHOD_FALS ) ;
RgbdNormals : : R GBD_NORMALS_METHOD_FALS ) ;
~ RgbdNormals ( ) ;
CV_WRAP static Ptr < RgbdNormals > create ( int rows , int cols , int depth , InputArray K , int window_size = 5 , int method =
RgbdNormals : : RGBD_NORMALS_METHOD_FALS ) ;
/** Given a set of 3d points in a depth image, compute the normals at each point.
* @ param points a rows x cols x 3 matrix of CV_32F / CV64F or a rows x cols x 1 CV_U16S
* @ param normals a rows x cols x 3 matrix
@ -147,54 +152,54 @@ namespace rgbd
/** Initializes some data that is cached for later computation
* If that function is not called , it will be called the first time normals are computed
*/
void
CV_WRAP void
initialize ( ) const ;
int getRows ( ) const
CV_WRAP int getRows ( ) const
{
return rows_ ;
}
void setRows ( int val )
CV_WRAP void setRows ( int val )
{
rows_ = val ;
}
int getCols ( ) const
CV_WRAP int getCols ( ) const
{
return cols_ ;
}
void setCols ( int val )
CV_WRAP void setCols ( int val )
{
cols_ = val ;
}
int getWindowSize ( ) const
CV_WRAP int getWindowSize ( ) const
{
return window_size_ ;
}
void setWindowSize ( int val )
CV_WRAP void setWindowSize ( int val )
{
window_size_ = val ;
}
int getDepth ( ) const
CV_WRAP int getDepth ( ) const
{
return depth_ ;
}
void setDepth ( int val )
CV_WRAP void setDepth ( int val )
{
depth_ = val ;
}
cv : : Mat getK ( ) const
CV_WRAP cv : : Mat getK ( ) const
{
return K_ ;
}
void setK ( const cv : : Mat & val )
CV_WRAP void setK ( const cv : : Mat & val )
{
K_ = val ;
}
int getMethod ( ) const
CV_WRAP int getMethod ( ) const
{
return method_ ;
}
void setMethod ( int val )
CV_WRAP void setMethod ( int val )
{
method_ = val ;
}
@ -212,7 +217,7 @@ namespace rgbd
/** Object that can clean a noisy depth image
*/
class CV_EXPORTS DepthCleaner : public Algorithm
class CV_EXPORTS_W DepthCleaner : public Algorithm
{
public :
/** NIL method is from
@ -238,10 +243,12 @@ namespace rgbd
* @ param window_size the window size to compute the normals : can only be 1 , 3 , 5 or 7
* @ param method one of the methods to use : RGBD_NORMALS_METHOD_SRI , RGBD_NORMALS_METHOD_FALS
*/
DepthCleaner ( int depth , int window_size = 5 , int method = DEPTH_CLEANER_NIL ) ;
DepthCleaner ( int depth , int window_size = 5 , int method = DepthCleaner : : D EPTH_CLEANER_NIL ) ;
~ DepthCleaner ( ) ;
CV_WRAP static Ptr < DepthCleaner > create ( int depth , int window_size = 5 , int method = DepthCleaner : : DEPTH_CLEANER_NIL ) ;
/** Given a set of 3d points in a depth image, compute the normals at each point.
* @ param points a rows x cols x 3 matrix of CV_32F / CV64F or a rows x cols x 1 CV_U16S
* @ param depth a rows x cols matrix of the cleaned up depth
@ -252,30 +259,30 @@ namespace rgbd
/** Initializes some data that is cached for later computation
* If that function is not called , it will be called the first time normals are computed
*/
void
CV_WRAP void
initialize ( ) const ;
int getWindowSize ( ) const
CV_WRAP int getWindowSize ( ) const
{
return window_size_ ;
}
void setWindowSize ( int val )
CV_WRAP void setWindowSize ( int val )
{
window_size_ = val ;
}
int getDepth ( ) const
CV_WRAP int getDepth ( ) const
{
return depth_ ;
}
void setDepth ( int val )
CV_WRAP void setDepth ( int val )
{
depth_ = val ;
}
int getMethod ( ) const
CV_WRAP int getMethod ( ) const
{
return method_ ;
}
void setMethod ( int val )
CV_WRAP void setMethod ( int val )
{
method_ = val ;
}
@ -309,7 +316,7 @@ namespace rgbd
* @ param registeredDepth the result of transforming the depth into the external camera
* @ param depthDilation whether or not the depth is dilated to avoid holes and occlusion errors ( optional )
*/
CV_EXPORTS
CV_EXPORTS_W
void
registerDepth ( InputArray unregisteredCameraMatrix , InputArray registeredCameraMatrix , InputArray registeredDistCoeffs ,
InputArray Rt , InputArray unregisteredDepth , const Size & outputImagePlaneSize ,
@ -321,7 +328,7 @@ namespace rgbd
* @ param in_points the list of xy coordinates
* @ param points3d the resulting 3 d points
*/
CV_EXPORTS
CV_EXPORTS_W
void
depthTo3dSparse ( InputArray depth , InputArray in_K , InputArray in_points , OutputArray points3d ) ;
@ -346,13 +353,13 @@ namespace rgbd
* @ param depth the desired output depth ( floats or double )
* @ param out The rescaled float depth image
*/
CV_EXPORTS
CV_EXPORTS_W
void
rescaleDepth ( InputArray in , int depth , OutputArray out ) ;
/** Object that can compute planes in an image
*/
class CV_EXPORTS RgbdPlane : public Algorithm
class CV_EXPORTS_W RgbdPlane : public Algorithm
{
public :
enum RGBD_PLANE_METHOD
@ -360,7 +367,7 @@ namespace rgbd
RGBD_PLANE_METHOD_DEFAULT
} ;
RgbdPlane ( RGBD_PLANE_METHOD method = RGBD_PLANE_METHOD_DEFAULT )
RgbdPlane ( int method = RgbdPlane : : RGBD_PLANE_METHOD_DEFAULT )
:
method_ ( method ) ,
block_size_ ( 40 ) ,
@ -393,59 +400,59 @@ namespace rgbd
void
operator ( ) ( InputArray points3d , OutputArray mask , OutputArray plane_coefficients ) ;
int getBlockSize ( ) const
CV_WRAP int getBlockSize ( ) const
{
return block_size_ ;
}
void setBlockSize ( int val )
CV_WRAP void setBlockSize ( int val )
{
block_size_ = val ;
}
int getMinSize ( ) const
CV_WRAP int getMinSize ( ) const
{
return min_size_ ;
}
void setMinSize ( int val )
CV_WRAP void setMinSize ( int val )
{
min_size_ = val ;
}
int getMethod ( ) const
CV_WRAP int getMethod ( ) const
{
return method_ ;
}
void setMethod ( int val )
CV_WRAP void setMethod ( int val )
{
method_ = val ;
}
double getThreshold ( ) const
CV_WRAP double getThreshold ( ) const
{
return threshold_ ;
}
void setThreshold ( double val )
CV_WRAP void setThreshold ( double val )
{
threshold_ = val ;
}
double getSensorErrorA ( ) const
CV_WRAP double getSensorErrorA ( ) const
{
return sensor_error_a_ ;
}
void setSensorErrorA ( double val )
CV_WRAP void setSensorErrorA ( double val )
{
sensor_error_a_ = val ;
}
double getSensorErrorB ( ) const
CV_WRAP double getSensorErrorB ( ) const
{
return sensor_error_b_ ;
}
void setSensorErrorB ( double val )
CV_WRAP void setSensorErrorB ( double val )
{
sensor_error_b_ = val ;
}
double getSensorErrorC ( ) const
CV_WRAP double getSensorErrorC ( ) const
{
return sensor_error_c_ ;
}
void setSensorErrorC ( double val )
CV_WRAP void setSensorErrorC ( double val )
{
sensor_error_c_ = val ;
}
@ -465,27 +472,29 @@ namespace rgbd
/** Object that contains a frame data.
*/
struct CV_EXPORTS RgbdFrame
struct CV_EXPORTS_W RgbdFrame
{
RgbdFrame ( ) ;
RgbdFrame ( const Mat & image , const Mat & depth , const Mat & mask = Mat ( ) , const Mat & normals = Mat ( ) , int ID = - 1 ) ;
virtual ~ RgbdFrame ( ) ;
virtual void
CV_WRAP static Ptr < RgbdFrame > create ( const Mat & image = Mat ( ) , const Mat & depth = Mat ( ) , const Mat & mask = Mat ( ) , const Mat & normals = Mat ( ) , int ID = - 1 ) ;
CV_WRAP virtual void
release ( ) ;
int ID ;
Mat image ;
Mat depth ;
Mat mask ;
Mat normals ;
CV_PROP int ID ;
CV_PROP Mat image ;
CV_PROP Mat depth ;
CV_PROP Mat mask ;
CV_PROP Mat normals ;
} ;
/** Object that contains a frame data that is possibly needed for the Odometry.
* It ' s used for the efficiency ( to pass precomputed / cached data of the frame that participates
* in the Odometry processing several times ) .
*/
struct CV_EXPORTS OdometryFrame : public RgbdFrame
struct CV_EXPORTS_W OdometryFrame : public RgbdFrame
{
/** These constants are used to set a type of cache which has to be prepared depending on the frame role:
* srcFrame or dstFrame ( see compute method of the Odometry class ) . For the srcFrame and dstFrame different cache data may be required ,
@ -502,29 +511,31 @@ namespace rgbd
OdometryFrame ( ) ;
OdometryFrame ( const Mat & image , const Mat & depth , const Mat & mask = Mat ( ) , const Mat & normals = Mat ( ) , int ID = - 1 ) ;
virtual void
CV_WRAP static Ptr < OdometryFrame > create ( const Mat & image = Mat ( ) , const Mat & depth = Mat ( ) , const Mat & mask = Mat ( ) , const Mat & normals = Mat ( ) , int ID = - 1 ) ;
CV_WRAP virtual void
release ( ) ;
void
CV_WRAP void
releasePyramids ( ) ;
std : : vector < Mat > pyramidImage ;
std : : vector < Mat > pyramidDepth ;
std : : vector < Mat > pyramidMask ;
CV_PROP std : : vector < Mat > pyramidImage ;
CV_PROP std : : vector < Mat > pyramidDepth ;
CV_PROP std : : vector < Mat > pyramidMask ;
std : : vector < Mat > pyramidCloud ;
CV_PROP std : : vector < Mat > pyramidCloud ;
std : : vector < Mat > pyramid_dI_dx ;
std : : vector < Mat > pyramid_dI_dy ;
std : : vector < Mat > pyramidTexturedMask ;
CV_PROP std : : vector < Mat > pyramid_dI_dx ;
CV_PROP std : : vector < Mat > pyramid_dI_dy ;
CV_PROP std : : vector < Mat > pyramidTexturedMask ;
std : : vector < Mat > pyramidNormals ;
std : : vector < Mat > pyramidNormalsMask ;
CV_PROP std : : vector < Mat > pyramidNormals ;
CV_PROP std : : vector < Mat > pyramidNormalsMask ;
} ;
/** Base class for computation of odometry.
*/
class CV_EXPORTS Odometry : public Algorithm
class CV_EXPORTS_W Odometry : public Algorithm
{
public :
@ -534,32 +545,32 @@ namespace rgbd
ROTATION = 1 , TRANSLATION = 2 , RIGID_BODY_MOTION = 4
} ;
static inline float
CV_WRAP static inline float
DEFAULT_MIN_DEPTH ( )
{
return 0.f ; // in meters
}
static inline float
CV_WRAP static inline float
DEFAULT_MAX_DEPTH ( )
{
return 4.f ; // in meters
}
static inline float
CV_WRAP static inline float
DEFAULT_MAX_DEPTH_DIFF ( )
{
return 0.07f ; // in meters
}
static inline float
CV_WRAP static inline float
DEFAULT_MAX_POINTS_PART ( )
{
return 0.07f ; // in [0, 1]
}
static inline float
CV_WRAP static inline float
DEFAULT_MAX_TRANSLATION ( )
{
return 0.15f ; // in meters
}
static inline float
CV_WRAP static inline float
DEFAULT_MAX_ROTATION ( )
{
return 15 ; // in degrees
@ -583,15 +594,15 @@ namespace rgbd
Rt is 4 x4 matrix of CV_64FC1 type .
* @ param initRt Initial transformation from the source frame to the destination one ( optional )
*/
bool
CV_WRAP bool
compute ( const Mat & srcImage , const Mat & srcDepth , const Mat & srcMask , const Mat & dstImage , const Mat & dstDepth ,
const Mat & dstMask , Mat & Rt , const Mat & initRt = Mat ( ) ) const ;
const Mat & dstMask , OutputArray Rt , const Mat & initRt = Mat ( ) ) const ;
/** One more method to compute a transformation from the source frame to the destination one.
* It is designed to save on computing the frame data ( image pyramids , normals , etc . ) .
*/
bool
compute ( Ptr < OdometryFrame > & srcFrame , Ptr < OdometryFrame > & dstFrame , Mat & Rt , const Mat & initRt = Mat ( ) ) const ;
CV_WRAP_AS ( compute2 ) bool
compute ( Ptr < OdometryFrame > & srcFrame , Ptr < OdometryFrame > & dstFrame , OutputArray Rt , const Mat & initRt = Mat ( ) ) const ;
/** Prepare a cache for the frame. The function checks the precomputed/passed data (throws the error if this data
* does not satisfy ) and computes all remaining cache data needed for the frame . Returned size is a resolution
@ -599,32 +610,32 @@ namespace rgbd
* @ param frame The odometry which will process the frame .
* @ param cacheType The cache type : CACHE_SRC , CACHE_DST or CACHE_ALL .
*/
virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
CV_WRAP virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
static Ptr < Odometry > create ( const String & odometryType ) ;
CV_WRAP static Ptr < Odometry > create ( const String & odometryType ) ;
/** @see setCameraMatrix */
virtual cv : : Mat getCameraMatrix ( ) const = 0 ;
CV_WRAP virtual cv : : Mat getCameraMatrix ( ) const = 0 ;
/** @copybrief getCameraMatrix @see getCameraMatrix */
virtual void setCameraMatrix ( const cv : : Mat & val ) = 0 ;
CV_WRAP virtual void setCameraMatrix ( const cv : : Mat & val ) = 0 ;
/** @see setTransformType */
virtual int getTransformType ( ) const = 0 ;
CV_WRAP virtual int getTransformType ( ) const = 0 ;
/** @copybrief getTransformType @see getTransformType */
virtual void setTransformType ( int val ) = 0 ;
CV_WRAP virtual void setTransformType ( int val ) = 0 ;
protected :
virtual void
checkParams ( ) const = 0 ;
virtual bool
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , Mat & Rt ,
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , OutputArray Rt ,
const Mat & initRt ) const = 0 ;
} ;
/** 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
class CV_EXPORTS_W RgbdOdometry : public Odometry
{
public :
RgbdOdometry ( ) ;
@ -640,90 +651,95 @@ namespace rgbd
* @ param maxPointsPart The method uses a random pixels subset of size frameWidth x frameHeight x pointsPart
* @ param transformType Class of transformation
*/
RgbdOdometry ( const Mat & cameraMatrix , float minDepth = DEFAULT_MIN_DEPTH ( ) , float maxDepth = DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = DEFAULT_MAX_DEPTH_DIFF ( ) , const std : : vector < int > & iterCounts = std : : vector < int > ( ) ,
const std : : vector < float > & minGradientMagnitudes = std : : vector < float > ( ) , float maxPointsPart = DEFAULT_MAX_POINTS_PART ( ) ,
int transformType = RIGID_BODY_MOTION ) ;
RgbdOdometry ( const Mat & cameraMatrix , float minDepth = Odometry : : DEFAULT_MIN_DEPTH ( ) , float maxDepth = Odometry : : DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = Odometry : : DEFAULT_MAX_DEPTH_DIFF ( ) , const std : : vector < int > & iterCounts = std : : vector < int > ( ) ,
const std : : vector < float > & minGradientMagnitudes = std : : vector < float > ( ) , float maxPointsPart = Odometry : : DEFAULT_MAX_POINTS_PART ( ) ,
int transformType = Odometry : : RIGID_BODY_MOTION ) ;
CV_WRAP static Ptr < RgbdOdometry > create ( const Mat & cameraMatrix = Mat ( ) , float minDepth = Odometry : : DEFAULT_MIN_DEPTH ( ) , float maxDepth = Odometry : : DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = Odometry : : DEFAULT_MAX_DEPTH_DIFF ( ) , const std : : vector < int > & iterCounts = std : : vector < int > ( ) ,
const std : : vector < float > & minGradientMagnitudes = std : : vector < float > ( ) , float maxPointsPart = Odometry : : DEFAULT_MAX_POINTS_PART ( ) ,
int transformType = Odometry : : RIGID_BODY_MOTION ) ;
virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
CV_WRAP virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
cv : : Mat getCameraMatrix ( ) const
CV_WRAP cv : : Mat getCameraMatrix ( ) const
{
return cameraMatrix ;
}
void setCameraMatrix ( const cv : : Mat & val )
CV_WRAP void setCameraMatrix ( const cv : : Mat & val )
{
cameraMatrix = val ;
}
double getMinDepth ( ) const
CV_WRAP double getMinDepth ( ) const
{
return minDepth ;
}
void setMinDepth ( double val )
CV_WRAP void setMinDepth ( double val )
{
minDepth = val ;
}
double getMaxDepth ( ) const
CV_WRAP double getMaxDepth ( ) const
{
return maxDepth ;
}
void setMaxDepth ( double val )
CV_WRAP void setMaxDepth ( double val )
{
maxDepth = val ;
}
double getMaxDepthDiff ( ) const
CV_WRAP double getMaxDepthDiff ( ) const
{
return maxDepthDiff ;
}
void setMaxDepthDiff ( double val )
CV_WRAP void setMaxDepthDiff ( double val )
{
maxDepthDiff = val ;
}
cv : : Mat getIterationCounts ( ) const
CV_WRAP cv : : Mat getIterationCounts ( ) const
{
return iterCounts ;
}
void setIterationCounts ( const cv : : Mat & val )
CV_WRAP void setIterationCounts ( const cv : : Mat & val )
{
iterCounts = val ;
}
cv : : Mat getMinGradientMagnitudes ( ) const
CV_WRAP cv : : Mat getMinGradientMagnitudes ( ) const
{
return minGradientMagnitudes ;
}
void setMinGradientMagnitudes ( const cv : : Mat & val )
CV_WRAP void setMinGradientMagnitudes ( const cv : : Mat & val )
{
minGradientMagnitudes = val ;
}
double getMaxPointsPart ( ) const
CV_WRAP double getMaxPointsPart ( ) const
{
return maxPointsPart ;
}
void setMaxPointsPart ( double val )
CV_WRAP void setMaxPointsPart ( double val )
{
maxPointsPart = val ;
}
int getTransformType ( ) const
CV_WRAP int getTransformType ( ) const
{
return transformType ;
}
void setTransformType ( int val )
CV_WRAP void setTransformType ( int val )
{
transformType = val ;
}
double getMaxTranslation ( ) const
CV_WRAP double getMaxTranslation ( ) const
{
return maxTranslation ;
}
void setMaxTranslation ( double val )
CV_WRAP void setMaxTranslation ( double val )
{
maxTranslation = val ;
}
double getMaxRotation ( ) const
CV_WRAP double getMaxRotation ( ) const
{
return maxRotation ;
}
void setMaxRotation ( double val )
CV_WRAP void setMaxRotation ( double val )
{
maxRotation = val ;
}
@ -733,7 +749,7 @@ namespace rgbd
checkParams ( ) const ;
virtual bool
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , Mat & Rt ,
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , OutputArray Rt ,
const Mat & initRt ) const ;
// Some params have commented desired type. It's due to AlgorithmInfo::addParams does not support it now.
@ -754,7 +770,7 @@ namespace rgbd
/** 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
class CV_EXPORTS_W ICPOdometry : public Odometry
{
public :
ICPOdometry ( ) ;
@ -768,85 +784,89 @@ namespace rgbd
* @ param iterCounts Count of iterations on each pyramid level .
* @ param transformType Class of trasformation
*/
ICPOdometry ( const Mat & cameraMatrix , float minDepth = DEFAULT_MIN_DEPTH ( ) , float maxDepth = DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = DEFAULT_MAX_DEPTH_DIFF ( ) , float maxPointsPart = DEFAULT_MAX_POINTS_PART ( ) ,
const std : : vector < int > & iterCounts = std : : vector < int > ( ) , int transformType = RIGID_BODY_MOTION ) ;
ICPOdometry ( const Mat & cameraMatrix , float minDepth = Odometry : : DEFAULT_MIN_DEPTH ( ) , float maxDepth = Odometry : : DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = Odometry : : DEFAULT_MAX_DEPTH_DIFF ( ) , float maxPointsPart = Odometry : : DEFAULT_MAX_POINTS_PART ( ) ,
const std : : vector < int > & iterCounts = std : : vector < int > ( ) , int transformType = Odometry : : RIGID_BODY_MOTION ) ;
virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
CV_WRAP static Ptr < ICPOdometry > create ( const Mat & cameraMatrix = Mat ( ) , float minDepth = Odometry : : DEFAULT_MIN_DEPTH ( ) , float maxDepth = Odometry : : DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = Odometry : : DEFAULT_MAX_DEPTH_DIFF ( ) , float maxPointsPart = Odometry : : DEFAULT_MAX_POINTS_PART ( ) ,
const std : : vector < int > & iterCounts = std : : vector < int > ( ) , int transformType = Odometry : : RIGID_BODY_MOTION ) ;
cv : : Mat getCameraMatrix ( ) const
CV_WRAP virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
CV_WRAP cv : : Mat getCameraMatrix ( ) const
{
return cameraMatrix ;
}
void setCameraMatrix ( const cv : : Mat & val )
CV_WRAP void setCameraMatrix ( const cv : : Mat & val )
{
cameraMatrix = val ;
}
double getMinDepth ( ) const
CV_WRAP double getMinDepth ( ) const
{
return minDepth ;
}
void setMinDepth ( double val )
CV_WRAP void setMinDepth ( double val )
{
minDepth = val ;
}
double getMaxDepth ( ) const
CV_WRAP double getMaxDepth ( ) const
{
return maxDepth ;
}
void setMaxDepth ( double val )
CV_WRAP void setMaxDepth ( double val )
{
maxDepth = val ;
}
double getMaxDepthDiff ( ) const
CV_WRAP double getMaxDepthDiff ( ) const
{
return maxDepthDiff ;
}
void setMaxDepthDiff ( double val )
CV_WRAP void setMaxDepthDiff ( double val )
{
maxDepthDiff = val ;
}
cv : : Mat getIterationCounts ( ) const
CV_WRAP cv : : Mat getIterationCounts ( ) const
{
return iterCounts ;
}
void setIterationCounts ( const cv : : Mat & val )
CV_WRAP void setIterationCounts ( const cv : : Mat & val )
{
iterCounts = val ;
}
double getMaxPointsPart ( ) const
CV_WRAP double getMaxPointsPart ( ) const
{
return maxPointsPart ;
}
void setMaxPointsPart ( double val )
CV_WRAP void setMaxPointsPart ( double val )
{
maxPointsPart = val ;
}
int getTransformType ( ) const
CV_WRAP int getTransformType ( ) const
{
return transformType ;
}
void setTransformType ( int val )
CV_WRAP void setTransformType ( int val )
{
transformType = val ;
}
double getMaxTranslation ( ) const
CV_WRAP double getMaxTranslation ( ) const
{
return maxTranslation ;
}
void setMaxTranslation ( double val )
CV_WRAP void setMaxTranslation ( double val )
{
maxTranslation = val ;
}
double getMaxRotation ( ) const
CV_WRAP double getMaxRotation ( ) const
{
return maxRotation ;
}
void setMaxRotation ( double val )
CV_WRAP void setMaxRotation ( double val )
{
maxRotation = val ;
}
Ptr < RgbdNormals > getNormalsComputer ( ) const
CV_WRAP Ptr < RgbdNormals > getNormalsComputer ( ) const
{
return normalsComputer ;
}
@ -856,7 +876,7 @@ namespace rgbd
checkParams ( ) const ;
virtual bool
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , Mat & Rt ,
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , OutputArray Rt ,
const Mat & initRt ) const ;
// Some params have commented desired type. It's due to AlgorithmInfo::addParams does not support it now.
@ -878,7 +898,7 @@ namespace rgbd
/** Odometry that merges RgbdOdometry and ICPOdometry by minimize sum of their energy functions.
*/
class RgbdICPOdometry : public Odometry
class CV_EXPORTS_W RgbdICPOdometry : public Odometry
{
public :
RgbdICPOdometry ( ) ;
@ -894,95 +914,101 @@ namespace rgbd
* if they have gradient magnitude less than minGradientMagnitudes [ level ] .
* @ param transformType Class of trasformation
*/
RgbdICPOdometry ( const Mat & cameraMatrix , float minDepth = DEFAULT_MIN_DEPTH ( ) , float maxDepth = DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = DEFAULT_MAX_DEPTH_DIFF ( ) , float maxPointsPart = DEFAULT_MAX_POINTS_PART ( ) ,
RgbdICPOdometry ( const Mat & cameraMatrix , float minDepth = Odometry : : DEFAULT_MIN_DEPTH ( ) , float maxDepth = Odometry : : DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = Odometry : : DEFAULT_MAX_DEPTH_DIFF ( ) , float maxPointsPart = Odometry : : DEFAULT_MAX_POINTS_PART ( ) ,
const std : : vector < int > & iterCounts = std : : vector < int > ( ) ,
const std : : vector < float > & minGradientMagnitudes = std : : vector < float > ( ) ,
int transformType = Odometry : : RIGID_BODY_MOTION ) ;
CV_WRAP static Ptr < RgbdICPOdometry > create ( const Mat & cameraMatrix = Mat ( ) , float minDepth = Odometry : : DEFAULT_MIN_DEPTH ( ) , float maxDepth = Odometry : : DEFAULT_MAX_DEPTH ( ) ,
float maxDepthDiff = Odometry : : DEFAULT_MAX_DEPTH_DIFF ( ) , float maxPointsPart = Odometry : : DEFAULT_MAX_POINTS_PART ( ) ,
const std : : vector < int > & iterCounts = std : : vector < int > ( ) ,
const std : : vector < float > & minGradientMagnitudes = std : : vector < float > ( ) ,
int transformType = RIGID_BODY_MOTION ) ;
int transformType = Odometry : : RIGID_BODY_MOTION ) ;
virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
CV_WRAP virtual Size prepareFrameCache ( Ptr < OdometryFrame > & frame , int cacheType ) const ;
cv : : Mat getCameraMatrix ( ) const
CV_WRAP cv : : Mat getCameraMatrix ( ) const
{
return cameraMatrix ;
}
void setCameraMatrix ( const cv : : Mat & val )
CV_WRAP void setCameraMatrix ( const cv : : Mat & val )
{
cameraMatrix = val ;
}
double getMinDepth ( ) const
CV_WRAP double getMinDepth ( ) const
{
return minDepth ;
}
void setMinDepth ( double val )
CV_WRAP void setMinDepth ( double val )
{
minDepth = val ;
}
double getMaxDepth ( ) const
CV_WRAP double getMaxDepth ( ) const
{
return maxDepth ;
}
void setMaxDepth ( double val )
CV_WRAP void setMaxDepth ( double val )
{
maxDepth = val ;
}
double getMaxDepthDiff ( ) const
CV_WRAP double getMaxDepthDiff ( ) const
{
return maxDepthDiff ;
}
void setMaxDepthDiff ( double val )
CV_WRAP void setMaxDepthDiff ( double val )
{
maxDepthDiff = val ;
}
double getMaxPointsPart ( ) const
CV_WRAP double getMaxPointsPart ( ) const
{
return maxPointsPart ;
}
void setMaxPointsPart ( double val )
CV_WRAP void setMaxPointsPart ( double val )
{
maxPointsPart = val ;
}
cv : : Mat getIterationCounts ( ) const
CV_WRAP cv : : Mat getIterationCounts ( ) const
{
return iterCounts ;
}
void setIterationCounts ( const cv : : Mat & val )
CV_WRAP void setIterationCounts ( const cv : : Mat & val )
{
iterCounts = val ;
}
cv : : Mat getMinGradientMagnitudes ( ) const
CV_WRAP cv : : Mat getMinGradientMagnitudes ( ) const
{
return minGradientMagnitudes ;
}
void setMinGradientMagnitudes ( const cv : : Mat & val )
CV_WRAP void setMinGradientMagnitudes ( const cv : : Mat & val )
{
minGradientMagnitudes = val ;
}
int getTransformType ( ) const
CV_WRAP int getTransformType ( ) const
{
return transformType ;
}
void setTransformType ( int val )
CV_WRAP void setTransformType ( int val )
{
transformType = val ;
}
double getMaxTranslation ( ) const
CV_WRAP double getMaxTranslation ( ) const
{
return maxTranslation ;
}
void setMaxTranslation ( double val )
CV_WRAP void setMaxTranslation ( double val )
{
maxTranslation = val ;
}
double getMaxRotation ( ) const
CV_WRAP double getMaxRotation ( ) const
{
return maxRotation ;
}
void setMaxRotation ( double val )
CV_WRAP void setMaxRotation ( double val )
{
maxRotation = val ;
}
Ptr < RgbdNormals > getNormalsComputer ( ) const
CV_WRAP Ptr < RgbdNormals > getNormalsComputer ( ) const
{
return normalsComputer ;
}
@ -992,7 +1018,7 @@ namespace rgbd
checkParams ( ) const ;
virtual bool
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , Mat & Rt ,
computeImpl ( const Ptr < OdometryFrame > & srcFrame , const Ptr < OdometryFrame > & dstFrame , OutputArray Rt ,
const Mat & initRt ) const ;
// Some params have commented desired type. It's due to AlgorithmInfo::addParams does not support it now.