Changeset 25999 for trunk/psModules/src/imcombine/pmSubtractionKernels.c
- Timestamp:
- Nov 2, 2009, 10:38:23 AM (17 years ago)
- Location:
- trunk/psModules/src/imcombine
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
pmSubtractionKernels.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/czw_branch/cleanup/psModules/src/imcombine merged eligible /branches/eam_branches/20090522/psModules/src/imcombine merged eligible /branches/eam_branches/20090715/psModules/src/imcombine merged eligible /branches/eam_branches/20090820/psModules/src/imcombine merged eligible /branches/pap/psModules/src/imcombine merged eligible /branches/pap_mops/psModules/src/imcombine 25137-25255
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/psModules/src/imcombine/pmSubtractionKernels.c
r25120 r25999 81 81 kernels->penalties = psVectorRealloc(kernels->penalties, start + numNew); 82 82 kernels->inner = start; 83 kernels->num += numNew; 83 84 84 85 // Generate a set of kernels for each (u,v) … … 94 95 kernels->v->data.S32[index] = v; 95 96 kernels->preCalc->data[index] = NULL; 96 kernels->penalties->data.F32[index] = kernels->penalty * (PS_SQR(u) + PS_SQR(v));97 kernels->penalties->data.F32[index] = kernels->penalty * PS_SQR(PS_SQR(u) + PS_SQR(v)); 97 98 98 99 psTrace("psModules.imcombine", 7, "Kernel %d: %d %d\n", index, u, v); 99 100 } 100 101 } 102 103 kernels->widths->n = start + numNew; 104 kernels->u->n = start + numNew; 105 kernels->v->n = start + numNew; 106 kernels->preCalc->n = start + numNew; 107 kernels->penalties->n = start + numNew; 101 108 102 109 return true; … … 140 147 for (int uOrder = 0; uOrder <= orders->data.S32[i]; uOrder++) { 141 148 for (int vOrder = 0; vOrder <= orders->data.S32[i] - uOrder; vOrder++, index++) { 142 psArray *preCalc = psArrayAlloc( 2); // Array to hold precalculated values149 psArray *preCalc = psArrayAlloc(3); // Array to hold precalculated values 143 150 psVector *xKernel = preCalc->data[0] = subtractionKernelISIS(sigma, uOrder, size); // x Kernel 144 151 psVector *yKernel = preCalc->data[1] = subtractionKernelISIS(sigma, vOrder, size); // y Kernel 152 psKernel *kernel = preCalc->data[2] = psKernelAlloc(-size, size, -size, size); // Kernel 145 153 146 154 // Calculate moments … … 149 157 for (int u = -size, x = 0; u <= size; u++, x++) { 150 158 double value = xKernel->data.F32[x] * yKernel->data.F32[y]; // Value of kernel 151 moment += value * (PS_SQR(u) + PS_SQR(v)); 159 kernel->kernel[v][u] = value; 160 moment += value * PS_SQR((PS_SQR(u) + PS_SQR(v))); 152 161 } 153 162 } … … 164 173 psBinaryOp(xKernel, xKernel, "*", psScalarAlloc(sum, PS_TYPE_F32)); 165 174 psBinaryOp(yKernel, yKernel, "*", psScalarAlloc(sum, PS_TYPE_F32)); 175 psBinaryOp(kernel->image, kernel->image, "*", psScalarAlloc(PS_SQR(sum), PS_TYPE_F32)); 176 kernel->kernel[0][0] -= 1.0; 166 177 moment *= PS_SQR(sum); 167 178 } 179 180 181 #if 0 182 double sum = 0.0; // Sum of kernel component 183 for (int v = -size; v <= size; v++) { 184 for (int u = -size; u <= size; u++) { 185 sum += kernel->kernel[v][u]; 186 } 187 } 188 fprintf(stderr, "%d sum: %lf\n", index, sum); 189 #endif 168 190 169 191 kernels->widths->data.F32[index] = fwhms->data.F32[i]; … … 456 478 PS_ASSERT_INT_LESS_THAN(inner, size, NULL); 457 479 458 // XXX GUNK doesn't seem to work --- doesn't add the POIS components, or at least, they're not noticed459 460 480 pmSubtractionKernels *kernels = p_pmSubtractionKernelsRawISIS(size, spatialOrder, fwhms, orders, 461 481 penalty, mode); // Kernels 482 kernels->type = PM_SUBTRACTION_KERNEL_GUNK; 462 483 psStringPrepend(&kernels->description, "GUNK="); 463 484 psStringAppend(&kernels->description, "+POIS(%d,%d)", inner, spatialOrder); … … 577 598 poly->data.F32[j] = polyVal; 578 599 norm += polyVal; 579 moment += polyVal * (PS_SQR(u) + PS_SQR(v));600 moment += polyVal * PS_SQR(PS_SQR(u) + PS_SQR(v)); 580 601 581 602 psVectorExtend(uCoords, RINGS_BUFFER, 1); … … 603 624 psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / norm, PS_TYPE_F32)); 604 625 } 605 //moment /= norm;626 moment /= norm; 606 627 } 607 628
Note:
See TracChangeset
for help on using the changeset viewer.
