IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 13510


Ignore:
Timestamp:
May 24, 2007, 11:04:49 AM (19 years ago)
Author:
Paul Price
Message:

Check for non-finite values within the stamp that might generate a bad matrix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/imcombine/pmSubtractionStamps.c

    r13378 r13510  
    6060    PS_ASSERT_INT_LARGER_THAN(image->numRows, 2 * border, NULL);
    6161
    62     maskVal |= used;                    // Make sure we don't get stamps we've already used
     62    psMaskType badCentral = maskVal | used; // For central pixel of stamp, don't get a stamp already used
    6363    int xNumStamps = (image->numCols - 2 * border) / spacing + 1; // Number of stamps in x
    6464    int yNumStamps = (image->numRows - 2 * border) / spacing + 1; // Number of stamps in y
     
    107107                        if (image->data.F32[y][x] > fluxBest) {
    108108                            bool ok = true;
    109                             if (mask) {
    110                                 // Check kernel footprint for bad pixels
    111                                 if (mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal) {
    112                                     ok = false;
    113                                 } else {
    114                                     for (int v = -border; v <= border && ok; v++) {
    115                                         for (int u = -border; u <= border && ok; u++) {
    116                                             if (mask->data.PS_TYPE_MASK_DATA[y + v][x + u] & maskVal) {
    117                                                 ok = false;
    118 #if 0
     109                            // Check kernel footprint for bad pixels
     110                            if (mask && (mask->data.PS_TYPE_MASK_DATA[y][x] & badCentral)) {
     111                                ok = false;
     112                            } else {
     113                                for (int v = -border; v <= border && ok; v++) {
     114                                    for (int u = -border; u <= border && ok; u++) {
     115                                        if ((mask &&
     116                                             (mask->data.PS_TYPE_MASK_DATA[y + v][x + u] & maskVal)) ||
     117                                            !isfinite(image->data.F32[y + v][x + u])) {
     118                                            ok = false;
     119                                            if (mask) {
    119120                                                // Mark it so we don't have to look so hard next time
    120                                                 mask->data.PS_TYPE_MASK_DATA[y][x] |= maskVal;
    121 #endif
     121                                                mask->data.PS_TYPE_MASK_DATA[y][x] |= used;
    122122                                            }
    123123                                        }
Note: See TracChangeset for help on using the changeset viewer.