IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27412


Ignore:
Timestamp:
Mar 23, 2010, 1:54:27 PM (16 years ago)
Author:
Paul Price
Message:

Fixing compression, adding weighted exposure map.

Location:
branches/pap_stack
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/pap_stack/ippconfig/recipes/filerules-mef.mdc

    r27400 r27412  
    265265PPSTACK.OUTPUT.MASK     OUTPUT {OUTPUT}.mk.fits                  MASK      COMP_MASK  FPA        TRUE      NONE
    266266PPSTACK.OUTPUT.VARIANCE OUTPUT {OUTPUT}.wt.fits                  VARIANCE  COMP_WT    FPA        TRUE      NONE
    267 PPSTACK.OUTPUT.EXP      OUTPUT {OUTPUT}.exp.fits                 IMAGE     NONE       FPA        TRUE      NONE
    268 PPSTACK.OUTPUT.EXPNUM   OUTPUT {OUTPUT}.num.fits                 MASK      NONE       FPA        TRUE      NONE
     267PPSTACK.OUTPUT.EXP      OUTPUT {OUTPUT}.exp.fits                 IMAGE     EXP        FPA        TRUE      NONE
     268PPSTACK.OUTPUT.EXPNUM   OUTPUT {OUTPUT}.num.fits                 MASK      EXPNUM     FPA        TRUE      NONE
     269PPSTACK.OUTPUT.EXPWT    OUTPUT {OUTPUT}.expwt.fits               VARIANCE  EXP        FPA        TRUE      NONE
    269270PPSTACK.UNCONV          OUTPUT {OUTPUT}.unconv.fits              IMAGE     COMP_IMG   FPA        TRUE      NONE
    270271PPSTACK.UNCONV.MASK     OUTPUT {OUTPUT}.unconv.mask.fits         MASK      COMP_MASK  FPA        TRUE      NONE
    271272PPSTACK.UNCONV.VARIANCE OUTPUT {OUTPUT}.unconv.wt.fits           VARIANCE  COMP_WT    FPA        TRUE      NONE
    272 PPSTACK.UNCONV.EXP      OUTPUT {OUTPUT}.unconv.exp.fits          IMAGE     NONE       FPA        TRUE      NONE
    273 PPSTACK.UNCONV.EXPNUM   OUTPUT {OUTPUT}.unconv.num.fits          MASK      NONE       FPA        TRUE      NONE
     273PPSTACK.UNCONV.EXP      OUTPUT {OUTPUT}.unconv.exp.fits          IMAGE     EXP        FPA        TRUE      NONE
     274PPSTACK.UNCONV.EXPNUM   OUTPUT {OUTPUT}.unconv.num.fits          MASK      EXPNUM     FPA        TRUE      NONE
     275PPSTACK.UNCONV.EXPWT    OUTPUT {OUTPUT}.unconv.expwt.fits        VARIANCE  EXP        FPA        TRUE      NONE
    274276PPSTACK.TARGET.PSF      OUTPUT {OUTPUT}.target.psf               PSF       NONE       CHIP       TRUE      NONE
    275277PPSTACK.CONV.KERNEL     OUTPUT {OUTPUT}.{FILE.INDEX}.kernel      SUBKERNEL NONE       FPA        TRUE      NONE
  • branches/pap_stack/ippconfig/recipes/filerules-simple.mdc

    r27410 r27412  
    216216PPSTACK.OUTPUT.EXP      OUTPUT {OUTPUT}.exp.fits     IMAGE     EXP        FPA        TRUE      NONE
    217217PPSTACK.OUTPUT.EXPNUM   OUTPUT {OUTPUT}.num.fits     MASK      EXPNUM     FPA        TRUE      NONE
     218PPSTACK.OUTPUT.EXPWT    OUTPUT {OUTPUT}.expwt.fits   VARIANCE  EXP        FPA        TRUE      NONE
    218219PPSTACK.UNCONV          OUTPUT {OUTPUT}.unconv.fits  IMAGE     COMP_IMG   FPA        TRUE      NONE
    219220PPSTACK.UNCONV.MASK     OUTPUT {OUTPUT}.unconv.mask.fits MASK  COMP_MASK  FPA        TRUE      NONE
     
    221222PPSTACK.UNCONV.EXP      OUTPUT {OUTPUT}.unconv.exp.fits IMAGE  EXP        FPA        TRUE      NONE
    222223PPSTACK.UNCONV.EXPNUM   OUTPUT {OUTPUT}.unconv.num.fits MASK   EXPNUM     FPA        TRUE      NONE
     224PPSTACK.UNCONV.EXPWT    OUTPUT {OUTPUT}.unconv.expwt.fits VARIANCE EXP    FPA        TRUE      NONE
    223225PPSTACK.TARGET.PSF      OUTPUT {OUTPUT}.target.psf   PSF       NONE       CHIP       TRUE      NONE
    224226PPSTACK.CONV.KERNEL     OUTPUT {OUTPUT}.{FILE.INDEX}.kernel SUBKERNEL NONE FPA       TRUE      NONE
  • branches/pap_stack/ippconfig/recipes/filerules-split.mdc

    r27400 r27412  
    233233PPSTACK.OUTPUT.MASK     OUTPUT {OUTPUT}.mask.fits                MASK      COMP_MASK  FPA        TRUE      NONE
    234234PPSTACK.OUTPUT.VARIANCE OUTPUT {OUTPUT}.wt.fits                  VARIANCE  COMP_WT    FPA        TRUE      NONE
    235 PPSTACK.OUTPUT.EXP      OUTPUT {OUTPUT}.exp.fits                 IMAGE     NONE       FPA        TRUE      NONE
    236 PPSTACK.OUTPUT.EXPNUM   OUTPUT {OUTPUT}.num.fits                 MASK      NONE       FPA        TRUE      NONE
     235PPSTACK.OUTPUT.EXP      OUTPUT {OUTPUT}.exp.fits                 IMAGE     EXP        FPA        TRUE      NONE
     236PPSTACK.OUTPUT.EXPNUM   OUTPUT {OUTPUT}.num.fits                 MASK      EXPNUM     FPA        TRUE      NONE
     237PPSTACK.OUTPUT.EXPWT    OUTPUT {OUTPUT}.expwt.fits               VARIANCE  EXP        FPA        TRUE      NONE
    237238PPSTACK.UNCONV          OUTPUT {OUTPUT}.unconv.fits              IMAGE     COMP_IMG   FPA        TRUE      NONE
    238239PPSTACK.UNCONV.MASK     OUTPUT {OUTPUT}.unconv.mask.fits         MASK      COMP_MASK  FPA        TRUE      NONE
    239240PPSTACK.UNCONV.VARIANCE OUTPUT {OUTPUT}.unconv.wt.fits           VARIANCE  COMP_WT    FPA        TRUE      NONE
    240 PPSTACK.UNCONV.EXP      OUTPUT {OUTPUT}.unconv.exp.fits          IMAGE     NONE       FPA        TRUE      NONE
    241 PPSTACK.UNCONV.EXPNUM   OUTPUT {OUTPUT}.unconv.num.fits          MASK      NONE       FPA        TRUE      NONE
     241PPSTACK.UNCONV.EXP      OUTPUT {OUTPUT}.unconv.exp.fits          IMAGE     EXP        FPA        TRUE      NONE
     242PPSTACK.UNCONV.EXPNUM   OUTPUT {OUTPUT}.unconv.num.fits          MASK      EXPNUM     FPA        TRUE      NONE
     243PPSTACK.UNCONV.EXPWT    OUTPUT {OUTPUT}.unconv.expwt.fits        VARIANCE  EXP        FPA        TRUE      NONE
    242244PPSTACK.TARGET.PSF      OUTPUT {OUTPUT}.target.psf               PSF       NONE       CHIP       TRUE      NONE
    243245PPSTACK.CONV.KERNEL     OUTPUT {OUTPUT}.{FILE.INDEX}.kernel      SUBKERNEL NONE       FPA        TRUE      NONE
  • branches/pap_stack/ippconfig/recipes/fitstypes.mdc

    r27410 r27412  
    103103        BITPIX          S32     16
    104104        SCALING         STR     MANUAL
     105        # Note: TRUE = BZERO + BSCALE * DISK
    105106        BSCALE          F32     0.1     # Disk is stored as 1/10th sec
    106         BZERO           F32     3276.7  # Store unsigned zero as zero
     107        BZERO           F32     3276.8  # Store unsigned zero as zero
    107108        COMPRESSION     STR     GZIP
    108109        TILE.X          S32     0
  • branches/pap_stack/ppStack/src/ppStackCamera.c

    r27400 r27412  
    310310    pmFPAfile *expNum = pmFPAfileDefineOutput(config, exp->fpa, "PPSTACK.OUTPUT.EXPNUM");
    311311    if (!expNum) {
    312         psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.OUTPUT.MASK"));
     312        psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.OUTPUT.EXPNUM"));
    313313        return false;
    314314    }
     
    319319    expNum->save = true;
    320320
     321    // Weighted exposure
     322    pmFPAfile *expWt = pmFPAfileDefineOutput(config, exp->fpa, "PPSTACK.OUTPUT.EXPWT");
     323    if (!expWt) {
     324        psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.OUTPUT.EXPWT"));
     325        return false;
     326    }
     327    if (expWt->type != PM_FPA_FILE_VARIANCE) {
     328        psError(PPSTACK_ERR_CONFIG, true, "PPSTACK.OUTPUT.EXPWT is not of type VARIANCE");
     329        return false;
     330    }
     331    expWt->save = true;
    321332
    322333
     
    413424    }
    414425
    415     // Output mask
     426    // Exposure numbers
    416427    pmFPAfile *unconvExpNum = pmFPAfileDefineOutput(config, unconvExp->fpa, "PPSTACK.UNCONV.EXPNUM");
    417428    if (!unconvExpNum) {
     
    425436    unconvExpNum->save = true;
    426437
     438    // Weighted exposure
     439    pmFPAfile *unconvExpWt = pmFPAfileDefineOutput(config, unconvExp->fpa, "PPSTACK.UNCONV.EXPWT");
     440    if (!unconvExpWt) {
     441        psError(psErrorCodeLast(), false, _("Unable to generate output file from PPSTACK.UNCONV.EXPWT"));
     442        return false;
     443    }
     444    if (unconvExpWt->type != PM_FPA_FILE_VARIANCE) {
     445        psError(PPSTACK_ERR_CONFIG, true, "PPSTACK.UNCONV.EXPWT is not of type VARIANCE");
     446        return false;
     447    }
     448    unconvExpWt->save = true;
    427449
    428450    // Output JPEGs
  • branches/pap_stack/ppStack/src/ppStackFiles.c

    r27400 r27412  
    2323/// Regular (convolved) stack files
    2424static char *filesStack[] = { "PPSTACK.OUTPUT", "PPSTACK.OUTPUT.MASK", "PPSTACK.OUTPUT.VARIANCE",
    25                               "PPSTACK.OUTPUT.EXP", "PPSTACK.OUTPUT.EXPNUM",
     25                              "PPSTACK.OUTPUT.EXP", "PPSTACK.OUTPUT.EXPNUM", "PPSTACK.OUTPUT.EXPWT",
    2626                              "PPSTACK.OUTPUT.JPEG1", "PPSTACK.OUTPUT.JPEG2",
    2727                              NULL };
    2828/// Unconvolved stack files
    2929static char *filesUnconv[] = { "PPSTACK.UNCONV", "PPSTACK.UNCONV.MASK", "PPSTACK.UNCONV.VARIANCE",
    30                                "PPSTACK.UNCONV.EXP", "PPSTACK.UNCONV.EXPNUM", NULL };
     30                               "PPSTACK.UNCONV.EXP", "PPSTACK.UNCONV.EXPNUM", "PPSTACK.UNCONV.EXPWT",
     31                               NULL };
    3132
    3233/// Files for photometry
  • branches/pap_stack/psModules/src/imcombine/pmStack.c

    r27400 r27412  
    3434
    3535
    36 //#define TESTING                         // Enable test output
    37 //#define TEST_X 843-1                     // x coordinate to examine
    38 //#define TEST_Y 813-1                     // y coordinate to examine
    39 //#define TEST_RADIUS 0                    // Radius to examine
     36#define TESTING                         // Enable test output
     37#define TEST_X 843-1                     // x coordinate to examine
     38#define TEST_Y 813-1                     // y coordinate to examine
     39#define TEST_RADIUS 0                    // Radius to examine
    4040
    4141
     
    129129    float sumExp = 0.0;                 // Sum of the exposure time
    130130    float sumExpWeight = 0.0;           // Sum of the exposure time multiplied by the global weights
     131    int numGood = 0;                    // Number of good exposures
    131132    for (int i = 0; i < values->n; i++) {
    132133        sumValueWeight += values->data.F32[i] * weights->data.F32[i];
     
    138139            sumExp += exps->data.F32[i];
    139140            sumExpWeight += exps->data.F32[i] * weights->data.F32[i];
     141            numGood++;
    140142        }
    141143    }
     
    153155    }
    154156    if (expWeight) {
    155         *expWeight = sumExpWeight / sumWeight;
     157        *expWeight = sumExpWeight;
    156158    }
    157159    return true;
     
    391393                          int x, int y, // Coordinates of interest; frame of output image
    392394                          psImageMaskType bad, // Value for bad pixels
    393                           bool safe             // Safe combination?
     395                          bool safe,           // Safe combination?
     396                          float invTotalWeight    // Inverse of total weight for all inputs
    394397                          )
    395398{
     
    423426              if (exp) {
    424427                  expValue = pixelExps->data.F32[0];
     428                  expWeightValue = pixelExps->data.F32[0];
    425429              }
    426430              maskValue = 0;
     
    490494    }
    491495    if (expweight) {
    492         expweight->data.F32[y][x] = expWeightValue;
     496        expweight->data.F32[y][x] = expWeightValue * invTotalWeight;
    493497    }
    494498
     
    10241028    psVector *exps = psVectorAlloc(num, PS_TYPE_F32);    // Exposure times for each image
    10251029    psArray *stack = psArrayAlloc(num); // Stack of readouts
     1030    float totalExpWeight = 0.0;           // Total value of all weighted exposure times
     1031    float totalExp = 0.0;                 // Total exposure time
    10261032    for (int i = 0; i < num; i++) {
    10271033        pmStackData *data = input->data[i]; // Stack data for this input
     
    10331039        weights->data.F32[i] = data->weight;
    10341040        exps->data.F32[i] = data->exp;
     1041        totalExp += exps->data.F32[i];
     1042        totalExpWeight += exps->data.F32[i] * weights->data.F32[i];
    10351043        pmReadout *ro = data->readout;  // Readout of interest
    10361044        stack->data[i] = psMemIncrRefCounter(ro);
     
    10511059        }
    10521060    }
     1061    totalExpWeight = totalExp / totalExpWeight;    // Convert to inverse
    10531062
    10541063    int minInputCols, maxInputCols, minInputRows, maxInputRows; // Smallest and largest values to combine
     
    10951104    }
    10961105
    1097     psImage *exp = NULL, *expnum = NULL; // Exposure map and exposure number
     1106    psImage *exp = NULL, *expnum = NULL, *expweight = NULL; // Exposure map and exposure number
    10981107    if (expmaps) {
    10991108        if (!expmaps->image) {
     
    11061115        }
    11071116        expnum = expmaps->mask;
     1117
     1118        if (!expmaps->variance) {
     1119            expmaps->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     1120        }
     1121        expweight = expmaps->variance;
    11081122    }
    11091123
     
    11451159            combineExtract(&num, &suspect, buffer, combinedImage, combinedMask, combinedVariance,
    11461160                           input, weights, exps, addVariance, reject, x, y, maskVal, maskSuspect);
    1147             combinePixels(combinedImage, combinedMask, combinedVariance, exp, expnum, NULL,
    1148                           num, buffer, x, y, bad, safe);
     1161            combinePixels(combinedImage, combinedMask, combinedVariance, exp, expnum, expweight,
     1162                          num, buffer, x, y, bad, safe, totalExpWeight);
    11491163
    11501164            if (iter > 0) {
Note: See TracChangeset for help on using the changeset viewer.