IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 7, 2013, 1:40:20 PM (13 years ago)
Author:
bills
Message:

Changes to the chip backround and warp background stages.
In chip background stage

Apply an auxillary mask selected for now from hard coded location.
Read input variance and include it in the output data products

In warp background stage

Read and write variance images
Get smf from alternate camRun. For now using a hard coded label
eventually from the warpBackgroundRun

Location:
trunk/ppBackground/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppBackground/src/ppBackground.h

    r34800 r35118  
    1313    psString patternName;               // Filename of pattern
    1414    psString backgroundName;            // Filename of background
    15     psString imageName, maskName;       // Filenames of input image/mask
     15    psString imageName;                 // Filenames of input image
     16    psString maskName;                  // Filenames of input mask
     17    psString varianceName;              // Filenames of input variance
     18    psString auxMaskName;               // Filename of auxillary mask
    1619    psString outRoot;                   // Output root name
    1720    psMetadata *stats;                  // Statistics for output
     
    5255    const pmChip *pattern,              // Chip with pattern
    5356    const pmFPAview *view,              // View to data
    54     pmConfig *config                    // Configuration
     57    pmConfig *config,                   // Configuration
     58    psImageMaskType maskBad             // value to use for bad pixels
    5559    );
    5660
  • trunk/ppBackground/src/ppBackgroundArguments.c

    r28543 r35118  
    4949    psMetadataAddStr(arguments, PS_LIST_TAIL, "-image", 0, "Filename of image (required)", NULL);
    5050    psMetadataAddStr(arguments, PS_LIST_TAIL, "-mask", 0, "Filename of mask", NULL);
     51    psMetadataAddStr(arguments, PS_LIST_TAIL, "-variance", 0, "Filename of variance image", NULL);
     52    psMetadataAddStr(arguments, PS_LIST_TAIL, "-auxmask", 0, "Filename of auxiliary mask", NULL);
    5153    psMetadataAddStr(arguments, PS_LIST_TAIL, "-stats", 0, "Output statistics file", NULL);
    5254    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dumpconfig", 0, "Output configuration file", NULL);
     
    5961    data->imageName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-image"));
    6062    data->maskName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-mask"));
     63    data->varianceName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-variance"));
     64    data->auxMaskName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-auxmask"));
    6165    data->outRoot = psStringCopy(argv[1]);
    6266    psMetadataAddStr(arguments, PS_LIST_TAIL, "OUTPUT", 0, "Output root name", data->outRoot);
     
    6468    psTrace("ppBackground", 1, "Done reading command-line arguments\n");
    6569
    66     if (!data->patternName && !data->backgroundName) {
    67         psError(PPBACKGROUND_ERR_CONFIG, true, "Must specify at least one of -pattern and -background");
     70    if (!data->patternName && !data->backgroundName && !data->auxMaskName) {
     71        psError(PPBACKGROUND_ERR_CONFIG, true, "Must specify at least one of -pattern and -background -auxmask");
    6872        return false;
    6973    }
  • trunk/ppBackground/src/ppBackgroundCamera.c

    r28289 r35118  
    6565    }
    6666
     67    fileArguments("VARIANCE", data->varianceName, "Input uncorrected variance", data->config);
     68    pmFPAfileBindFromArgs(&status, image, data->config, "PPBACKGROUND.VARIANCE", "VARIANCE"); // File
     69    if (!status) {
     70        psError(psErrorCodeLast(), false, "Failed to build file from PPBACKGROUND.VARIANCE");
     71        return false;
     72    }
     73
     74    if (data->auxMaskName) {
     75        fileArguments("AUXMASK", data->auxMaskName, "Auxiliary mask", data->config);
     76        pmFPAfileBindFromArgs(&status, image, data->config, "PPBACKGROUND.AUXMASK", "AUXMASK"); // File
     77        if (!status) {
     78            psError(psErrorCodeLast(), false, "Failed to build file from PPBACKGROUND.MASK");
     79            return false;
     80        }
     81    }
     82
    6783    pmFPAfile *output = pmFPAfileDefineOutput(data->config, image->fpa, "PPBACKGROUND.OUTPUT");
    6884    if (!output) {
     
    7995    outMask->save = true;
    8096
     97    pmFPAfile *outVariance = pmFPAfileDefineOutput(data->config, output->fpa, "PPBACKGROUND.OUTPUT.VARIANCE");
     98    if (!outVariance) {
     99        psError(psErrorCodeLast(), false, "Unable to define output.");
     100        return false;
     101    }
     102    outVariance->save = true;
     103
    81104#if 0
    82105    // Now the camera has been determined, we can read the recipe
  • trunk/ppBackground/src/ppBackgroundData.c

    r28276 r35118  
    1717    psFree(data->imageName);
    1818    psFree(data->maskName);
     19    psFree(data->varianceName);
     20    psFree(data->auxMaskName);
    1921    psFree(data->outRoot);
    2022    psFree(data->stats);
     
    3335    data->imageName = NULL;
    3436    data->maskName = NULL;
     37    data->varianceName = NULL;
     38    data->auxMaskName = NULL;
    3539    data->outRoot = NULL;
    3640    data->stats = NULL;
  • trunk/ppBackground/src/ppBackgroundLoop.c

    r28300 r35118  
    135135        pmChip *patternChip = patternFile ? pmFPAviewThisChip(view, patternMosaic) : NULL; // Chip with pattern
    136136        pmChip *bgChip = bgFile ? pmFPAviewThisChip(view, bgFile->fpa) : NULL; // Chip with background model
    137         if (!ppBackgroundRestore(chip, bgChip, patternChip, view, config)) {
     137        if (!ppBackgroundRestore(chip, bgChip, patternChip, view, config, maskBad)) {
    138138            psError(psErrorCodeLast(), false, "Unable to replace background");
    139139            return false;
  • trunk/ppBackground/src/ppBackgroundRestore.c

    r34813 r35118  
    3535
    3636bool ppBackgroundRestore(pmChip *chip, const pmChip *background, const pmChip *pattern,
    37                          const pmFPAview *oldView, pmConfig *config)
     37                         const pmFPAview *oldView, pmConfig *config, psImageMaskType maskBad)
    3838{
    3939    PS_ASSERT_PTR_NON_NULL(chip, false);
     
    120120    }
    121121
     122    psImage *auxMask = psMetadataLookupPtr(NULL, ro->analysis, "EXPNUM");
     123    if (auxMask) {
     124        if (auxMask->numCols != mask->numCols || auxMask->numRows != mask->numRows) {
     125            psError(PPBACKGROUND_ERR_DATA, true, "auxiliary mask size (%d x %d) does not match input size (%d x %d)",
     126                auxMask->numCols, auxMask->numRows, numCols, numRows);
     127            return false;
     128        }
     129        // Arno's masks are floating point, fix later and zero means bad
     130        #define AUXMASK_DATA F32
     131        for (int y = 0; y < numRows; y++) {
     132            for (int x = 0; x < numCols; x++) {
     133                if (auxMask->data.AUXMASK_DATA[y][x] == 0) {
     134                    mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= maskBad;
     135                }
     136            }
     137        }
     138    }
     139
     140
    122141    ro->data_exists = true;
    123142    ro->parent->data_exists = true;
Note: See TracChangeset for help on using the changeset viewer.