IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 14, 2007, 3:32:16 PM (18 years ago)
Author:
Paul Price
Message:

Using pmPSFEnvelope to generate a target PSF.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStack/src/ppStackCamera.c

    r14834 r15844  
    1414{
    1515    bool haveWeights = false;           // Do we have weight maps?
     16    bool havePSFs = false;              // Do we have PSFs?
    1617
    1718    psMetadata *inputs = psMetadataLookupMetadata(NULL, config->arguments, "INPUTS"); // The inputs info
     
    3940        psString mask = psMetadataLookupStr(&mdok, input, "MASK"); // Name of mask
    4041        psString weight = psMetadataLookupStr(&mdok, input, "WEIGHT"); // Name of weight map
     42        psString psf = psMetadataLookupStr(&mdok, input, "PSF"); // Name of PSF
    4143
    4244        float weighting = psMetadataLookupF32(&mdok, input, "WEIGHTING"); // Relative weighting
     
    115117        }
    116118
     119        // Optionally add the psf file
     120        if (psf && strlen(psf) > 0) {
     121            havePSFs = true;
     122            psArray *psfFiles = psArrayAlloc(1); // Array of filenames for this FPA
     123            psfFiles->data[0] = psMemIncrRefCounter(psf);
     124            psMetadataAddArray(config->arguments, PS_LIST_TAIL, "PSF.FILENAMES", PS_META_REPLACE,
     125                               "Filenames of PSF files", psfFiles);
     126            psFree(psfFiles);
     127
     128            bool status;
     129            pmFPAfile *psfFile = pmFPAfileBindFromArgs(&status, imageFile, config, "PSPHOT.PSF.LOAD",
     130                                                       "PSF.FILENAMES");
     131            if (!status) {
     132                psError(PS_ERR_UNKNOWN, false, "Unable to define file from psf %d (%s)", i, psf);
     133                return false;
     134            }
     135            if (psfFile->type != PM_FPA_FILE_PSF) {
     136                psError(PS_ERR_IO, true, "PSPHOT.PSF.LOAD is not of type PSF");
     137                return false;
     138            }
     139        }
     140
    117141        psMetadataAddF32(imageFile->fpa->analysis, PS_LIST_TAIL, "PPSTACK.WEIGHTING", 0,
    118142                         "Relative weighting for image", weighting);
     
    129153    if (psMetadataLookup(config->arguments, "WEIGHT.FILENAMES")) {
    130154        psMetadataRemoveKey(config->arguments, "WEIGHT.FILENAMES");
     155    }
     156    if (psMetadataLookup(config->arguments, "PSF.FILENAMES")) {
     157        psMetadataRemoveKey(config->arguments, "PSF.FILENAMES");
    131158    }
    132159
     
    214241    }
    215242
     243    // Output PSF
     244    if (havePSFs) {
     245        pmFPAfile *outPSF = pmFPAfileDefineOutput(config, output->fpa, "PSPHOT.PSF.SAVE");
     246        if (!outPSF) {
     247            psError(PS_ERR_IO, false, _("Unable to generate output file from PSPHOT.PSF.SAVE"));
     248            return false;
     249        }
     250        if (outPSF->type != PM_FPA_FILE_PSF) {
     251            psError(PS_ERR_IO, true, "PSPHOT.PSF.SAVE is not of type PSF");
     252            return false;
     253        }
     254        outPSF->save = true;
     255    }
     256
    216257    // Sources for use as stamps
    217258    bool status = false;                // Found the file?
Note: See TracChangeset for help on using the changeset viewer.