Camera.h
Go to the documentation of this file.
00001 /*
00002  * Camera.h
00003  *
00004  *  Created on: Oct 17, 2010
00005  *      Author: ethan
00006  */
00007 
00008 #ifndef CAMERA_H_
00009 #define CAMERA_H_
00010 
00011 #include <opencv2/core/core.hpp>
00012 
00013 #include <pano_core/pano_interfaces.h>
00014 namespace pano
00015 {
00016 
00017 class Camera : public serializable
00018 {
00019 
00020 public:
00021   Camera();
00022   ~Camera();
00023 
00024   explicit Camera(const std::string& camera_file);
00025 
00026   void setCameraIntrinsics(const std::string& filename);
00027   void setCameraIntrinsics(const cv::Mat& K, const cv::Mat& D, const cv::Size& img_size);
00028 
00029   void initUndistort();
00030 
00031   void undistort(const cv::Mat& image, cv::Mat& uimage) const;
00032 
00033   void ptsToRays(const std::vector<cv::Point2f>& pts, std::vector<cv::Point3f>& rays) const;
00034   void raysToPts(const std::vector<cv::Point3f>& rays, std::vector<cv::Point2f>& pts) const;
00035 
00036   float fovX() const
00037   {
00038     return fov_x_;
00039   }
00040   float fovY() const
00041   {
00042     return fov_y_;
00043   }
00044   float fov_max() const
00045   {
00046     return fov_x_ < fov_y_ ? fov_y_ : fov_x_;
00047   }
00048   const cv::Size& img_size() const
00049   {
00050     return img_size_;
00051   }
00052   const cv::Mat& K() const
00053   {
00054     return K_;
00055   }
00056   const cv::Mat& Kinv() const
00057   {
00058     return Kinv_;
00059   }
00060   const cv::Mat & D() const
00061   {
00062     return D_;
00063   }
00064 
00065   void scale(float x, float y);
00066   /*
00067    * serializable functions
00068    */
00069   virtual int version() const
00070   {
00071     return 0;
00072   }
00073 
00074   void write(const std::string& file_name) const;
00075   virtual void serialize(cv::FileStorage& fs) const;
00076   virtual void deserialize(const cv::FileNode& fn);
00077 
00078   static void KtoFOV(const cv::Mat& K, float & fovx, float & fovy);
00079 
00080 private:
00081   void setupK();
00082   cv::Mat K_; 
00083   cv::Mat Kinv_; 
00084 
00085   cv::Mat D_; 
00086 
00087   cv::Size img_size_; 
00088 
00089   float fov_x_; 
00090   float fov_y_; 
00091 
00092   cv::Mat P_;
00093   cv::Mat Pinv_;
00094   cv::Mat u_rm1_, u_rm2_;
00095 
00096 };
00097 
00098 }
00099 
00100 #endif /* CAMERA_H_ */


pano_core
Author(s): Ethan Rublee
autogenerated on Wed Aug 26 2015 16:34:01