IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 26588


Ignore:
Timestamp:
Jan 13, 2010, 5:18:55 PM (16 years ago)
Author:
Paul Price
Message:

Wasn't renormalising if forceZeroNull was true and order was odd.

File:
1 edited

Legend:

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

    r26587 r26588  
    220220    }
    221221    if (forceZeroNull) {
     222        // Force rescaling and subtraction of null pixel even though the order doesn't indicate it's even
     223        scale2D = 1.0 / fabs(sum);
    222224        zeroNull = true;
    223225    }
     
    236238
    237239    psBinaryOp(preCalc->kernel->image, preCalc->kernel->image, "*", psScalarAlloc(scale2D, PS_TYPE_F32));
    238     penalty *= PS_SQR(scale2D);
     240    penalty *= 1.0 / sum2;
    239241
    240242    if (zeroNull) {
     
    242244    }
    243245
    244 #if 0
    245     sum = 0.0;   // Sum of kernel component
    246     min = FLT_MAX;
    247     max = FLT_MIN;
    248     for (int v = -size; v <= size; v++) {
    249         for (int u = -size; u <= size; u++) {
    250             sum += preCalc->kernel->kernel[v][u];
    251             min = PS_MIN(preCalc->kernel->kernel[v][u], min);
    252             max = PS_MAX(preCalc->kernel->kernel[v][u], max);
    253         }
    254     }
    255     fprintf(stderr, "%d mod: %lf, null: %f, min: %lf, max: %lf, scale: %f\n", index, sum, preCalc->kernel->kernel[0][0], min, max, scale2D);
     246#if 1
     247    {
     248        double sum = 0.0;   // Sum of kernel component
     249        float min = INFINITY, max = -INFINITY;  // Minimum and maximum kernel value
     250        for (int v = -size; v <= size; v++) {
     251            for (int u = -size; u <= size; u++) {
     252                sum += preCalc->kernel->kernel[v][u];
     253                min = PS_MIN(preCalc->kernel->kernel[v][u], min);
     254                max = PS_MAX(preCalc->kernel->kernel[v][u], max);
     255            }
     256        }
     257        fprintf(stderr, "%d mod: %lf, null: %f, min: %lf, max: %lf, scale: %f\n", index, sum, preCalc->kernel->kernel[0][0], min, max, scale2D);
     258    }
    256259#endif
    257260
Note: See TracChangeset for help on using the changeset viewer.