IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 17727


Ignore:
Timestamp:
May 16, 2008, 3:47:54 PM (18 years ago)
Author:
Paul Price
Message:

Use the separable mask convolution --- should be faster!

File:
1 edited

Legend:

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

    r15756 r17727  
    136136    // footprint's distance of those (within 'footprint').
    137137
    138     if (useFFT) {
    139         if (!psImageConvolveMaskFFT(mask, mask, PM_SUBTRACTION_MASK_BAD_1 | PM_SUBTRACTION_MASK_BAD_2,
    140                                     PM_SUBTRACTION_MASK_CONVOLVE_1 | PM_SUBTRACTION_MASK_FOOTPRINT_1,
    141                                     -size, size, -size, size, 0.5)) {
    142             psError(PS_ERR_UNKNOWN, false, "Unable to convolve bad pixels from mask 1.");
    143             psFree(mask);
    144             return NULL;
    145         }
    146         if (!psImageConvolveMaskFFT(mask, mask, PM_SUBTRACTION_MASK_BAD_2,
    147                                     PM_SUBTRACTION_MASK_CONVOLVE_2 | PM_SUBTRACTION_MASK_FOOTPRINT_2,
    148                                     -size, size, -size, size, 0.5)) {
    149             psError(PS_ERR_UNKNOWN, false, "Unable to convolve bad pixels from mask 2.");
    150             psFree(mask);
    151             return NULL;
    152         }
    153         if (!psImageConvolveMaskFFT(mask, mask, PM_SUBTRACTION_MASK_CONVOLVE_1,
    154                                     PM_SUBTRACTION_MASK_FOOTPRINT_1,
    155                                     -footprint, footprint, -footprint, footprint, 0.5)) {
    156             psError(PS_ERR_UNKNOWN, false, "Unable to reconvolve bad pixels from mask 1.");
    157             psFree(mask);
    158             return NULL;
    159         }
    160         if (!psImageConvolveMaskFFT(mask, mask, PM_SUBTRACTION_MASK_CONVOLVE_2,
    161                                     PM_SUBTRACTION_MASK_FOOTPRINT_2,
    162                                     -footprint, footprint, -footprint, footprint, 0.5)) {
    163             psError(PS_ERR_UNKNOWN, false, "Unable to reconvolve bad pixels from mask 2.");
    164             psFree(mask);
    165             return NULL;
    166         }
    167     } else {
    168         if (!psImageConvolveMaskDirect(mask, mask, PM_SUBTRACTION_MASK_BAD_1,
    169                                        PM_SUBTRACTION_MASK_CONVOLVE_1 | PM_SUBTRACTION_MASK_FOOTPRINT_1,
    170                                        -size, size, -size, size)) {
    171             psError(PS_ERR_UNKNOWN, false, "Unable to convolve bad pixels from mask 1.");
    172             psFree(mask);
    173             return NULL;
    174         }
    175         if (!psImageConvolveMaskDirect(mask, mask, PM_SUBTRACTION_MASK_BAD_2,
    176                                        PM_SUBTRACTION_MASK_CONVOLVE_2 | PM_SUBTRACTION_MASK_FOOTPRINT_2,
    177                                        -size, size, -size, size)) {
    178             psError(PS_ERR_UNKNOWN, false, "Unable to convolve bad pixels from mask 2.");
    179             psFree(mask);
    180             return NULL;
    181         }
    182         if (!psImageConvolveMaskDirect(mask, mask, PM_SUBTRACTION_MASK_CONVOLVE_1,
    183                                        PM_SUBTRACTION_MASK_FOOTPRINT_1,
    184                                        -footprint, footprint, -footprint, footprint)) {
    185             psError(PS_ERR_UNKNOWN, false, "Unable to reconvolve bad pixels from mask 1.");
    186             psFree(mask);
    187             return NULL;
    188         }
    189         if (!psImageConvolveMaskDirect(mask, mask, PM_SUBTRACTION_MASK_CONVOLVE_2,
    190                                        PM_SUBTRACTION_MASK_FOOTPRINT_2,
    191                                        -footprint, footprint, -footprint, footprint)) {
    192             psError(PS_ERR_UNKNOWN, false, "Unable to reconvolve bad pixels from mask 2.");
    193             psFree(mask);
    194             return NULL;
    195         }
     138    if (!psImageConvolveMask(mask, mask, PM_SUBTRACTION_MASK_BAD_1,
     139                             PM_SUBTRACTION_MASK_CONVOLVE_1 | PM_SUBTRACTION_MASK_FOOTPRINT_1,
     140                             -size, size, -size, size)) {
     141        psError(PS_ERR_UNKNOWN, false, "Unable to convolve bad pixels from mask 1.");
     142        psFree(mask);
     143        return NULL;
     144    }
     145    if (!psImageConvolveMask(mask, mask, PM_SUBTRACTION_MASK_BAD_2,
     146                             PM_SUBTRACTION_MASK_CONVOLVE_2 | PM_SUBTRACTION_MASK_FOOTPRINT_2,
     147                             -size, size, -size, size)) {
     148        psError(PS_ERR_UNKNOWN, false, "Unable to convolve bad pixels from mask 2.");
     149        psFree(mask);
     150        return NULL;
     151    }
     152    if (!psImageConvolveMask(mask, mask, PM_SUBTRACTION_MASK_CONVOLVE_1,
     153                             PM_SUBTRACTION_MASK_FOOTPRINT_1,
     154                             -footprint, footprint, -footprint, footprint)) {
     155        psError(PS_ERR_UNKNOWN, false, "Unable to reconvolve bad pixels from mask 1.");
     156        psFree(mask);
     157        return NULL;
     158    }
     159    if (!psImageConvolveMask(mask, mask, PM_SUBTRACTION_MASK_CONVOLVE_2,
     160                             PM_SUBTRACTION_MASK_FOOTPRINT_2,
     161                             -footprint, footprint, -footprint, footprint)) {
     162        psError(PS_ERR_UNKNOWN, false, "Unable to reconvolve bad pixels from mask 2.");
     163        psFree(mask);
     164        return NULL;
    196165    }
    197166
Note: See TracChangeset for help on using the changeset viewer.