Changeset 13398
- Timestamp:
- May 16, 2007, 11:13:51 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/imcombine/pmSubtraction.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtraction.c
r13395 r13398 4 4 * @author GLG, MHPCC 5 5 * 6 * @version $Revision: 1. 9$ $Name: not supported by cvs2svn $7 * @date $Date: 2007-05-16 03:53:36$6 * @version $Revision: 1.10 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2007-05-16 21:13:51 $ 8 8 * 9 9 * Copyright 2004-2007 Institute for Astronomy, University of Hawaii … … 54 54 55 55 // Generate an image of the solved kernel 56 static psKernel *solvedKernel(psKernel *kernel, // Kernel, to return57 const psVector *solution, // Solution to the least-squares problem58 const pmSubtractionKernels *kernels, // Kernel basis functions59 const psImage *polyValues, // Spatial polynomial values60 double (*weightFunc)(double value) // Function for weighting56 static inline psKernel *solvedKernel(psKernel *kernel, // Kernel, to return 57 const psVector *solution, // Solution to the least-squares problem 58 const pmSubtractionKernels *kernels, // Kernel basis functions 59 const psImage *polyValues, // Spatial polynomial values 60 double (*weightFunc)(double value) // Function for weighting 61 61 ) 62 62 { … … 82 82 int xOrder = kernels->xOrder->data.S32[i]; // Polynomial order in x 83 83 int yOrder = kernels->yOrder->data.S32[i]; // Polynomial order in y 84 double polyValue = polyValues->data.F64[yOrder][xOrder]; // Value of spatial polynomial 84 float value = weightFunc(polyValues->data.F64[yOrder][xOrder] * 85 solution->data.F64[i]); // Value to sum 86 float subValue = weightFunc(-solution->data.F64[i]); // Value to subtract (actually add, because of -) 85 87 switch (kernels->type) { 86 88 case PM_SUBTRACTION_KERNEL_POIS: { 87 89 int u = kernels->u->data.S32[i]; // Offset in x 88 90 int v = kernels->v->data.S32[i]; // Offset in y 89 kernel->kernel[v][u] += weightFunc(polyValue * solution->data.F64[i]);91 kernel->kernel[v][u] += value; 90 92 if (kernels->spatialOrder > 0 && i != kernels->subIndex) { 91 93 // The (0,0) element is subtracted from most kernels to preserve photometric scaling 92 kernel->kernel[0][0] += weightFunc(-solution->data.F64[i]);94 kernel->kernel[0][0] += subValue; 93 95 } 94 96 break; … … 99 101 for (int v = -size; v <= size; v++) { 100 102 for (int u = -size; u <= size; u++) { 101 kernel->kernel[v][u] += weightFunc(solution->data.F64[i] * polyValue * 102 preCalc->kernel[v][u]); 103 kernel->kernel[v][u] += value * weightFunc(preCalc->kernel[v][u]); 103 104 // The (0,0) kernel is subtracted from other kernels to preserve photometric scaling 104 105 if (kernels->spatialOrder > 0 && i != kernels->subIndex) { 105 kernel->kernel[v][u] += weightFunc(-solution->data.F64[i] * 106 subKernel->kernel[v][u]); 106 kernel->kernel[v][u] += subValue * weightFunc(subKernel->kernel[v][u]); 107 107 } 108 108 }
Note:
See TracChangeset
for help on using the changeset viewer.
