Mitre_sfr代码注解(一)main函数

    笔者学识有限。 本博客旨在对mitre_sfr核心代码进行简单注解, 详细内容读者仁者见仁智者见智。

  本人最近有幸拜读mitre_sfr代码, 对代码进行了简单的注解。介于学习的时候在网上没搜到类似的文章,所以特开立这个主题, 希望对后面学习mitre_sfr或想了解SFR算法的同学有所帮助。

    另外, 本人是计科生, 对信号与系统知识了解有限, 读代码的时候也有一些不甚了解之处, 在代码注解中进行了标注, 希望相关领域大神在浏览的时候能顺便帮我解惑, 在此不甚感激。

    拜读mitre_sfr代码时发现mitre_sfr的源码和ISO12233附录A中的代码出奇的一致, 相似性达到至少90%, 说明mitre_sfr作者对IOS的作者出于崇高的敬意。

    废话少说, 贴代码。

    看代码先看主干, 我先贴main函数。 Mitre_sfr的main函数对核心算法和主干涉及不多, 仅涉及sfr计算的预处理和sfr计算结果输出的一些处理, 建议大家快速阅读即可。

  下一篇我将先贴出mitre_sfr最核心的函数sfrProc的源码和注解。 其他次要代码及注解在后续文章贴出, 希望大家体谅。

int main(int argc, char **argv)
{
  char problem_string[82];
  unsigned char rotation;
  int i;
  double *farea;
  double slope, scale, b;
  int size_x, size_y;
  int len, err, bin_len;
  int rgt_side, left_side;
  int center;
  int numcycles=0;
  double *Freq=NULL;
  double *disp=NULL;
  double *ref_lut;
  double off, R2;
  int center_x, center_y, new_x, new_y;
  int lowest_val, highest_val, grey_level, first, last;
  int piv_err;

  TIFF* tif = NULL;

#if !defined(MSDOS)
  char *fnamep;
  fnamep = dirname(argv[0]);
  if (argc==1 && fnamep != NULL && fnamep[0] == '/') {
    printf ("Changed to directory of executable:  %s\n\n", fnamep);
    chdir((const char *)fnamep);
  }
#else
  atexit(wait_to_exit);
#endif

  /* Once-only initializations */
  g_scan_image_file_id = 0;
  g_problem_count = 0;                /* # of problems in our problem report */
  g_IQS_problem_count = 0;

  get_switches(argc, argv, image_filename, data_filename);              

  /* always append output to this file */
  if ((g_mtfout = fopen(MTFOUTNAME,"a")) == NULL) {
    fprintf(stderr,"Can't open %s\n",MTFOUTNAME);
    exit(1);
  }

  /* command line args */
  get_args(image_filename,data_filename,&tif); // 获取源文件名并读取文件头, 获取ROI位置, 如果需要读取计算角度的两个点位
 
  /* print the user entered data (corner coords, etc.) in the output */
  /* 时间, 版本号, 以及get_args函数里面获取到的信息*/
  print_header(image_filename,data_filename);

  g_target_res = 500;
  if (abs((int)g_ppi - g_target_res) > 10) {
    sprintf(problem_string,
	    "Resolution outside the %d-%d ppi PIV spec range\n",
	    g_target_res-10,g_target_res+10);
    put_problem(problem_string, IQS);
    put_problem("\n", IQS);
  }

  // 从ROI 4个角落各读取4个像素点, 用于判断刀口方向, 并确认ROI区域的合法性
  input_
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值