GSoC2011SfM
0.1
Google Summer of Code 2011: Structure from motion
|
This class represent the physical device which take the pictures. It is not related to a 3D position which is the role of the PointOfView class. The role of the class is to store only intra parameters ( without radial distortion ) More...
#include <CameraPinhole.h>
Public Member Functions | |
CameraPinhole (cv::Mat intra_params=cv::Mat::eye(3, 3, CV_64F), int img_w=640, int img_h=480, unsigned char wantedEstimation=FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM) | |
CameraPinhole (const std::vector< std::vector< cv::Point3f > > &objectPoints, const std::vector< std::vector< cv::Point2f > > &imagePoints, cv::Size imageSize, double aspectRatio=1., int img_w=640, int img_h=480, unsigned char wantedEstimation=FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM) | |
virtual uchar | getNbMissingParams () const |
virtual void | updateIntrinsic (double *values, uchar nbVal, bool add_to_intra) |
void | updateIntrinsicMatrix (cv::Mat newParams, unsigned char intraValues=FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM) |
virtual std::vector< cv::Vec4d > | convertFromImageTo3Dray (std::vector< cv::Vec3d > points) |
virtual std::vector< cv::Vec2d > | pixelToNormImageCoordinates (std::vector< cv::Vec2d > points) const |
virtual std::vector< cv::Vec2d > | normImageToPixelCoordinates (std::vector< cv::Vec2d > points) const |
virtual cv::Mat | getIntraMatrix () const |
virtual double | getFocal () const |
virtual void | write (cv::FileStorage &fs) const |
Static Public Member Functions | |
static cv::Ptr< Camera > | read (const cv::FileNode &node) |
Protected Attributes | |
cv::Mat | intra_params_ |
store intra parameters( 3*3 matrix ). This matrix contains focal informations, principal point coordinates and skew of axis | |
cv::Mat | inv_intra_params_ |
This is the inverse transformation of intra_params_. Used to speed up calculus... | |
unsigned char | estimation_needed_ |
This class represent the physical device which take the pictures. It is not related to a 3D position which is the role of the PointOfView class. The role of the class is to store only intra parameters ( without radial distortion )
So this class is devoted to the conversion between 3D points ( using camera coordinate ) and 2D points ( using image coordinate ) using the methods convertFromImageTo3Dray or convertFrom3DToImage
Definition at line 24 of file CameraPinhole.h.
OpencvSfM::CameraPinhole::CameraPinhole | ( | cv::Mat | intra_params = cv::Mat::eye( 3, 3, CV_64F ) , |
int | img_w = 640 , |
||
int | img_h = 480 , |
||
unsigned char | wantedEstimation = FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM |
||
) |
Constructor with ( or not ) intra parameters.
intra_params | matrix of intra parameters ( 3*3 ) |
img_w | width of images the camera produce |
img_h | height of images the camera produce |
wantedEstimation | values which need an estimation |
Definition at line 12 of file CameraPinhole.cpp.
Referenced by read().
OpencvSfM::CameraPinhole::CameraPinhole | ( | const std::vector< std::vector< cv::Point3f > > & | objectPoints, |
const std::vector< std::vector< cv::Point2f > > & | imagePoints, | ||
cv::Size | imageSize, | ||
double | aspectRatio = 1. , |
||
int | img_w = 640 , |
||
int | img_h = 480 , |
||
unsigned char | wantedEstimation = FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM |
||
) |
Constructor where initial camera matrix is computed from the 3D-2D point correspondences. Currently, the function only supports planar calibration patterns, i.e. patterns where each object point has z-coordinate =0.
objectPoints | The vector of vectors of the object points. See http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html#cv-calibratecamera |
imagePoints | The vector of vectors of the corresponding image points. See http://opencv.willowgarage.com/documentation/cpp/calib3d_camera_calibration_and_3d_reconstruction.html#cv-calibratecamera |
imageSize | The image size in pixels; used to initialize the principal point |
aspectRatio | If it is zero or negative, both and are estimated independently. Otherwise |
img_w | width of images the camera produce |
img_h | height of images the camera produce |
wantedEstimation | values which need an estimation |
Definition at line 24 of file CameraPinhole.cpp.
vector< Vec4d > OpencvSfM::CameraPinhole::convertFromImageTo3Dray | ( | std::vector< cv::Vec3d > | points | ) | [virtual] |
This method can transform points from image to 3D rays
Implements OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 112 of file CameraPinhole.cpp.
double OpencvSfM::CameraPinhole::getFocal | ( | ) | const [virtual] |
This method retrive the focal from Intrinsic matrix. It's not using pixel reference but using camera reference!
Implements OpencvSfM::Camera.
Definition at line 167 of file CameraPinhole.cpp.
virtual cv::Mat OpencvSfM::CameraPinhole::getIntraMatrix | ( | ) | const [inline, virtual] |
This method return the intra parameters of the camera
Reimplemented from OpencvSfM::Camera.
Definition at line 108 of file CameraPinhole.h.
Referenced by OpencvSfM::CameraPinholeDistor::read().
uchar OpencvSfM::CameraPinhole::getNbMissingParams | ( | ) | const [virtual] |
use this function to know which parameters are missing
Reimplemented from OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 42 of file CameraPinhole.cpp.
vector< Vec2d > OpencvSfM::CameraPinhole::normImageToPixelCoordinates | ( | std::vector< cv::Vec2d > | points | ) | const [virtual] |
This method can convert 2D points from normalized image coordinates to 2D points in pixel image coordinates
points | 2D points in normalized image homogeneous coordinates. |
Implements OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 148 of file CameraPinhole.cpp.
vector< Vec2d > OpencvSfM::CameraPinhole::pixelToNormImageCoordinates | ( | std::vector< cv::Vec2d > | points | ) | const [virtual] |
This method can convert 2D points from pixel image coordinates to 2D points in normalized image coordinates
points | 2D points in pixel image homogeneous coordinates. |
Implements OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 118 of file CameraPinhole.cpp.
cv::Ptr< Camera > OpencvSfM::CameraPinhole::read | ( | const cv::FileNode & | node | ) | [static] |
Create a new camera from a YAML file.
node | Previously opened YAML file node |
Reimplemented from OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 199 of file CameraPinhole.cpp.
Referenced by OpencvSfM::PointOfView::read().
void OpencvSfM::CameraPinhole::updateIntrinsic | ( | double * | values, |
uchar | nbVal, | ||
bool | add_to_intra | ||
) | [virtual] |
This method modify the intra parameters of the camera
values | array of intra parameters (order corresponds to SBA) K( 0,0 ) -> values[0] K( 2,0 ) -> values[1], K( 2,1 ) -> values[2], K( 1,1 )/K( 0,0 ) -> values[3] K( 1,0 ) -> values[4] |
nbVal | nb values into array... |
add_to_intra | if true, the vector is the delta to apply to each intra values |
Reimplemented from OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 54 of file CameraPinhole.cpp.
void OpencvSfM::CameraPinhole::updateIntrinsicMatrix | ( | cv::Mat | newParams, |
unsigned char | intraValues = FOCAL_PARAM|SKEW_PARAM|PRINCIPAL_POINT_PARAM |
||
) |
this method can be used to update the intra parameters.
newParams | matrix of new parameters ( 3*3 ) |
intraValues | values which are useful in matrix |
Definition at line 81 of file CameraPinhole.cpp.
void OpencvSfM::CameraPinhole::write | ( | cv::FileStorage & | fs | ) | const [virtual] |
Save the camera intra parameters into a YAML file.
fs | Previously opened YAML file node |
Implements OpencvSfM::Camera.
Reimplemented in OpencvSfM::CameraPinholeDistor.
Definition at line 219 of file CameraPinhole.cpp.
unsigned char OpencvSfM::CameraPinhole::estimation_needed_ [protected] |
This attribut is used to know what we should estimate... Example: if equal to 0, nothing should be estimated... If equal to 3, focal and skew should be estimated ( FOCAL_PARAM + SKEW_PARAM )
Definition at line 34 of file CameraPinhole.h.
Referenced by CameraPinhole(), getNbMissingParams(), OpencvSfM::CameraPinholeDistor::getNbMissingParams(), OpencvSfM::CameraPinholeDistor::updateDistortionParameters(), and write().