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

📄 ecal.c

📁 tsai经典标定程序 MATLAB语言
💻 C
字号:
/*******************************************************************************\*                                                                               ** This program reads in a file containing the cp/cc data for a camera model     ** and a file containing the cd data obtained using the same camera but with a   ** potentially different set of extrinsic parameters (i.e. Rx,Ry,Rz,Tz,Ty,Tz).   ** The program then reestimates the extrinsic parameters to produce a new        ** camera model.  The algorithm is based in part on Tsai's camera calibration    ** algorithm.                                                                    **                                                                               ** At the end of the program the new camera model is dumped in a format          ** that can be loaded in by other programs.                                      **                                                                               ** History                                                                       ** -------                                                                       **                                                                               ** 01-Apr-95  Reg Willson (rgwillson@mmm.com) at 3M St. Paul, MN                 **       Filename changes for DOS port.                                          **                                                                               ** 11-Nov-93  Reg Willson (rgw@cs.cmu.edu) at Carnegie-Mellon University         **       Original implementation.                                                **                                                                               *\*******************************************************************************/#include <stdio.h>#include <math.h>#include "cal_main.h"main (argc, argv)    int       argc;    char    **argv;{    FILE     *data_fd;    double    max_zw,              min_zw;    int       i;    if (argc != 3) {	fprintf (stderr, "syntax: %s  cc.cp.data_file  cd.data_file\n", argv[0]);	exit (-1);    }    fprintf (stdout, "\nExtrinsic Parameter Calibration\n");    if ((data_fd = fopen (argv[1], "r")) == NULL) {	fprintf (stderr, "%s: unable to open file \"%s\"\n", argv[0], argv[1]);	exit (-1);    }    /* load up the calibration and camera data (cc and cp) from the given data file */    load_cp_cc_data (data_fd, &cp, &cc);    fclose (data_fd);    if ((data_fd = fopen (argv[2], "r")) == NULL) {	fprintf (stderr, "%s: unable to open file \"%s\"\n", argv[0], argv[2]);	exit (-1);    }    /* load up the calibration and camera data (cc and cp) from the given data file */    load_cd_data (data_fd, &cd);    fclose (data_fd);    fprintf (stderr, "\n   cp/cc data file: %s", argv[1]);    /* find out if this data is coplanar in Z or not */    max_zw = min_zw = cd.zw[0];    for (i = 1; i < cd.point_count; i++)	if (max_zw < cd.zw[i])	    max_zw = cd.zw[i];	else if (min_zw > cd.zw[i])	    min_zw = cd.zw[i];    if (max_zw == min_zw) {	fprintf (stderr, "\n   cd data file:    %s   (%d data points, coplanar in Z)\n",		 argv[2], cd.point_count);	coplanar_extrinsic_parameter_estimation ();    } else {	fprintf (stderr, "\n   cd data file:    %s   (%d data points, noncoplanar in Z)\n",		 argv[2], cd.point_count);	noncoplanar_extrinsic_parameter_estimation ();    }    fprintf (stderr, "\n   new camera parameters:\n\n");    print_cp_cc_data (stderr, &cp, &cc);    print_error_stats (stderr);    dump_cp_cc_data (stdout, &cp, &cc);    return 0;}

⌨️ 快捷键说明

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