IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 7, 2007, 9:02:55 AM (19 years ago)
Author:
Paul Price
Message:

Need to normalise sum of kernel components to unity in order to preserve photometric scaling.

File:
1 edited

Legend:

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

    r14366 r14420  
    147147                // Set the pre-calculated kernel
    148148                psKernel *preCalc = psKernelAlloc(-size, size, -size, size);
     149                double sum = 0.0;       // Normalisation
    149150                for (int v = -size; v <= size; v++) {
    150151                    for (int u = -size; u <= size; u++) {
    151                         preCalc->kernel[v][u] = power(u, uOrder) * power(v, vOrder) *
     152                        sum += preCalc->kernel[v][u] = power(u, uOrder) * power(v, vOrder) *
    152153                            expf(-0.5 * (PS_SQR(u) + PS_SQR(v)) / PS_SQR(sigmas->data.F32[i]));
    153154                    }
    154155                }
     156                // Normalise sum of kernel component to unity
     157                psBinaryOp(preCalc->image, preCalc->image, "*", psScalarAlloc(1.0/sum, PS_TYPE_F32));
    155158
    156159                // Iterate over spatial order.  This loop creates the terms for
     
    450453                // Set the pre-calculated kernel
    451454                psKernel *preCalc = psKernelAlloc(-size, size, -size, size);
     455                double sum = 0.0;       // Normalisation
    452456                for (int v = -size; v <= size; v++) {
    453457                    for (int u = -size; u <= size; u++) {
    454                         preCalc->kernel[v][u] = power(u, uOrder) * power(v, vOrder) *
     458                        sum += preCalc->kernel[v][u] = power(u, uOrder) * power(v, vOrder) *
    455459                            expf(-0.5 * (PS_SQR(u) + PS_SQR(v)) / PS_SQR(sigmas->data.F32[i]));
    456460                    }
    457461                }
     462                // Normalise sum of kernel component to unity
     463                psBinaryOp(preCalc->image, preCalc->image, "*", psScalarAlloc(1.0/sum, PS_TYPE_F32));
    458464
    459465                // Iterate over spatial order.  This loop creates the terms for
Note: See TracChangeset for help on using the changeset viewer.