IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20505


Ignore:
Timestamp:
Oct 31, 2008, 5:36:01 PM (18 years ago)
Author:
Paul Price
Message:

Making relative systematic error in kernel a configurable parameter instead of #define.

Location:
trunk/psModules/src/imcombine
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/imcombine/pmStackReject.c

    r20420 r20505  
    168168        psRegion *region = subRegions->data[i]; // Region of interest
    169169        pmSubtractionKernels *kernels = subKernels->data[i]; // Kernel of interest
    170         if (!pmSubtractionConvolve(convRO, NULL, inRO, NULL, NULL, 0, 0, 1.0, region, kernels, false, true)) {
     170        if (!pmSubtractionConvolve(convRO, NULL, inRO, NULL, NULL, 0, 0, 1.0, NAN,
     171                                   region, kernels, false, true)) {
    171172            psError(PS_ERR_UNKNOWN, false, "Unable to convolve mask image in region %d.", i);
    172173            psFree(convRO);
  • trunk/psModules/src/imcombine/pmSubtraction.c

    r20466 r20505  
    2929#define PIXEL_LIST_BUFFER 100           // Number of entries to add to pixel list at a time
    3030#define MIN_SAMPLE_STATS    7           // Minimum number to use sample statistics; otherwise use quartiles
    31 
    32 //#define SYS_ERROR 0.00                  // Relative error in derived convolution kernel pixels
    3331
    3432//////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    459457
    460458// Generate an image that can be used to track systematic errors
    461 static psImage *subtractionSysErrImage(const psImage *image     // Image from which to make sys err image
     459static psImage *subtractionSysErrImage(const psImage *image, // Image from which to make sys err image
     460                                       float sysError // Relative systematic error
    462461                                       )
    463462{
    464 #ifndef SYS_ERROR
    465     return NULL;
    466 #else
     463    if (!isfinite(sysError) || sysError == 0.0) {
     464        return NULL;
     465    }
     466
    467467    int numCols = image->numCols, numRows = image->numRows; // Size of image
    468468    psImage *sys = psImageAlloc(numCols, numRows, PS_TYPE_F32); // Systematic error image
    469469
     470    float sysError2 = PS_SQR(sysError); // Square of the systematic error
    470471    for (int y = 0; y < numRows; y++) {
    471472        for (int x = 0; x < numCols; x++) {
    472             sys->data.F32[y][x] = PS_SQR(image->data.F32[y][x]) * PS_SQR(SYS_ERROR);
     473            sys->data.F32[y][x] = PS_SQR(image->data.F32[y][x]) * sysError2;
    473474        }
    474475    }
    475476
    476477    return sys;
    477 #endif
    478478}
    479479
     
    10891089bool pmSubtractionConvolve(pmReadout *out1, pmReadout *out2, const pmReadout *ro1, const pmReadout *ro2,
    10901090                           psImage *subMask, psMaskType maskBad, psMaskType maskPoor, float poorFrac,
    1091                            const psRegion *region, const pmSubtractionKernels *kernels,
     1091                           float sysError, const psRegion *region, const pmSubtractionKernels *kernels,
    10921092                           bool doBG, bool useFFT)
    10931093{
     
    11971197    psImage *sys1 = NULL, *sys2 = NULL; // Systematic error images
    11981198    if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) {
    1199         sys1 = subtractionSysErrImage(ro1->image);
     1199        sys1 = subtractionSysErrImage(ro1->image, sysError);
    12001200        if (threaded && sys1) {
    12011201            psMutexInit(sys1);
     
    12031203    }
    12041204    if (kernels->mode == PM_SUBTRACTION_MODE_2 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) {
    1205         sys2 = subtractionSysErrImage(ro2->image);
     1205        sys2 = subtractionSysErrImage(ro2->image, sysError);
    12061206        if (threaded && sys2) {
    12071207            psMutexInit(sys2);
  • trunk/psModules/src/imcombine/pmSubtraction.h

    r19532 r20505  
    66 * @author GLG, MHPCC
    77 *
    8  * @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
    9  * @date $Date: 2008-09-12 04:12:42 $
     8 * @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
     9 * @date $Date: 2008-11-01 03:36:01 $
    1010 * Copyright 2004-207 Institute for Astronomy, University of Hawaii
    1111 */
     
    106106                           psMaskType maskPoor, ///< Mask value to give poor pixels
    107107                           float poorFrac, ///< Fraction for "poor"
     108                           float sysError, ///< Relative systematic error
    108109                           const psRegion *region, ///< Region to convolve (or NULL)
    109110                           const pmSubtractionKernels *kernels, ///< Kernel parameters
  • trunk/psModules/src/imcombine/pmSubtractionMatch.c

    r20465 r20505  
    9898                        int inner, int ringsOrder, int binning, float penalty,
    9999                        bool optimum, const psVector *optFWHMs, int optOrder, float optThreshold,
    100                         int iter, float rej, psMaskType maskVal, psMaskType maskBad, psMaskType maskPoor,
    101                         float poorFrac, float badFrac, pmSubtractionMode subMode)
     100                        int iter, float rej, float sysError, psMaskType maskVal, psMaskType maskBad,
     101                        psMaskType maskPoor, float poorFrac, float badFrac, pmSubtractionMode subMode)
    102102{
    103103    if (subMode != PM_SUBTRACTION_MODE_2) {
     
    167167    PS_ASSERT_INT_POSITIVE(iter, false);
    168168    PS_ASSERT_FLOAT_LARGER_THAN(rej, 0.0, false);
     169    if (isfinite(sysError)) {
     170        PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(sysError, 0.0, NULL);
     171        PS_ASSERT_FLOAT_LESS_THAN(sysError, 1.0, NULL);
     172    }
    169173    // Don't care about maskVal
    170174    // Don't care about maskBad
     
    393397            psTrace("psModules.imcombine", 2, "Convolving...\n");
    394398            if (!pmSubtractionConvolve(conv1, conv2, ro1, ro2, subMask, maskBad, maskPoor, poorFrac,
    395                                        region, kernels, true, useFFT)) {
     399                                       sysError, region, kernels, true, useFFT)) {
    396400                psError(PS_ERR_UNKNOWN, false, "Unable to convolve image.");
    397401                goto MATCH_ERROR;
  • trunk/psModules/src/imcombine/pmSubtractionMatch.h

    r20049 r20505  
    3838                        int iter,       ///< Rejection iterations
    3939                        float rej,      ///< Rejection threshold
     40                        float sysError, ///< Relative systematic error
    4041                        psMaskType maskVal, ///< Value to mask for input
    4142                        psMaskType maskBad, ///< Mask for output bad pixels
Note: See TracChangeset for help on using the changeset viewer.