Changeset 17302 for trunk/psLib/src/imageops/psImageConvolve.c
- Timestamp:
- Apr 2, 2008, 5:00:25 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/imageops/psImageConvolve.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/imageops/psImageConvolve.c
r15958 r17302 7 7 /// @author Eugene Magnier, IfA 8 8 /// 9 /// @version $Revision: 1.6 1$ $Name: not supported by cvs2svn $10 /// @date $Date: 200 7-12-31 03:02:08$9 /// @version $Revision: 1.62 $ $Name: not supported by cvs2svn $ 10 /// @date $Date: 2008-04-03 03:00:25 $ 11 11 /// 12 12 /// Copyright 2004-2007 Institute for Astronomy, University of Hawaii … … 420 420 psImage *paddedImage = psImageAlloc(paddedCols,paddedRows,in->type.type); // Padded input image 421 421 if (mask && maskVal) { 422 // Need to replace non-finite (assumed masked) pixels, since they propagate everywhere during FFT 422 423 for (int y = 0; y < numRows; y++) { 423 424 for (int x = 0; x < numCols; x++) { … … 454 455 for (int y = PS_MIN(-1, yMin); y <= PS_MIN(-1, yMax); y++) { 455 456 // y is negative 456 for (int x = PS_MIN(-1, xMin); x <= PS_MIN(-1, xMax); x++) {457 if (xMin < 0) { 457 458 // x is negative 458 paddedKernel->data.F32[paddedRows + y][paddedCols + x] = kernel->kernel[y][x]; 459 } 460 for (int x = PS_MAX(0, xMin); x <= PS_MAX(0, xMax); x++) { 459 memcpy(&paddedKernel->data.F32[paddedRows + y][paddedCols + xMin], &kernel->kernel[y][xMin], 460 (PS_MIN(0, xMax) - xMin) * PSELEMTYPE_SIZEOF(PS_TYPE_F32)); 461 } 462 if (xMax >= 0) { 461 463 // x is positive 462 paddedKernel->data.F32[paddedRows + y][x] = kernel->kernel[y][x]; 464 int min = PS_MAX(0, xMin); // Minimum value of x when positive 465 memcpy(&paddedKernel->data.F32[paddedRows + y][min], &kernel->kernel[y][min], 466 (xMax - min + 1) * PSELEMTYPE_SIZEOF(PS_TYPE_F32)); 463 467 } 464 468 } 465 469 for (int y = PS_MAX(0, yMin); y <= PS_MAX(0, yMax); y++) { 466 470 // y is positive 467 for (int x = PS_MIN(-1, xMin); x <= PS_MIN(-1, xMax); x++) {471 if (xMin < 0) { 468 472 // x is negative 469 paddedKernel->data.F32[y][paddedCols + x] = kernel->kernel[y][x]; 470 } 471 for (int x = PS_MAX(0, xMin); x <= PS_MAX(0, xMax); x++) { 473 memcpy(&paddedKernel->data.F32[y][paddedCols + xMin], &kernel->kernel[y][xMin], 474 (PS_MIN(0, xMax) - xMin) * PSELEMTYPE_SIZEOF(PS_TYPE_F32)); 475 } 476 if (xMax >= 0) { 472 477 // x is positive 473 paddedKernel->data.F32[y][x] = kernel->kernel[y][x]; 478 int min = PS_MAX(0, xMin); // Minimum value of x when positive 479 memcpy(&paddedKernel->data.F32[y][min], &kernel->kernel[y][min], 480 (xMax - min + 1) * PSELEMTYPE_SIZEOF(PS_TYPE_F32)); 474 481 } 475 482 } … … 834 841 // XXX test 835 842 if (0) { 836 psFree(gaussnorm);837 return true;843 psFree(gaussnorm); 844 return true; 838 845 } 839 846
Note:
See TracChangeset
for help on using the changeset viewer.
