⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cal_main.h

📁 做立体视觉时的标定算法
💻 H
字号:
/*******************************************************************************\*										** This file contains operating constants, data structure definitions and I/O	** variable declarations for the calibration routines contained in the file	** cal_main.c.						                        **                                                                               ** An explanation of the basic algorithms and description of the variables	** can be found in "An Efficient and Accurate Camera Calibration Technique for	** 3D Machine Vision", Roger Y. Tsai, Proceedings of IEEE Conference on Computer	** Vision and Pattern Recognition, 1986, pages 364-374.  This work also appears	** in several other publications under Roger Tsai's name.			**                                                                               **                                                                               ** Notation                                                                      ** --------                                                                      **                                                                               ** The camera's X axis runs along increasing column coordinates in the           ** image/frame.  The Y axis runs along increasing row coordinates.               **                                                                               ** pix == image/frame grabber picture element                                    ** sel == camera sensor element                                                  **                                                                               **                                                                               ** History                                                                       ** -------                                                                       **                                                                               ** 01-Apr-95  Reg Willson (rgwillson@mmm.com) at 3M St. Paul, MN                 **       Filename changes for DOS port.                                          **                                                                               ** 04-Jun-94  Reg Willson (rgwillson@mmm.com) at 3M St. Paul, MN                 **       Added alternate macro definitions for less common math functions.       **                                                                               ** 25-Mar-94  Torfi Thorhallsson (torfit@verk.hi.is) at the University of Iceland**       Added definitions of parameters controlling MINPACK's lmdif()           **       optimization routine.                                                   **                                                                               ** 30-Nov-93  Reg Willson (rgw@cs.cmu.edu) at Carnegie-Mellon University         **       Added declaration for camera type.                                      **                                                                               ** 07-Feb-93  Reg Willson (rgw@cs.cmu.edu) at Carnegie-Mellon University         **       Original implementation.                                                **                                                                               **										*\*******************************************************************************//* Maximum number of data points allowed */#define MAX_POINTS	500/* An arbitrary tolerance factor */#define EPSILON		1.0E-8/* Commonly used macros */#define ABS(a)          (((a) > 0) ? (a) : -(a))#define SIGNBIT(a)      (((a) > 0) ? 0 : 1)#define SQR(a)          ((a) * (a))#define CUB(a)          ((a)*(a)*(a))#define MAX(a,b)        (((a) > (b)) ? (a) : (b))#define MIN(a,b)        (((a) < (b)) ? (a) : (b))/* Some math libraries may not have the sincos() routine */#ifdef _SINCOS_void sincos();#define SINCOS(x,s,c)   sincos(x,&s,&c)#elsedouble sin(), cos();#define SINCOS(x,s,c)   s=sin(x);c=cos(x)#endif/* Parameters controlling MINPACK's lmdif() optimization routine. *//* See the file lmdif.f for definitions of each parameter.        */#define REL_SENSOR_TOLERANCE_ftol    1.0E-5      /* [pix] */#define REL_PARAM_TOLERANCE_xtol     1.0E-7#define ORTHO_TOLERANCE_gtol         0.0#define MAXFEV                       (1000*n)#define EPSFCN                       1.0E-16     /* Do not set to zero! */#define MODE                         1           /* variables are scalled internally */#define FACTOR                       100.0 /*******************************************************************************\*										** Camera parameters are usually the fixed parameters of the given camera 	** system, typically obtained from manufacturers specifications.			**										** Cy and Cy (the center of radial lens distortion), may be calibrated		** separately or as part of the coplanar/noncoplanar calibration.		** The same with sx (x scale uncertainty factor).				**										*\*******************************************************************************/struct camera_parameters {    double    Ncx;		/* [sel]     Number of sensor elements in camera's x direction */    double    Nfx;		/* [pix]     Number of pixels in frame grabber's x direction   */    double    dx;		/* [mm/sel]  X dimension of camera's sensor element (in mm)    */    double    dy;		/* [mm/sel]  Y dimension of camera's sensor element (in mm)    */    double    dpx;		/* [mm/pix]  Effective X dimension of pixel in frame grabber   */    double    dpy;		/* [mm/pix]  Effective Y dimension of pixel in frame grabber   */    double    Cx;		/* [pix]     Z axis intercept of camera coordinate system      */    double    Cy;		/* [pix]     Z axis intercept of camera coordinate system      */    double    sx;		/* []        Scale factor to compensate for any error in dpx   */};/*******************************************************************************\*										** Calibration data consists of the (x,y,z) world coordinates of a feature	** point	(in mm) and the corresponding coordinates (Xf,Yf) (in pixels) of the	** feature point in the image.  Point count is the number of points in the data	** set.										**										**										** Coplanar calibration:								**										** For coplanar calibration the z world coordinate of the data must be zero.	** In addition, for numerical stability the coordinates of the feature points	** should be placed at some arbitrary distance from the origin (0,0,0) of the	** world coordinate system.  Finally, the plane containing the feature points	** should not be parallel to the imaging plane.  A relative angle of 30 degrees	** is recommended.								**										**										** Noncoplanar calibration:							**										** For noncoplanar calibration the data must not lie in a single plane.		**										*\*******************************************************************************/struct calibration_data {    int       point_count;	/* [points] 	 */    double    xw[MAX_POINTS];	/* [mm]          */    double    yw[MAX_POINTS];	/* [mm]          */    double    zw[MAX_POINTS];	/* [mm]          */    double    Xf[MAX_POINTS];	/* [pix]         */    double    Yf[MAX_POINTS];	/* [pix]         */};/*******************************************************************************\*										** Calibration constants are the model constants that are determined from the 	** calibration data.								**										*\*******************************************************************************/struct calibration_constants {    double    f;		/* [mm]          */    double    kappa1;		/* [1/mm^2]      */    double    p1;		/* [1/mm]        */    double    p2;		/* [1/mm]        */    double    Tx;		/* [mm]          */    double    Ty;		/* [mm]          */    double    Tz;		/* [mm]          */    double    Rx;		/* [rad]	 */    double    Ry;		/* [rad]	 */    double    Rz;		/* [rad]	 */    double    r1;		/* []            */    double    r2;		/* []            */    double    r3;		/* []            */    double    r4;		/* []            */    double    r5;		/* []            */    double    r6;		/* []            */    double    r7;		/* []            */    double    r8;		/* []            */    double    r9;		/* []            */};/* External declarations for variables used by the subroutines for I/O */extern struct camera_parameters cp;extern struct calibration_data cd;extern struct calibration_constants cc;extern char   camera_type[];/* Forward declarations for the calibration routines */void  initialize_photometrics_parms ();void  initialize_general_imaging_mos5300_matrox_parms ();void  initialize_panasonic_gp_mf702_matrox_parms ();void  initialize_sony_xc77_matrox_parms ();void  initialize_sony_xc57_androx_parms ();void  coplanar_calibration ();void  coplanar_calibration_with_full_optimization ();void  noncoplanar_calibration ();void  noncoplanar_calibration_with_full_optimization ();void  coplanar_extrinsic_parameter_estimation ();void  noncoplanar_extrinsic_parameter_estimation ();void  world_coord_to_image_coord ();void  image_coord_to_world_coord ();void  world_coord_to_camera_coord ();void  camera_coord_to_world_coord ();void  distorted_to_undistorted_sensor_coord ();void  undistorted_to_distorted_sensor_coord ();void  distorted_to_undistorted_image_coord ();void  undistorted_to_distorted_image_coord ();void  distorted_image_plane_error_stats ();void  undistorted_image_plane_error_stats ();void  object_space_error_stats ();void  normalized_calibration_error ();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -