IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14866


Ignore:
Timestamp:
Sep 17, 2007, 10:49:51 AM (19 years ago)
Author:
Paul Price
Message:

Adding mask to psImageConvolveFFT, so that masked pixels may be set to the nominated value. This is especially important in removing NaNs in the image being convolved.

Location:
trunk/psLib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/imageops/psImageConvolve.c

    r14704 r14866  
    77/// @author Eugene Magnier, IfA
    88///
    9 /// @version $Revision: 1.56 $ $Name: not supported by cvs2svn $
    10 /// @date $Date: 2007-08-30 20:15:23 $
     9/// @version $Revision: 1.57 $ $Name: not supported by cvs2svn $
     10/// @date $Date: 2007-09-17 20:49:51 $
    1111///
    1212/// Copyright 2004-2007 Institute for Astronomy, University of Hawaii
     
    363363
    364364psImage *psImageConvolveFFT(const psImage *in,
     365                            const psImage *mask,
     366                            psMaskType maskVal,
    365367                            const psKernel *kernel,
    366368                            float pad)
     
    393395    // Generate padded image
    394396    psImage *paddedImage = psImageAlloc(paddedCols,paddedRows,in->type.type); // Padded input image
    395     psImageOverlaySection(paddedImage, in, 0, 0, "=");
     397    if (mask && maskVal) {
     398        for (int y = 0; y < numRows; y++) {
     399            for (int x = 0; x < numCols; x++) {
     400                paddedImage->data.F32[y][x] = (mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal) ? pad :
     401                    in->data.F32[y][x];
     402            }
     403        }
     404    } else {
     405        psImageOverlaySection(paddedImage, in, 0, 0, "=");
     406    }
    396407    for (int y = 0; y < numRows; y++) {
    397408        for (int x = numCols; x < paddedCols; x++) {
  • trunk/psLib/src/imageops/psImageConvolve.h

    r14762 r14866  
    55 * @author Robert DeSonia, MHPCC
    66 *
    7  * @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
    8  * @date $Date: 2007-09-05 23:52:11 $
     7 * @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
     8 * @date $Date: 2007-09-17 20:49:51 $
    99 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
    1010 */
     
    136136///
    137137psImage *psImageConvolveDirect(
    138     psImage *out,                       ///< return output to here
    139     const psImage *in,                  ///< the psImage to convolve
     138    psImage *out,                       ///< Output image, or NULL
     139    const psImage *in,                  ///< Image to convolve
    140140    const psKernel *kernel              ///< kernel to colvolve with
    141141);
     
    146146/// are suitably padded to avoid wrap-around effects.
    147147psImage *psImageConvolveFFT(
    148     const psImage *in,                  ///< the psImage to convolve
     148    const psImage *in,                  ///< Image to convolve
     149    const psImage *mask,                ///< Corresponding mask
     150    psMaskType maskVal,                 ///< Value to mask
    149151    const psKernel *kernel,             ///< kernel to colvolve with
    150152    float pad                           ///< Value to use to pad the input image
     
    155157/// Returns a mask, grown by the supplied kernel.  Only those pixels specified by the maskVal are grown; the
    156158/// rest are simply propagated.
    157 psImage *psImageConvolveMask(const psImage *mask, psMaskType maskVal, const psKernel *kernel);
     159psImage *psImageConvolveMask(const psImage *mask, ///< Mask to convolve
     160                             psMaskType maskVal, ///< Mask value to convolve
     161                             const psKernel *kernel ///< Kernel by which to convolve
     162    );
    158163
    159164
  • trunk/psLib/test/imageops/convolutionBench.c

    r14332 r14866  
    4747            psKernel *kernel = generateKernel(kernelCols, kernelRows);
    4848            psTimerStart("fft");
    49             psImage *convolved = psImageConvolveFFT(image, kernel, 0.0);
     49            psImage *convolved = psImageConvolveFFT(image, NULL, 0, kernel, 0.0);
    5050            fft += psTimerMark("fft");
    5151            psFree(convolved);
Note: See TracChangeset for help on using the changeset viewer.