Changeset 14541
- Timestamp:
- Aug 16, 2007, 5:25:16 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtractionKernels.c
r14540 r14541 555 555 // Iterate over (u,v) order 556 556 for (int uOrder = 0; uOrder <= (i == 0 ? 0 : ringsOrder); uOrder++) { 557 for (int vOrder = 0; vOrder <= (i == 0 ? 0 : ringsOrder ) - uOrder; vOrder++, index++) {557 for (int vOrder = 0; vOrder <= (i == 0 ? 0 : ringsOrder - uOrder); vOrder++, index++) { 558 558 559 559 psArray *data = psArrayAlloc(3); // Container for data … … 581 581 float uPoly = power(u, uOrder); // Value of u^uOrder 582 582 583 uCoords->data.S32[j] = u; 584 vCoords->data.S32[j] = v; 585 norm += poly->data.F32[j] = uPoly * vPoly; 586 587 psVectorExtend(uCoords, RINGS_BUFFER, 1); 588 psVectorExtend(vCoords, RINGS_BUFFER, 1); 589 psVectorExtend(poly, RINGS_BUFFER, 1); 590 591 psTrace("psModules.imcombine", 9, "u = %d, v = %d, poly = %f\n", 592 u, v, poly->data.F32[j]); 593 594 j++; 583 float polyVal = uPoly * vPoly; // Value of polynomial 584 if (polyVal != 0) { // No point adding it otherwise 585 uCoords->data.S32[j] = u; 586 vCoords->data.S32[j] = v; 587 poly->data.F32[j] = polyVal; 588 norm += polyVal; 589 590 psVectorExtend(uCoords, RINGS_BUFFER, 1); 591 psVectorExtend(vCoords, RINGS_BUFFER, 1); 592 psVectorExtend(poly, RINGS_BUFFER, 1); 593 psTrace("psModules.imcombine", 9, "u = %d, v = %d, poly = %f\n", 594 u, v, poly->data.F32[j]); 595 j++; 596 } 595 597 } 596 598 } … … 599 601 if (uOrder % 2 == 0 && vOrder % 2 == 0) { 600 602 psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / norm, PS_TYPE_F32)); 603 // Add subtraction of 0,0 component to preserve photometric scaling 601 604 uCoords->data.S32[j] = 0; 602 605 vCoords->data.S32[j] = 0; … … 606 609 psVectorExtend(poly, RINGS_BUFFER, 1); 607 610 } else { 608 psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / (float)j, PS_TYPE_F32)); 611 norm = powf(size, uOrder) * powf(size, vOrder) 612 psBinaryOp(poly, poly, "*", psScalarAlloc(1.0 / norm, PS_TYPE_F32)); 609 613 } 610 614 } 611 615 612 psTrace("psModules.imcombine", 8, "%ld pixels in ring\n", uCoords->n);616 psTrace("psModules.imcombine", 8, "%ld pixels in kernel\n", uCoords->n); 613 617 614 618 kernels->preCalc->data[index] = data;
Note:
See TracChangeset
for help on using the changeset viewer.
