IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 26339


Ignore:
Timestamp:
Dec 5, 2009, 5:01:26 AM (16 years ago)
Author:
eugene
Message:

allow either separate or simultaneous coeff calculation (norm vs kernels) -- compile time option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionMatch.c

    r26332 r26339  
    2828static bool useFFT = true;              // Do convolutions using FFT
    2929
     30# define SEPARATE 0
     31# if (SEPARATE)
     32# define SUBMODE PM_SUBTRACTION_EQUATION_NORM
     33# else
     34# define SUBMODE PM_SUBTRACTION_EQUATION_ALL
     35# endif
    3036
    3137//#define TESTING
     
    562568                // XXX step 1: calculate normalization
    563569                psTrace("psModules.imcombine", 3, "Calculating equation for normalization...\n");
    564                 // if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_NORM)) {
    565                 if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_ALL)) {
     570                if (!pmSubtractionCalculateEquation(stamps, kernels, SUBMODE)) {
    566571                    psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
    567572                    goto MATCH_ERROR;
     
    569574
    570575                psTrace("psModules.imcombine", 3, "Solving equation for normalization...\n");
    571                 // if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_NORM)) {
    572                 if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_ALL)) {
     576                if (!pmSubtractionSolveEquation(kernels, stamps, SUBMODE)) {
    573577                    psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
    574578                    goto MATCH_ERROR;
     
    576580                memCheck("  solve equation");
    577581
    578 # if (0)
     582# if (SEPARATE)
     583                // set USED -> CALCULATE
     584                pmSubtractionStampsResetStatus (stamps);
     585
    579586                // XXX step 2: calculate kernel parameters
    580587                psTrace("psModules.imcombine", 3, "Calculating equation for kernels...\n");
     
    592599                memCheck("  solve equation");
    593600# endif
    594 
    595601                psVector *deviations = pmSubtractionCalculateDeviations(stamps, kernels); // Stamp deviations
    596602                if (!deviations) {
     
    615621            // if we hit the max number of iterations and we have rejected stamps, re-solve
    616622            if (numRejected > 0) {
    617                 // calculate kernel parameters
     623                // XXX step 1: calculate normalization
     624                psTrace("psModules.imcombine", 3, "Calculating equation for normalization...\n");
     625                if (!pmSubtractionCalculateEquation(stamps, kernels, SUBMODE)) {
     626                    psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     627                    goto MATCH_ERROR;
     628                }
     629
     630                // solve normalization
    618631                psTrace("psModules.imcombine", 3, "Solving equation for kernels...\n");
    619                 // if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_KERNELS)) {
    620                 if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_ALL)) {
     632                if (!pmSubtractionSolveEquation(kernels, stamps, SUBMODE)) {
    621633                    psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
    622634                    goto MATCH_ERROR;
    623635                }
     636
     637# if (SEPARATE)
     638                // set USED -> CALCULATE
     639                pmSubtractionStampsResetStatus (stamps);
     640
     641                // XXX step 2: calculate kernel parameters
     642                psTrace("psModules.imcombine", 3, "Calculating equation for normalization...\n");
     643                if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_KERNELS)) {
     644                    psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     645                    goto MATCH_ERROR;
     646                }
     647
     648                // solve kernel parameters
     649                psTrace("psModules.imcombine", 3, "Solving equation for kernels...\n");
     650                if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_KERNELS)) {
     651                    psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     652                    goto MATCH_ERROR;
     653                }
    624654                memCheck("  solve equation");
    625 
     655# endif
    626656                psVector *deviations = pmSubtractionCalculateDeviations(stamps, kernels); // Stamp deviations
    627657                if (!deviations) {
     
    929959
    930960    psTrace("psModules.imcombine", 3, "Calculating %s normalization equation...\n", description);
    931     // if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_NORM)) {
    932     if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_ALL)) {
     961    if (!pmSubtractionCalculateEquation(stamps, kernels, SUBMODE)) {
    933962        psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
    934963        return false;
     
    936965
    937966    psTrace("psModules.imcombine", 3, "Solving %s normalization equation...\n", description);
    938     // if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_NORM)) {
    939     if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_ALL)) {
     967    if (!pmSubtractionSolveEquation(kernels, stamps, SUBMODE)) {
    940968        psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
    941969        return false;
    942970    }
    943971
    944 # if (0)
     972# if (SEPARATE)
     973    // set USED -> CALCULATE
     974    pmSubtractionStampsResetStatus (stamps);
     975
    945976    psTrace("psModules.imcombine", 3, "Calculating %s kernel coeffs equation...\n", description);
    946977    if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_KERNELS)) {
     
    954985        return false;
    955986    }
    956 # endif
     987# endif 
    957988
    958989    psTrace("psModules.imcombine", 3, "Calculate %s deviations...\n", description);
     
    9741005    if (numRejected > 0) {
    9751006        // Allow re-fit with reduced stamps set
     1007        psTrace("psModules.imcombine", 3, "Calculating %s normalization equation...\n", description);
     1008        if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_ALL)) {
     1009            psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     1010            return false;
     1011        }
     1012
    9761013        psTrace("psModules.imcombine", 3, "Resolving %s equation...\n", description);
    977         // if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_KERNELS)) {
    9781014        if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_ALL)) {
    9791015            psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     
    9811017        }
    9821018        psTrace("psModules.imcombine", 3, "Recalculate %s deviations...\n", description);
     1019
     1020# if (SEPARATE)
     1021        // set USED -> CALCULATE
     1022        pmSubtractionStampsResetStatus (stamps);
     1023       
     1024        psTrace("psModules.imcombine", 3, "Calculating %s normalization equation...\n", description);
     1025        if (!pmSubtractionCalculateEquation(stamps, kernels, PM_SUBTRACTION_EQUATION_KERNELS)) {
     1026            psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     1027            return false;
     1028        }
     1029
     1030        psTrace("psModules.imcombine", 3, "Resolving %s equation...\n", description);
     1031        if (!pmSubtractionSolveEquation(kernels, stamps, PM_SUBTRACTION_EQUATION_KERNELS)) {
     1032            psError(PS_ERR_UNKNOWN, false, "Unable to calculate least-squares equation.");
     1033            return false;
     1034        }
     1035        psTrace("psModules.imcombine", 3, "Recalculate %s deviations...\n", description);
     1036# endif
    9831037
    9841038        psVector *deviations = pmSubtractionCalculateDeviations(stamps, kernels); // Stamp deviations
Note: See TracChangeset for help on using the changeset viewer.