Changeset 25860
- Timestamp:
- Oct 15, 2009, 4:58:42 PM (17 years ago)
- Location:
- branches/pap/psModules/src/imcombine
- Files:
-
- 2 edited
-
pmSubtractionEquation.c (modified) (4 diffs)
-
pmSubtractionKernels.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap/psModules/src/imcombine/pmSubtractionEquation.c
r25858 r25860 379 379 380 380 // Add in penalty term to least-squares vector 381 static bool calculatePenalty(psVector *vector, // Vector to which to add in penalty term 382 const pmSubtractionKernels *kernels // Kernel parameters 381 static bool calculatePenalty(psImage *matrix, // Matrix to which to add in penalty term 382 psVector *vector, // Vector to which to add in penalty term 383 const pmSubtractionKernels *kernels, // Kernel parameters 384 float norm // Normalisation 383 385 ) 384 386 { … … 393 395 for (int yOrder = 0, index = i; yOrder <= spatialOrder; yOrder++) { 394 396 for (int xOrder = 0; xOrder <= spatialOrder - yOrder; xOrder++, index += numKernels) { 395 vector->data.F64[index] -=penalties->data.F32[i];397 matrix->data.F64[index][index] -= norm * penalties->data.F32[i]; 396 398 } 397 399 } … … 786 788 #endif 787 789 788 calculatePenalty(sumVector, kernels); 790 int bgIndex = PM_SUBTRACTION_INDEX_BG(kernels); // Index for background 791 calculatePenalty(sumMatrix, sumVector, kernels, sumMatrix->data.F64[bgIndex][bgIndex]); 789 792 790 793 #ifdef TESTING … … 870 873 } 871 874 } 872 calculatePenalty(sumVector1, kernels); 873 calculatePenalty(sumVector2, kernels); 875 876 int bgIndex = PM_SUBTRACTION_INDEX_BG(kernels); // Index for background 877 calculatePenalty(sumMatrix1, sumVector1, kernels, sumMatrix1->data.F64[bgIndex][bgIndex]); 878 calculatePenalty(sumMatrix2, sumVector2, kernels, -sumMatrix1->data.F64[bgIndex][bgIndex]); 874 879 875 880 // Pure matrix operations -
branches/pap/psModules/src/imcombine/pmSubtractionKernels.c
r25841 r25860 94 94 kernels->v->data.S32[index] = v; 95 95 kernels->preCalc->data[index] = NULL; 96 kernels->penalties->data.F32[index] = kernels->penalty * (PS_SQR(u) + PS_SQR(v));96 kernels->penalties->data.F32[index] = kernels->penalty * PS_SQR(PS_SQR(u) + PS_SQR(v)); 97 97 98 98 psTrace("psModules.imcombine", 7, "Kernel %d: %d %d\n", index, u, v); … … 151 151 double value = xKernel->data.F32[x] * yKernel->data.F32[y]; // Value of kernel 152 152 kernel->kernel[v][u] = value; 153 moment += value * (PS_SQR(u) + PS_SQR(v));153 moment += value * PS_SQR((PS_SQR(u) + PS_SQR(v))); 154 154 } 155 155 } … … 190 190 kernels->preCalc->data[index] = preCalc; 191 191 kernels->penalties->data.F32[index] = kernels->penalty * fabsf(moment); 192 fprintf(stderr, "Penalty %d: %f\n", index, kernels->penalty * fabsf(moment)); 192 193 193 194 psTrace("psModules.imcombine", 7, "Kernel %d: %f %d %d %f\n", index, … … 592 593 poly->data.F32[j] = polyVal; 593 594 norm += polyVal; 594 moment += polyVal * (PS_SQR(u) + PS_SQR(v));595 moment += polyVal * PS_SQR(PS_SQR(u) + PS_SQR(v)); 595 596 596 597 psVectorExtend(uCoords, RINGS_BUFFER, 1); … … 618 619 psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / norm, PS_TYPE_F32)); 619 620 } 620 //moment /= norm;621 moment /= norm; 621 622 } 622 623
Note:
See TracChangeset
for help on using the changeset viewer.
