GSoC2011SfM  0.1
Google Summer of Code 2011: Structure from motion
D:/Travail/These/Determination caracteristiques camera/GSoC/SfM/src/CameraPinhole.h
00001 #ifndef _GSOC_SFM_CAMERA_PINHOLE_H
00002 #define _GSOC_SFM_CAMERA_PINHOLE_H 1
00003 
00004 //A lot of methods are inspired of LIBMV project ( http://code.google.com/p/libmv_core/ )
00005 
00006 #include "macro.h" //SFM_EXPORTS
00007 #include "opencv2/calib3d/calib3d.hpp"
00008 #include "Camera.h"
00009 
00010 namespace OpencvSfM{
00011   enum paramsOfIntraParameters{
00012     FOCAL_PARAM=1,         
00013     SKEW_PARAM=2,          
00014     PRINCIPAL_POINT_PARAM=4
00015   };
00016 
00024   class SFM_EXPORTS CameraPinhole:public Camera{
00025   protected:
00026     cv::Mat intra_params_;
00027     cv::Mat inv_intra_params_;
00028 
00034     unsigned char estimation_needed_;
00035   public:
00043     CameraPinhole( cv::Mat intra_params=cv::Mat::eye( 3, 3, CV_64F ),
00044       int img_w=640, int img_h=480, unsigned char wantedEstimation
00045       = FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM );
00057     CameraPinhole( const std::vector<std::vector<cv::Point3f> >& objectPoints,
00058       const std::vector<std::vector<cv::Point2f> >& imagePoints,
00059       cv::Size imageSize, double aspectRatio=1., int img_w=640, int img_h=480,
00060       unsigned char wantedEstimation=FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM );
00061     ~CameraPinhole( );
00066     virtual uchar getNbMissingParams( ) const;
00078     virtual void updateIntrinsic( double* values, uchar nbVal, bool add_to_intra );
00079 
00085     void updateIntrinsicMatrix( cv::Mat newParams,unsigned char intraValues=FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM );
00086 
00090     virtual std::vector<cv::Vec4d> convertFromImageTo3Dray( std::vector<cv::Vec3d> points );
00091     
00097     virtual std::vector<cv::Vec2d> pixelToNormImageCoordinates( std::vector<cv::Vec2d> points ) const;
00103     virtual std::vector<cv::Vec2d> normImageToPixelCoordinates( std::vector<cv::Vec2d> points ) const;
00108     virtual cv::Mat getIntraMatrix( ) const
00109     {return intra_params_;};
00115     virtual double getFocal( ) const;
00116     
00121     static cv::Ptr<Camera> read( const cv::FileNode& node );
00122     
00127     virtual void write( cv::FileStorage& fs ) const;
00128 
00129   };
00130 
00131 };
00132 
00133 #endif
 All Classes Functions Variables