//Construct with cube and calkernel(filename) MiCalibration::MiCalibration(Cube &image, Pvl &kernel) { ReadLabels(image); ReadKernel(kernel); SetCCDTemperature(p_CCDTemperature); SetPCBTemperature(p_PCBTemperature); SetOmegaNaught(); SetReferencePixelModel(); SetZeroExposureValue(); SetActiveAreaValue(); }
/** @brief Parse command line arguments */ int ParseParams(programparams *Params, int argc, const char *argv[]) { static const char *DefaultOutputFile = (char *)"out.bmp"; const char *Param, *Value; num NumValue; char TokenBuf[256]; int k, kread, Skip; /* Set parameter defaults */ Params->InputFile = NULL; Params->OutputFile = DefaultOutputFile; Params->JpegQuality = 85; Params->Lambda = 20; Params->Kernel = NullImage; Params->Noise = "gaussian"; if(argc < 2) { PrintHelpMessage(); return 0; } k = 1; while(k < argc) { Skip = (argv[k][0] == '-') ? 1 : 0; kread = CliParseArglist(&Param, &Value, TokenBuf, sizeof(TokenBuf), k, &argv[k][Skip], argc, argv, ":"); if(!Param) { if(!Params->InputFile) Param = (char *)"f"; else Param = (char *)"u"; } if(Param[0] == '-') /* Argument begins with two dashes "--" */ { PrintHelpMessage(); return 0; } if(!strcmp(Param, "f") || !strcmp(Param, "input")) { if(!Value) { fprintf(stderr, "Expected a value for option %s.\n", Param); return 0; } Params->InputFile = Value; } else if(!strcmp(Param, "u") || !strcmp(Param, "output")) { if(!Value) { fprintf(stderr, "Expected a value for option %s.\n", Param); return 0; } Params->OutputFile = Value; } else if(!strcmp(Param, "K")) { if(!Value) { fprintf(stderr, "Expected a value for option %s.\n", Param); return 0; } else if(!ReadKernel(&Params->Kernel, Value)) return 0; } else if(!strcmp(Param, "lambda")) { if(!CliGetNum(&NumValue, Value, Param)) return 0; else if(NumValue <= 0) { fputs("Parameter lambda must be positive.\n", stderr); return 0; } else Params->Lambda = (int)NumValue; } else if(!strcmp(Param, "noise")) { if(!Value) { fprintf(stderr, "Expected a value for option %s.\n", Param); return 0; } else Params->Noise = Value; } else if(!strcmp(Param, "jpegquality")) { if(!CliGetNum(&NumValue, Value, Param)) return 0; else if(NumValue < 0 || 100 < NumValue) { fputs("JPEG quality must be between 0 and 100.\n", stderr); return 0; } else Params->JpegQuality = (int)NumValue; } else if(Skip) { fprintf(stderr, "Unknown option \"%s\".\n", Param); return 0; } else { if(!Params->InputFile) Params->InputFile = argv[k]; else Params->OutputFile = argv[k]; kread = k; } k = kread + 1; } if(!Params->Kernel.Data && !ReadKernel(&Params->Kernel, "disk:0")) return 0; if(!Params->InputFile) { PrintHelpMessage(); return 0; } return 1; }