initial_homography_estimation.hpp
Go to the documentation of this file.
00001 #ifndef __fovis_initial_homography_estimator_hpp__
00002 #define __fovis_initial_homography_estimator_hpp__
00003 
00004 #include <vector>
00005 #include <stdint.h>
00006 #include <Eigen/Dense>
00007 
00008 namespace fovis
00009 {
00010 
00014 class InitialHomographyEstimator {
00015 public:
00016   EIGEN_MAKE_ALIGNED_OPERATOR_NEW
00017 public:
00023   void setTemplateImage(const uint8_t * grayData, int width, int height, int stride, int downsampleFactor);
00024 
00030   void setTestImage(const uint8_t * grayData, int width, int height, int stride, int downsampleFactor);
00031 
00037   Eigen::Matrix3f track(const Eigen::Matrix3f &init_H, int nIters, double *finalRMS);
00038 
00039 private:
00040   int template_rows, template_cols; //size of the template
00041   Eigen::MatrixXf templateImage, testImage; //the images
00042   Eigen::MatrixXf warpedTestImage; //storage for the warped testImage on the current iteration
00043   Eigen::MatrixXf errorIm; //the difference between the templateImage and the warpedTestImage
00044   Eigen::ArrayXf templateDxRow, templateDyRow; //the gradient of the template flattened into a row vector
00045   Eigen::MatrixXf templatePoints; //nx3 matrix storing the x,y,1 for each pixel
00046   Eigen::ArrayXf xx, yy; //convenience array storing the original x/y for each pixel in the flattened image
00047 
00048   //internal functions
00049 
00053   static void computeGradient(const Eigen::MatrixXf &image, Eigen::MatrixXf * dxp, Eigen::MatrixXf *dyp);
00054 
00058   static double computeError(const Eigen::MatrixXf &error);
00059 
00063   Eigen::MatrixXf computeJacobian(const Eigen::ArrayXf &dx, const Eigen::ArrayXf &dy) const;
00064 
00068   Eigen::Matrix3f lieToH(const Eigen::VectorXf &lie) const;
00069 
00073   Eigen::MatrixXf constructWarpedImage(const Eigen::MatrixXf &srcImage, const Eigen::MatrixXf &warpedPoints) const;
00074 
00078   static Eigen::ArrayXf flattenMatrix(Eigen::MatrixXf &m);
00079 
00080 };
00081 
00082 }
00083 
00084 #endif


libfovis
Author(s): Albert Huang, Maurice Fallon
autogenerated on Thu Jun 6 2019 20:16:12