IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 4, 2010, 3:18:46 PM (16 years ago)
Author:
Paul Price
Message:

Using psKernelTruncate to reduce size of the kernel before calculating the covariance matrix.

Location:
branches/eam_branches/20091201/psModules/src/imcombine
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20091201/psModules/src/imcombine/pmStackReject.c

    r26761 r26769  
    156156        psRegion *region = subRegions->data[i]; // Region of interest
    157157        pmSubtractionKernels *kernels = subKernels->data[i]; // Kernel of interest
    158         if (!pmSubtractionConvolve(NULL, convRO, NULL, inRO, NULL, stride, 0, 0, 1.0, 0.0,
     158        if (!pmSubtractionConvolve(NULL, convRO, NULL, inRO, NULL, stride, 0, 0, 1.0, 0.0, 0.0,
    159159                                   region, kernels, false, true)) {
    160160            psError(PS_ERR_UNKNOWN, false, "Unable to convolve mask image in region %d.", i);
  • branches/eam_branches/20091201/psModules/src/imcombine/pmSubtraction.c

    r26759 r26769  
    11531153bool pmSubtractionConvolve(pmReadout *out1, pmReadout *out2, const pmReadout *ro1, const pmReadout *ro2,
    11541154                           psImage *subMask, int stride, psImageMaskType maskBad, psImageMaskType maskPoor,
    1155                            float poorFrac, float kernelError, const psRegion *region,
     1155                           float poorFrac, float kernelError, float covarFrac, const psRegion *region,
    11561156                           const pmSubtractionKernels *kernels, bool doBG, bool useFFT)
    11571157{
     
    11951195    PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(kernelError, 0.0, false);
    11961196    PS_ASSERT_FLOAT_LESS_THAN_OR_EQUAL(kernelError, 1.0, false);
     1197    PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(covarFrac, 0.0, false);
     1198    PS_ASSERT_FLOAT_LESS_THAN(covarFrac, 1.0, false);
    11971199    if (region && psRegionIsNaN(*region)) {
    11981200        psString string = psRegionToString(*region);
     
    13271329    if (kernels->mode == PM_SUBTRACTION_MODE_1 || kernels->mode == PM_SUBTRACTION_MODE_DUAL) {
    13281330        psKernel *kernel = pmSubtractionKernel(kernels, 0.0, 0.0, false); // Convolution kernel
     1331        psKernelTruncate(kernel, covarFrac);
    13291332        out1->covariance = psImageCovarianceCalculate(kernel, ro1->covariance);
    13301333        psFree(kernel);
     
    13331336        psKernel *kernel = pmSubtractionKernel(kernels, 0.0, 0.0,
    13341337                                               kernels->mode == PM_SUBTRACTION_MODE_DUAL); // Conv. kernel
     1338        psKernelTruncate(kernel, covarFrac);
    13351339        out2->covariance = psImageCovarianceCalculate(kernel, ro2->covariance);
    13361340        psFree(kernel);
  • branches/eam_branches/20091201/psModules/src/imcombine/pmSubtraction.h

    r26739 r26769  
    113113                           psImageMaskType maskPoor, ///< Mask value to give poor pixels
    114114                           float poorFrac, ///< Fraction for "poor"
    115                            float sysError, ///< Relative systematic error
     115                           float kernelError, ///< Relative systematic error in kernel
     116                           float covarFrac,  ///< Truncation fraction for kernel before covariance calculation
    116117                           const psRegion *region, ///< Region to convolve (or NULL)
    117118                           const pmSubtractionKernels *kernels, ///< Kernel parameters
  • branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionMatch.c

    r26741 r26769  
    121121                                  float skyError,           // Systematic error in images
    122122                                  float kernelError, // Systematic error in kernel
     123                                  float covarFrac,   // Fraction for kernel truncation before covariance
    123124                                  psImageMaskType maskVal, // Value to mask for input
    124125                                  psImageMaskType maskBad, // Mask for output bad pixels
     
    181182        PS_ASSERT_FLOAT_LESS_THAN(kernelError, 1.0, false);
    182183    }
     184    PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(covarFrac, 0.0, false);
     185    PS_ASSERT_FLOAT_LESS_THAN(covarFrac, 1.0, false);
    183186    // Don't care about maskVal
    184187    // Don't care about maskBad
     
    246249
    247250bool pmSubtractionMatchPrecalc(pmReadout *conv1, pmReadout *conv2, const pmReadout *ro1, const pmReadout *ro2,
    248                                psMetadata *analysis, int stride, float kernelError,
     251                               psMetadata *analysis, int stride, float kernelError, float covarFrac,
    249252                               psImageMaskType maskVal, psImageMaskType maskBad, psImageMaskType maskPoor,
    250253                               float poorFrac, float badFrac)
     
    316319    }
    317320
    318     if (!subtractionMatchCheck(conv1, conv2, ro1, ro2, stride, NAN, NAN, NAN, kernelError,
     321    if (!subtractionMatchCheck(conv1, conv2, ro1, ro2, stride, NAN, NAN, NAN, kernelError, covarFrac,
    319322                               maskVal, maskBad, maskPoor, poorFrac, badFrac, mode)) {
    320323        psFree(kernels);
     
    357360
    358361        if (!pmSubtractionConvolve(conv1, conv2, ro1, ro2, subMask, stride, maskBad, maskPoor, poorFrac,
    359                                    kernelError, region, kernel, true, useFFT)) {
     362                                   kernelError, covarFrac, region, kernel, true, useFFT)) {
    360363            psError(PS_ERR_UNKNOWN, false, "Unable to convolve image.");
    361364            psFree(outAnalysis);
     
    388391                        bool optimum, const psVector *optFWHMs, int optOrder, float optThreshold,
    389392                        int iter, float rej, float normFrac, float sysError, float skyError,
    390                         float kernelError, psImageMaskType maskVal, psImageMaskType maskBad,
     393                        float kernelError, float covarFrac, psImageMaskType maskVal, psImageMaskType maskBad,
    391394                        psImageMaskType maskPoor, float poorFrac, float badFrac, pmSubtractionMode subMode)
    392395{
    393396    if (!subtractionMatchCheck(conv1, conv2, ro1, ro2, stride, normFrac, sysError, skyError, kernelError,
    394                                maskVal, maskBad, maskPoor, poorFrac, badFrac, subMode)) {
     397                               covarFrac, maskVal, maskBad, maskPoor, poorFrac, badFrac, subMode)) {
    395398        return false;
    396399    }
     
    779782            psTrace("psModules.imcombine", 2, "Convolving...\n");
    780783            if (!pmSubtractionConvolve(conv1, conv2, ro1, ro2, subMask, stride, maskBad, maskPoor, poorFrac,
    781                                        kernelError, region, kernels, true, useFFT)) {
     784                                       kernelError, covarFrac, region, kernels, true, useFFT)) {
    782785                psError(PS_ERR_UNKNOWN, false, "Unable to convolve image.");
    783786                goto MATCH_ERROR;
  • branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionMatch.h

    r26703 r26769  
    4343                        float skyError, ///< Relative systematic error in images
    4444                        float kernelError, ///< Relative systematic error in kernel
     45                        float covarFrac,   ///< Fraction for kernel truncation before covariance calculation
    4546                        psImageMaskType maskVal, ///< Value to mask for input
    4647                        psImageMaskType maskBad, ///< Mask for output bad pixels
     
    5960                               int stride, ///< Size for convolution patches
    6061                               float kernelError, ///< Relative systematic error in kernel
     62                               float covarFrac,   ///< Fraction for kernel truncation before covariance calc.
    6163                               psImageMaskType maskVal, ///< Value to mask for input
    6264                               psImageMaskType maskBad, ///< Mask for output bad pixels
Note: See TracChangeset for help on using the changeset viewer.