- Timestamp:
- Dec 29, 2009, 8:04:00 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20091201/psModules/src/imcombine/pmSubtraction.c
r26474 r26491 72 72 { 73 73 int size = kernels->size; // Kernel half-size 74 p sArray*preCalc = kernels->preCalc->data[index]; // Precalculated values74 pmSubtractionKernelPreCalc *preCalc = kernels->preCalc->data[index]; // Precalculated values 75 75 #if 0 76 psVector *xKernel = preCalc->data[0]; // Kernel in x77 psVector *yKernel = preCalc->data[1]; // Kernel in y78 76 // Iterating over the kernel 79 77 for (int y = 0, v = -size; v <= size; y++, v++) { 80 float yValue = value * yKernel->data.F32[y];78 float yValue = value * preCalc->yKernel->data.F32[y]; 81 79 for (int x = 0, u = -size; u <= size; x++, u++) { 82 kernel->kernel[v][u] += yValue * xKernel->data.F32[x];80 kernel->kernel[v][u] += yValue * preCalc->xKernel->data.F32[x]; 83 81 } 84 82 } … … 88 86 } 89 87 #else 90 psKernel *k = preCalc->data[2]; // Kernel image91 88 for (int v = -size; v <= size; v++) { 92 89 for (int u = -size; u <= size; u++) { 93 kernel->kernel[v][u] += value * k->kernel[v][u];90 kernel->kernel[v][u] += value * preCalc->kernel->kernel[v][u]; 94 91 } 95 92 } … … 168 165 break; 169 166 } 167 case PM_SUBTRACTION_KERNEL_DECONV_HERM: { 168 solvedKernelISIS(kernel, kernels, value, i); 169 break; 170 } 170 171 case PM_SUBTRACTION_KERNEL_RINGS: { 171 psArray *preCalc = kernels->preCalc->data[i]; // Precalculated data 172 psVector *uCoords = preCalc->data[0]; // u coordinates 173 psVector *vCoords = preCalc->data[1]; // v coordinates 174 psVector *poly = preCalc->data[2]; // Polynomial values 175 int num = uCoords->n; // Number of pixels 172 pmSubtractionKernelPreCalc *preCalc = kernels->preCalc->data[i]; // Precalculated kernels 173 int num = preCalc->uCoords->n; // Number of pixels 176 174 177 175 for (int j = 0; j < num; j++) { 178 int u = uCoords->data.S32[j], v = vCoords->data.S32[j]; // Kernel coordinates 179 kernel->kernel[v][u] += poly->data.F32[j] * value; 176 int u = preCalc->uCoords->data.S32[j]; 177 int v = preCalc->vCoords->data.S32[j]; // Kernel coordinates 178 kernel->kernel[v][u] += preCalc->poly->data.F32[j] * value; 180 179 } 181 180 // Photometric scaling is built into the kernel --- no subtraction! … … 466 465 ) 467 466 { 468 p sArray*preCalc = kernels->preCalc->data[index]; // Precalculated data467 pmSubtractionKernelPreCalc *preCalc = kernels->preCalc->data[index]; // Precalculated data 469 468 #if 0 470 469 // Convolving using separable convolution 471 psVector *xKernel = preCalc->data[0]; // Kernel in x472 psVector *yKernel = preCalc->data[1]; // Kernel in y473 470 int size = kernels->size; // Size of kernel 474 471 … … 482 479 float value = 0.0; // Value of convolved pixel 483 480 int uMin = x - size, uMax = x + size; // Range for u 484 psF32 *xKernelData = & xKernel->data.F32[xKernel->n - 1]; // Kernel values481 psF32 *xKernelData = &preCalc->xKernel->data.F32[xKernel->n - 1]; // Kernel values 485 482 psF32 *imageData = &image->kernel[y][uMin]; // Image values 486 483 for (int u = uMin; u <= uMax; u++, xKernelData--, imageData++) { … … 497 494 float value = 0.0; // Value of convolved pixel 498 495 int vMin = y - size, vMax = y + size; // Range for v 499 psF32 *yKernelData = & yKernel->data.F32[yKernel->n - 1]; // Kernel values496 psF32 *yKernelData = &preCalc->yKernel->data.F32[yKernel->n - 1]; // Kernel values 500 497 psF32 *imageData = &temp->kernel[x][vMin]; // Image values; NOTE: wrong way! 501 498 for (int v = vMin; v <= vMax; v++, yKernelData--, imageData++) { … … 514 511 #else 515 512 // Convolving using precalculated kernel 516 return p_pmSubtractionConvolveStampPrecalc(image, preCalc-> data[2]);513 return p_pmSubtractionConvolveStampPrecalc(image, preCalc->kernel); 517 514 #endif 518 515 } … … 687 684 return convolveStampISIS(image, kernels, index, footprint); 688 685 } 686 case PM_SUBTRACTION_KERNEL_DECONV_HERM: { 687 return convolveStampISIS(image, kernels, index, footprint); 688 } 689 689 case PM_SUBTRACTION_KERNEL_RINGS: { 690 psKernel *convolved = psKernelAlloc(-footprint, footprint, 691 -footprint, footprint); // Convolved image 692 psArray *preCalc = kernels->preCalc->data[index]; // Precalculated data 693 psVector *uCoords = preCalc->data[0]; // u coordinates 694 psVector *vCoords = preCalc->data[1]; // v coordinates 695 psVector *poly = preCalc->data[2]; // Polynomial values 696 int num = uCoords->n; // Number of pixels 697 psS32 *uData = uCoords->data.S32, *vData = vCoords->data.S32; // Dereference u,v coordinates 698 psF32 *polyData = poly->data.F32; // Dereference polynomial values 690 psKernel *convolved = psKernelAlloc(-footprint, footprint, -footprint, footprint); // Convolved image 691 pmSubtractionKernelPreCalc *preCalc = kernels->preCalc->data[index]; // Precalculated data 692 693 int num = preCalc->uCoords->n; // Number of pixels 694 psS32 *uData = preCalc->uCoords->data.S32; // Dereference v coordinate 695 psS32 *vData = preCalc->vCoords->data.S32; // Dereference u coordinate 696 psF32 *polyData = preCalc->poly->data.F32; // Dereference polynomial values 699 697 psF32 **imageData = image->kernel; // Dereference image 700 698 psF32 **convData = convolved->kernel; // Dereference convolved image
Note:
See TracChangeset
for help on using the changeset viewer.
