IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 17729


Ignore:
Timestamp:
May 16, 2008, 4:30:51 PM (18 years ago)
Author:
Paul Price
Message:

Add a function to set masked pixels to NAN. This appears to be important in image subtraction because subtraction can produce a bimodal image for which statistics fails; then the image can't be written out compressed because the statistics is essential for quantisation.

Location:
trunk/psModules/src/imcombine
Files:
2 edited

Legend:

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

    r17727 r17729  
    77
    88#include "pmSubtraction.h"
     9#include "pmSubtractionKernels.h"
    910
    1011#include "pmSubtractionMask.h"
     
    208209    return true;
    209210}
     211
     212
     213bool pmSubtractionMaskApply(psImage *image, psImage *weight, const psImage *mask, pmSubtractionMode mode)
     214{
     215    PS_ASSERT_IMAGE_NON_NULL(image, false);
     216    PS_ASSERT_IMAGE_TYPE(image, PS_TYPE_F32, false);
     217    if (weight) {
     218        PS_ASSERT_IMAGE_NON_NULL(weight, false);
     219        PS_ASSERT_IMAGE_TYPE(weight, PS_TYPE_F32, false);
     220        PS_ASSERT_IMAGES_SIZE_EQUAL(weight, image, false);
     221    }
     222    PS_ASSERT_IMAGE_NON_NULL(mask, false);
     223    PS_ASSERT_IMAGE_TYPE(mask, PS_TYPE_MASK, false);
     224    PS_ASSERT_IMAGES_SIZE_EQUAL(mask, image, false);
     225
     226    bool maskVal = PM_SUBTRACTION_MASK_BORDER; // Value to mask
     227    switch (mode) {
     228      case PM_SUBTRACTION_MODE_1:
     229        maskVal |= PM_SUBTRACTION_MASK_CONVOLVE_1;
     230        break;
     231      case PM_SUBTRACTION_MODE_2:
     232        maskVal |= PM_SUBTRACTION_MASK_CONVOLVE_2;
     233        break;
     234      case PM_SUBTRACTION_MODE_DUAL:
     235        maskVal |= PM_SUBTRACTION_MASK_CONVOLVE_2 | PM_SUBTRACTION_MASK_CONVOLVE_2;
     236        break;
     237      case PM_SUBTRACTION_MODE_ERR:
     238      case PM_SUBTRACTION_MODE_UNSURE:
     239      default:
     240        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unsuppored subtraction mode: %x", mode);
     241        return false;
     242    }
     243
     244    int numCols = image->numCols, numRows = image->numRows; // Size of image
     245    psMaskType **maskData = mask->data.PS_TYPE_MASK_DATA; // Dereference mask
     246
     247    for (int y = 0; y < numRows; y++) {
     248        for (int x = 0; x < numCols; x++) {
     249            if (maskData[y][x] & maskVal) {
     250                image->data.F32[y][x] = NAN;
     251                if (weight) {
     252                    weight->data.F32[y][x] = NAN;
     253                }
     254            }
     255        }
     256    }
     257
     258    return true;
     259}
  • trunk/psModules/src/imcombine/pmSubtractionMask.h

    r15756 r17729  
    2222    );
    2323
     24/// Apply the subtraction mask to an image and weight.
     25///
     26/// Unfortunately, image subtraction may result in a bi-modal image in masked areas, which can upset image
     27/// statistics (very important for quantising images so that a product can be written out!).  This function
     28/// sets masked areas to NAN in the image and weight.
     29bool pmSubtractionMaskApply(psImage *image, ///< Image to which to apply mask
     30                            psImage *weight, ///< Weight map to which to apply mask (or NULL)
     31                            const psImage *mask, ///< Subtraction mask
     32                            pmSubtractionMode mode ///< Subtraction mode
     33    );
     34
    2435
    2536#endif
Note: See TracChangeset for help on using the changeset viewer.