IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 31, 2010, 5:00:42 PM (16 years ago)
Author:
eugene
Message:

updates relative to 20091201, fixes for all psphot variants

Location:
branches/eam_branches/psModules.stack.20100120
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/psModules.stack.20100120

  • branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtractionKernels.c

    r26657 r26747  
    276276pmSubtractionKernels *p_pmSubtractionKernelsRawISIS(int size, int spatialOrder,
    277277                                                    const psVector *fwhmsIN, const psVector *ordersIN,
    278                                                     float penalty, pmSubtractionMode mode)
     278                                                    float penalty, psRegion bounds, pmSubtractionMode mode)
    279279{
    280280    PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL);
     
    306306
    307307    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_ISIS, size,
    308                                                               spatialOrder, penalty, mode); // The kernels
     308                                                              spatialOrder, penalty, bounds, mode); // Kernels
    309309    psStringAppend(&kernels->description, "ISIS(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty);
    310310
     
    332332pmSubtractionKernels *pmSubtractionKernelsISIS_RADIAL(int size, int spatialOrder,
    333333                                                      const psVector *fwhmsIN, const psVector *ordersIN,
    334                                                       float penalty, pmSubtractionMode mode)
     334                                                      float penalty, psRegion bounds, pmSubtractionMode mode)
    335335{
    336336    PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL);
     
    362362    }
    363363
    364     pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_ISIS_RADIAL, size, spatialOrder, penalty, mode); // The kernels
     364    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_ISIS_RADIAL, size,
     365                                                              spatialOrder, penalty, bounds, mode); // Kernels
    365366    psStringAppend(&kernels->description, "ISIS_RADIAL(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty);
    366367
     
    389390pmSubtractionKernels *pmSubtractionKernelsHERM(int size, int spatialOrder,
    390391                                               const psVector *fwhmsIN, const psVector *ordersIN,
    391                                                float penalty, pmSubtractionMode mode)
     392                                               float penalty, psRegion bounds, pmSubtractionMode mode)
    392393{
    393394    PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL);
     
    418419    }
    419420
    420     pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_HERM, size, spatialOrder, penalty, mode); // The kernels
     421    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_HERM, size,
     422                                                              spatialOrder, penalty, bounds, mode); // Kernels
    421423    psStringAppend(&kernels->description, "HERM(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty);
    422424
    423     psLogMsg("psModules.imcombine", PS_LOG_INFO, "HERM kernel: %s,%d --> %d elements", params, spatialOrder, num);
     425    psLogMsg("psModules.imcombine", PS_LOG_INFO, "HERM kernel: %s,%d --> %d elements",
     426             params, spatialOrder, num);
    424427    psFree(params);
    425428
     
    440443
    441444pmSubtractionKernels *pmSubtractionKernelsDECONV_HERM(int size, int spatialOrder,
    442                                                      const psVector *fwhmsIN, const psVector *ordersIN,
    443                                                      float penalty, pmSubtractionMode mode)
     445                                                      const psVector *fwhmsIN, const psVector *ordersIN,
     446                                                      float penalty, psRegion bounds, pmSubtractionMode mode)
    444447{
    445448    PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL);
     
    470473    }
    471474
    472     pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_DECONV_HERM, size, spatialOrder, penalty, mode); // The kernels
     475    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_DECONV_HERM, size,
     476                                                              spatialOrder, penalty, bounds, mode); // Kernels
    473477    psStringAppend(&kernels->description, "DECONV_HERM(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty);
    474478
     
    545549
    546550pmSubtractionKernels *pmSubtractionKernelsAlloc(int numBasisFunctions, pmSubtractionKernelsType type,
    547                                                 int size, int spatialOrder, float penalty,
     551                                                int size, int spatialOrder, float penalty, psRegion bounds,
    548552                                                pmSubtractionMode mode)
    549553{
     
    559563    kernels->uStop = NULL;
    560564    kernels->vStop = NULL;
     565    kernels->xMin = bounds.x0;
     566    kernels->xMax = bounds.x1;
     567    kernels->yMin = bounds.y0;
     568    kernels->yMax = bounds.y1;
    561569    kernels->preCalc = psArrayAlloc(numBasisFunctions);
    562570    kernels->penalty = penalty;
     
    567575    kernels->bgOrder = 0;
    568576    kernels->mode = mode;
    569     kernels->numCols = 0;
    570     kernels->numRows = 0;
    571577    kernels->solution1 = NULL;
    572578    kernels->solution2 = NULL;
     
    641647}
    642648
    643 pmSubtractionKernels *pmSubtractionKernelsPOIS(int size, int spatialOrder, float penalty,
     649pmSubtractionKernels *pmSubtractionKernelsPOIS(int size, int spatialOrder, float penalty, psRegion bounds,
    644650                                               pmSubtractionMode mode)
    645651{
     
    650656
    651657    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(0, PM_SUBTRACTION_KERNEL_POIS, size,
    652                                                               spatialOrder, penalty, mode); // The kernels
     658                                                              spatialOrder, penalty, bounds, mode); // Kernels
    653659    psStringAppend(&kernels->description, "POIS(%d,%d,%.2e)", size, spatialOrder, penalty);
    654660    psLogMsg("psModules.imcombine", PS_LOG_INFO, "POIS kernel: %d,%d --> %d elements",
     
    665671pmSubtractionKernels *pmSubtractionKernelsISIS(int size, int spatialOrder,
    666672                                               const psVector *fwhms, const psVector *orders,
    667                                                float penalty, pmSubtractionMode mode)
     673                                               float penalty, psRegion bounds, pmSubtractionMode mode)
    668674{
    669675    pmSubtractionKernels *kernels = p_pmSubtractionKernelsRawISIS(size, spatialOrder, fwhms, orders,
    670                                                                   penalty, mode); // Kernels
     676                                                                  penalty, bounds, mode); // Kernels
    671677    if (!kernels) {
    672678        return NULL;
     
    677683
    678684pmSubtractionKernels *pmSubtractionKernelsSPAM(int size, int spatialOrder, int inner, int binning,
    679                                                float penalty, pmSubtractionMode mode)
     685                                               float penalty, psRegion bounds, pmSubtractionMode mode)
    680686{
    681687    PS_ASSERT_INT_POSITIVE(size, NULL);
     
    698704
    699705    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_SPAM, size,
    700                                                               spatialOrder, penalty, mode); // The kernels
     706                                                              spatialOrder, penalty, bounds, mode); // Kernels
    701707    kernels->inner = inner;
    702708    psStringAppend(&kernels->description, "SPAM(%d,%d,%d,%d,%.2e)", size, inner, binning, spatialOrder,
     
    769775
    770776pmSubtractionKernels *pmSubtractionKernelsFRIES(int size, int spatialOrder, int inner, float penalty,
    771                                                 pmSubtractionMode mode)
     777                                                psRegion bounds, pmSubtractionMode mode)
    772778{
    773779    PS_ASSERT_INT_POSITIVE(size, NULL);
     
    796802
    797803    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_FRIES, size,
    798                                                               spatialOrder, penalty, mode); // The kernels
     804                                                              spatialOrder, penalty, bounds, mode); // Kernels
    799805    kernels->inner = inner;
    800806    psStringAppend(&kernels->description, "FRIES(%d,%d,%d,%.2e)", size, inner, spatialOrder, penalty);
     
    865871pmSubtractionKernels *pmSubtractionKernelsGUNK(int size, int spatialOrder, const psVector *fwhms,
    866872                                               const psVector *orders, int inner, float penalty,
    867                                                pmSubtractionMode mode)
     873                                               psRegion bounds, pmSubtractionMode mode)
    868874{
    869875    PS_ASSERT_INT_POSITIVE(size, NULL);
     
    878884
    879885    pmSubtractionKernels *kernels = p_pmSubtractionKernelsRawISIS(size, spatialOrder, fwhms, orders,
    880                                                                   penalty, mode); // Kernels
     886                                                                  penalty, bounds, mode); // Kernels
    881887    kernels->type = PM_SUBTRACTION_KERNEL_GUNK;
    882888    psStringPrepend(&kernels->description, "GUNK=");
     
    894900// RINGS --- just what it says
    895901pmSubtractionKernels *pmSubtractionKernelsRINGS(int size, int spatialOrder, int inner, int ringsOrder,
    896                                                 float penalty, pmSubtractionMode mode)
     902                                                float penalty, psRegion bounds, pmSubtractionMode mode)
    897903{
    898904    PS_ASSERT_INT_POSITIVE(size, NULL);
     
    925931
    926932    pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_RINGS, size,
    927                                                               spatialOrder, penalty, mode); // The kernels
     933                                                              spatialOrder, penalty, bounds, mode); // Kernels
    928934    kernels->inner = inner;
    929935    psStringAppend(&kernels->description, "RINGS(%d,%d,%d,%d,%.2e)", size, inner, ringsOrder, spatialOrder,
     
    10471053pmSubtractionKernels *pmSubtractionKernelsGenerate(pmSubtractionKernelsType type, int size, int spatialOrder,
    10481054                                                   const psVector *fwhms, const psVector *orders, int inner,
    1049                                                    int binning, int ringsOrder, float penalty,
     1055                                                   int binning, int ringsOrder, float penalty, psRegion bounds,
    10501056                                                   pmSubtractionMode mode)
    10511057{
    10521058    switch (type) {
    10531059      case PM_SUBTRACTION_KERNEL_POIS:
    1054         return pmSubtractionKernelsPOIS(size, spatialOrder, penalty, mode);
     1060        return pmSubtractionKernelsPOIS(size, spatialOrder, penalty, bounds, mode);
    10551061      case PM_SUBTRACTION_KERNEL_ISIS:
    1056         return pmSubtractionKernelsISIS(size, spatialOrder, fwhms, orders, penalty, mode);
     1062        return pmSubtractionKernelsISIS(size, spatialOrder, fwhms, orders, penalty, bounds, mode);
    10571063      case PM_SUBTRACTION_KERNEL_ISIS_RADIAL:
    1058         return pmSubtractionKernelsISIS_RADIAL(size, spatialOrder, fwhms, orders, penalty, mode);
     1064        return pmSubtractionKernelsISIS_RADIAL(size, spatialOrder, fwhms, orders, penalty, bounds, mode);
    10591065      case PM_SUBTRACTION_KERNEL_HERM:
    1060         return pmSubtractionKernelsHERM(size, spatialOrder, fwhms, orders, penalty, mode);
     1066        return pmSubtractionKernelsHERM(size, spatialOrder, fwhms, orders, penalty, bounds, mode);
    10611067      case PM_SUBTRACTION_KERNEL_DECONV_HERM:
    1062         return pmSubtractionKernelsDECONV_HERM(size, spatialOrder, fwhms, orders, penalty, mode);
     1068        return pmSubtractionKernelsDECONV_HERM(size, spatialOrder, fwhms, orders, penalty, bounds, mode);
    10631069      case PM_SUBTRACTION_KERNEL_SPAM:
    1064         return pmSubtractionKernelsSPAM(size, spatialOrder, inner, binning, penalty, mode);
     1070        return pmSubtractionKernelsSPAM(size, spatialOrder, inner, binning, penalty, bounds, mode);
    10651071      case PM_SUBTRACTION_KERNEL_FRIES:
    1066         return pmSubtractionKernelsFRIES(size, spatialOrder, inner, penalty, mode);
     1072        return pmSubtractionKernelsFRIES(size, spatialOrder, inner, penalty, bounds, mode);
    10671073      case PM_SUBTRACTION_KERNEL_GUNK:
    1068         return pmSubtractionKernelsGUNK(size, spatialOrder, fwhms, orders, inner, penalty, mode);
     1074        return pmSubtractionKernelsGUNK(size, spatialOrder, fwhms, orders, inner, penalty, bounds, mode);
    10691075      case PM_SUBTRACTION_KERNEL_RINGS:
    1070         return pmSubtractionKernelsRINGS(size, spatialOrder, inner, ringsOrder, penalty, mode);
     1076        return pmSubtractionKernelsRINGS(size, spatialOrder, inner, ringsOrder, penalty, bounds, mode);
    10711077      default:
    10721078        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unknown kernel type: %x", type);
     
    11041110
    11051111pmSubtractionKernels *pmSubtractionKernelsFromDescription(const char *description, int bgOrder,
    1106                                                           pmSubtractionMode mode)
     1112                                                          psRegion bounds, pmSubtractionMode mode)
    11071113{
    11081114    PS_ASSERT_STRING_NON_EMPTY(description, NULL);
     
    11291135
    11301136    type = pmSubtractionKernelsTypeFromString (description);
    1131     char *ptr = strchr(description, '(');
     1137    char *ptr = strchr(description, '(') + 1;
    11321138    psAssert (ptr, "description is missing kernel parameters");
    11331139
     
    11571163        PARSE_STRING_NUMBER(spatialOrder, ptr, ',', parseStringInt);
    11581164        penalty = parseStringFloat(ptr);
    1159 
    1160         return pmSubtractionKernelsGenerate(type, size, spatialOrder, fwhms, orders, inner, binning, ringsOrder, penalty, mode);
    1161 
     1165        break;
    11621166      case PM_SUBTRACTION_KERNEL_RINGS:
    11631167        PARSE_STRING_NUMBER(size, ptr, ',', parseStringInt);
     
    11661170        PARSE_STRING_NUMBER(spatialOrder, ptr, ',', parseStringInt);
    11671171        PARSE_STRING_NUMBER(penalty, ptr, ')', parseStringInt);
    1168         return pmSubtractionKernelsGenerate(type, size, spatialOrder, fwhms, orders, inner, binning, ringsOrder, penalty, mode);
     1172        break;
    11691173      default:
    11701174        psAbort("Deciphering kernels other than ISIS, HERM, DECONV_HERM or RINGS is not currently supported.");
    11711175    }
    1172     return NULL;
     1176
     1177    return pmSubtractionKernelsGenerate(type, size, spatialOrder, fwhms, orders, inner, binning,
     1178                                        ringsOrder, penalty, bounds, mode);
    11731179}
    11741180
     
    12461252    out->bgOrder = in->bgOrder;
    12471253    out->mode = in->mode;
    1248     out->numCols = in->numCols;
    1249     out->numRows = in->numRows;
     1254    out->xMin = in->xMin;
     1255    out->xMax = in->xMax;
     1256    out->yMin = in->yMin;
     1257    out->yMax = in->yMax;
    12501258    out->solution1 = in->solution1 ? psVectorCopy(NULL, in->solution1, PS_TYPE_F64) : NULL;
    12511259    out->solution2 = in->solution2 ? psVectorCopy(NULL, in->solution2, PS_TYPE_F64) : NULL;
Note: See TracChangeset for help on using the changeset viewer.