Changeset 14197
- Timestamp:
- Jul 13, 2007, 10:55:26 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/imcombine/pmSubtraction.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtraction.c
r14195 r14197 4 4 * @author GLG, MHPCC 5 5 * 6 * @version $Revision: 1.1 7$ $Name: not supported by cvs2svn $7 * @date $Date: 2007-07-13 20: 28:28$6 * @version $Revision: 1.18 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2007-07-13 20:55:26 $ 8 8 * 9 9 * Copyright 2004-2007 Institute for Astronomy, University of Hawaii … … 25 25 #include "pmSubtraction.h" 26 26 27 //#define CAN_PASS_STATIC_INLINE// Can I pass the address of a static inline function?27 #define USE_FUNCTIONS_INSTEAD_OF_MACROS // Can I pass the address of a static inline function? 28 28 29 29 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// … … 55 55 } 56 56 57 #ifndef CAN_PASS_STATIC_INLINE57 #ifndef USE_FUNCTIONS_INSTEAD_OF_MACROS 58 58 // Generate an image of the solved kernel 59 59 // Meant to replace the following function declaration: … … 193 193 /* SPAM and FRIES use the same method */ 194 194 case PM_SUBTRACTION_KERNEL_SPAM: 195 case PM_SUBTRACTION_KERNEL_FRIES: 196 int uStart = kernels->u->data.S32[i]; 197 int uStop = kernels->uStop->data.S32[i]; 198 int vStart = kernels->v->data.S32[i]; 199 int vStop = kernels->vStop->data.S32[i]; 200 for (int v = vStart; v <= vStop; v++) { 201 for (int u = uStart; u <= uStop; u++) { 202 kernel->kernel[v][u] += value; 203 } 204 } 205 if (kernels->spatialOrder > 0 && i != kernels->subIndex) { 206 /* The (0,0) element is subtracted from most kernels to preserve photometric scaling */ 207 kernel->kernel[0][0] += subValue; 208 } 209 break; 195 case PM_SUBTRACTION_KERNEL_FRIES: { 196 int uStart = kernels->u->data.S32[i]; 197 int uStop = kernels->uStop->data.S32[i]; 198 int vStart = kernels->v->data.S32[i]; 199 int vStop = kernels->vStop->data.S32[i]; 200 for (int v = vStart; v <= vStop; v++) { 201 for (int u = uStart; u <= uStop; u++) { 202 kernel->kernel[v][u] += value; 203 } 204 } 205 if (kernels->spatialOrder > 0 && i != kernels->subIndex) { 206 /* The (0,0) element is subtracted from most kernels to preserve photometric scaling */ 207 kernel->kernel[0][0] += subValue; 208 } 209 break; 210 } 210 211 case PM_SUBTRACTION_KERNEL_ISIS: { 211 212 psKernel *preCalc = kernels->preCalc->data[i];// Precalculated values … … 231 232 #endif 232 233 233 #ifndef CAN_PASS_STATIC_INLINE234 #ifndef USE_FUNCTIONS_INSTEAD_OF_MACROS 234 235 // Generate the convolved pixel value 235 236 // Meant to replace the following function declaration: … … 274 275 int vStart = (KERNELS)->v->data.S32[(INDEX)]; \ 275 276 int vStop = (KERNELS)->vStop->data.S32[(INDEX)]; \ 277 double sum = 0.0; \ 276 278 for (int v = vStart; v <= vStop; v++) { \ 277 279 for (int u = uStart; u <= uStop; u++) { \ 278 (TARGET)+= FUNC(polyValue) * (IMAGE)->data.F32[(Y) + v][(X) + u]; \280 sum += FUNC(polyValue) * (IMAGE)->data.F32[(Y) + v][(X) + u]; \ 279 281 } \ 280 282 } \ 281 283 if ((KERNELS)->spatialOrder > 0 && (INDEX) != (KERNELS)->subIndex) { \ 282 284 /* The (0,0) element is subtracted from most kernels to preserve photometric scaling */ \ 283 (TARGET)+= FUNC(-1.0) * (IMAGE)->data.F32[(Y)][(X)]; \285 sum += FUNC(-1.0) * (IMAGE)->data.F32[(Y)][(X)]; \ 284 286 } \ 287 (TARGET) = sum; 285 288 break; \ 286 289 } \ … … 340 343 int vStart = kernels->v->data.S32[index]; 341 344 int vStop = kernels->vStop->data.S32[index]; 345 double sum = 0.0; 342 346 for (int v = vStart; v <= vStop; v++) { 343 347 for (int u = uStart; u <= uStop; u++) { 344 value+= weightFunc(polyValue) * image->data.F32[y + v][x + u];348 sum += weightFunc(polyValue) * image->data.F32[y + v][x + u]; 345 349 } 346 350 } 347 351 if (kernels->spatialOrder > 0 && index != kernels->subIndex) { 348 352 /* The (0,0) element is subtracted from most kernels to preserve photometric scaling */ 349 value+= weightFunc(-1.0) * image->data.F32[y][x];353 sum += weightFunc(-1.0) * image->data.F32[y][x]; 350 354 } 351 break;355 return sum; 352 356 } 353 357 case PM_SUBTRACTION_KERNEL_ISIS: { … … 582 586 // Generate the convolutions 583 587 for (int i = 0; i < numKernels; i++) { 584 #ifdef CAN_PASS_STATIC_INLINE588 #ifdef USE_FUNCTIONS_INSTEAD_OF_MACROS 585 589 convolutions->data.F64[i] = convolvePixel(kernels, i, x, y, reference, polyValues, 586 590 imageWeighting); … … 785 789 for (int x = footprint; x <= footprint; x++) { 786 790 for (int k = 0; k < numKernels; k++) { 787 #ifdef CAN_PASS_STATIC_INLINE791 #ifdef USE_FUNCTIONS_INSTEAD_OF_MACROS 788 792 convolvedStamp->data.F32[y + footprint][x + footprint] += 789 793 convolvePixel(kernels, k, xStamp + x, yStamp + y, refImage, polyValues, … … 872 876 873 877 // The appropriate kernel 874 #ifdef CAN_PASS_STATIC_INLINE878 #ifdef USE_FUNCTIONS_INSTEAD_OF_MACROS 875 879 psKernel *kernel = solvedKernel(NULL, solution, kernels, polyValues, imageWeighting); 876 880 #else … … 974 978 2.0 * (float)(i + size - numCols/2.0) / (float)numCols, 975 979 2.0 * (float)(j + size - numRows/2.0) / (float)numRows); 976 #ifdef CAN_PASS_STATIC_INLINE980 #ifdef USE_FUNCTIONS_INSTEAD_OF_MACROS 977 981 kernelImage = solvedKernel(kernelImage, solution, kernels, polyValues, imageWeighting); 978 982 if (inWeight) {
Note:
See TracChangeset
for help on using the changeset viewer.
