Changeset 13370
- Timestamp:
- May 11, 2007, 5:38:32 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtractionKernels.c
r13340 r13370 25 25 ) 26 26 { 27 if (exp == 0) { 28 return 1.0; 29 } 27 30 float result = value; // Result to return 28 31 for (int i = 2; i < exp; i++) { … … 82 85 } 83 86 84 kernels->subIndex = PS_SQR(size + 1);87 kernels->subIndex = num / 2; 85 88 assert(kernels->u->data.S32[kernels->subIndex] == 0 && 86 89 kernels->v->data.S32[kernels->subIndex] == 0 && … … 106 109 int num = 0; // Number of basis functions 107 110 for (int i = 0; i < numGaussians; i++) { 108 num += sigmas->data.F32[i] * orders->data.F32[i]; 111 int gaussOrder = orders->data.S32[i]; // Polynomial order to apply to Gaussian 112 num += (gaussOrder + 1) * (gaussOrder + 2) / 2; 109 113 } 110 114 num *= (spatialOrder + 1) * (spatialOrder + 2) / 2; … … 124 128 psKernel *preCalc = psKernelAlloc(-size, size, -size, size); 125 129 for (int v = -size; v <= size; v++) { 126 for (int u = -size; u < size; u++) {130 for (int u = -size; u <= size; u++) { 127 131 preCalc->kernel[v][u] = power(u, uOrder) * power(v, vOrder) * 128 expf( 0.5 * (PS_SQR(u) + PS_SQR(v)) / PS_SQR(sigmas->data.F32[i]));132 expf(-0.5 * (PS_SQR(u) + PS_SQR(v)) / PS_SQR(sigmas->data.F32[i])); 129 133 } 130 134 } … … 147 151 } 148 152 153 kernels->subIndex = (spatialOrder + 1) * (spatialOrder + 2) / 4; 154 assert(kernels->u->data.S32[kernels->subIndex] == 0 && 155 kernels->v->data.S32[kernels->subIndex] == 0 && 156 kernels->xOrder->data.S32[kernels->subIndex] == 0 && 157 kernels->yOrder->data.S32[kernels->subIndex] == 0); 158 149 159 return kernels; 150 160 }
Note:
See TracChangeset
for help on using the changeset viewer.
