/*----------------------------------------------------- Parameters: Returns value: Description ------------------------------------------------------*/ IMAGE * ImageRead(const char*fname) { IMAGE *I = NULL ; MATRIX *mat ; FILE *fp ; int type, frame ; char buf[STRLEN] ; strcpy(buf, fname) ; /* don't destroy callers string */ ImageUnpackFileName(buf, &frame, &type, buf) ; switch (type) { case TIFF_IMAGE: I = TiffReadImage(buf, frame) ; if (I == NULL) return(NULL) ; break ; case MATLAB_IMAGE: DiagPrintf(DIAG_WRITE, "ImageRead: buf=%s, frame=%d, type=%d (M=%d,H=%d)\n", buf, frame, type , MATLAB_IMAGE, HIPS_IMAGE); mat = MatlabRead(buf) ; if (!mat) ErrorReturn(NULL, (ERROR_NO_FILE, "ImageRead(%s) failed\n", buf)) ; I = ImageFromMatrix(mat, NULL) ; ImageInvert(I, I) ; MatrixFree(&mat) ; break ; case HIPS_IMAGE: fp = fopen(buf, "rb") ; if (!fp) ErrorReturn(NULL, (ERROR_NO_FILE, "ImageRead(%s, %d) failed\n", buf, frame)) ; I = ImageFRead(fp, buf, frame, 1) ; fclose(fp) ; break ; case JPEG_IMAGE: I = JPEGReadImage(buf); break ; case PGM_IMAGE: I = PGMReadImage(buf); break; case PPM_IMAGE: I = PPMReadImage(buf); break; case PBM_IMAGE: I = PBMReadImage(buf); break; case RGBI_IMAGE: I= RGBReadImage(buf); default: break ; } return(I) ; }
/* --------------------------------------------- */ static int parse_commandline(int argc, char **argv) { int nargc , nargsused; char **pargv, *option ; if (argc < 1) usage_exit(); nargc = argc; pargv = argv; while (nargc > 0) { option = pargv[0]; if (debug) printf("%d %s\n",nargc,option); nargc -= 1; pargv += 1; nargsused = 0; if (!strcasecmp(option, "--help")) print_help() ; else if (!strcasecmp(option, "--version")) print_version() ; else if (!strcasecmp(option, "--debug")) debug = 1; else if (!strcasecmp(option, "--checkopts")) checkoptsonly = 1; else if (!strcasecmp(option, "--nocheckopts")) checkoptsonly = 0; else if (!strcasecmp(option, "--synth")) synth = 1; else if (!strcasecmp(option, "--nosynth")) synth = 0; else if (!strcasecmp(option, "--mask-inv")) maskinv = 1; else if (!strcasecmp(option, "--save-detrended")) SaveDetrended = 1; else if (!strcasecmp(option, "--save-unmasked")) SaveUnmasked = 1; else if (!strcasecmp(option, "--smooth-only")) SmoothOnly = 1; else if (!strcasecmp(option, "--so")) SmoothOnly = 1; else if (!strcasecmp(option, "--sqr")) DoSqr = 1; else if (!strcasecmp(option, "--ispm")) InValsType = MRI_ANALYZE_FILE; else if (!strcasecmp(option, "--ar2")) DoAR2 = 1; else if (!strcasecmp(option, "--gdiag")) Gdiag_no = 1; else if (!strcasecmp(option, "--i")) { if (nargc < 1) CMDargNErr(option,1); inpath = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--mask")) { if (nargc < 1) CMDargNErr(option,1); maskpath = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--mask-thresh")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&maskthresh); nargsused = 1; } else if (!strcasecmp(option, "--auto-mask")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&automaskthresh); automask = 1; nargsused = 1; } else if (!strcasecmp(option, "--out-mask")) { if (nargc < 1) CMDargNErr(option,1); outmaskpath = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--sum")) { if (nargc < 1) CMDargNErr(option,1); sumfile = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--dat")) { if (nargc < 1) CMDargNErr(option,1); datfile = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--fwhm")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&infwhm); ingstd = infwhm/sqrt(log(256.0)); nargsused = 1; } else if (!strcasecmp(option, "--fwhmc")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&infwhmc); ingstdc = infwhmc/sqrt(log(256.0)); nargsused = 1; } else if (!strcasecmp(option, "--fwhmr")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&infwhmr); ingstdr = infwhmr/sqrt(log(256.0)); nargsused = 1; } else if (!strcasecmp(option, "--fwhms")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&infwhms); ingstds = infwhms/sqrt(log(256.0)); nargsused = 1; } else if (!strcasecmp(option, "--gstd")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&ingstd); infwhm = ingstd*sqrt(log(256.0)); nargsused = 1; } else if (!strcasecmp(option, "--to-fwhm")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&tofwhm); nargsused = 1; } else if (!strcasecmp(option, "--to-gstd")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&togstd); tofwhm = togstd*sqrt(log(256.0)); nargsused = 1; } else if (!strcasecmp(option, "--to-fwhm-tol")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&tofwhmtol); nargsused = 1; } else if (!strcasecmp(option, "--to-fwhm-nmax")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&tofwhmnitersmax); nargsused = 1; } else if (!strcasecmp(option, "--to-fwhm-file")) { if (nargc < 1) CMDargNErr(option,1); tofwhmfile = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--nerode")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&nerode); nargsused = 1; } else if (!strcasecmp(option, "--nframesmin")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&nframesmin); nargsused = 1; } else if (!strcasecmp(option, "--synth-frames")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&nframes); synth = 1; nargsused = 1; } else if (!strcasecmp(option, "--seed")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&SynthSeed); synth = 1; nargsused = 1; } else if (!strcasecmp(option, "--tr")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%lf",&TR); SetTR = 1; nargsused = 1; } else if (!strcasecmp(option, "--o")) { if (nargc < 1) CMDargNErr(option,1); outpath = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--ar1")) { if (nargc < 1) CMDargNErr(option,1); ar1path = pargv[0]; nargsused = 1; } else if (!strcmp(option, "--sum2")) { if (nargc < 1) CMDargNErr(option,1); sum2file = pargv[0]; nargsused = 1; } else if (!strcasecmp(option, "--X")) { if (nargc < 1) CMDargNErr(option,1); Xfile = pargv[0]; //X = MatrixReadTxt(Xfile, NULL); X = MatlabRead(Xfile); if (X == NULL) { printf("ERROR: reading %s\n",Xfile); exit(1); } nargsused = 1; } else if (!strcasecmp(option, "--detrend")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&DetrendOrder); if (DetrendOrder > 2) { printf("ERROR: cannot have detrending order > 2\n"); exit(1); } nargsused = 1; } else if (!strcasecmp(option, "--in_nspmzeropad")) { if (nargc < 1) CMDargNErr(option,1); sscanf(pargv[0],"%d",&N_Zero_Pad_Input); InValsType = MRI_ANALYZE_FILE; nargsused = 1; } else { fprintf(stderr,"ERROR: Option %s unknown\n",option); if (CMDsingleDash(option)) fprintf(stderr," Did you really mean -%s ?\n",option); exit(-1); } nargc -= nargsused; pargv += nargsused; } return(0); }