IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35867


Ignore:
Timestamp:
Jul 31, 2013, 12:51:39 PM (13 years ago)
Author:
watersc1
Message:

Change simple match code to allow for some flexibility when the intended target is smaller than an input. This overloads the optThreshold parameter (PPSUB:OPTIMUM.TOL), as we already pass enough parameters to pmSubtractionMatch

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

Legend:

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

    r35771 r35867  
    540540    // Bail here if we're doing the simple matching
    541541    if (type == PM_SUBTRACTION_KERNEL_SIMPLE) {
    542       if (!pmSubtractionSimpleMatch(conv1,conv2,ro1,ro2,sources,size,maskVal,maskBad,maskPoor)) {
     542      if (!pmSubtractionSimpleMatch(conv1,conv2,ro1,ro2,sources,size,maskVal,maskBad,maskPoor,optThreshold)) {
    543543        return false;
    544544      }
  • trunk/psModules/src/imcombine/pmSubtractionSimple.c

    r35821 r35867  
    9090                              psImageMaskType maskVal,
    9191                              psImageMaskType maskBad,
    92                               psImageMaskType maskPoor
     92                              psImageMaskType maskPoor,
     93                              float deconvolveThreshold
    9394                              ) {
    9495  //
     
    190191  if (!conv1) {
    191192    if (convolution_direction == 1) {
    192       chisq = 100;
    193     }
    194     convolution_direction = 2;
     193      if (sigma1 - sigma2 > deconvolveThreshold) {
     194        chisq = 100;
     195      }
     196    }
     197    //    convolution_direction = 2;
    195198  }
    196199  if (!conv2) {
    197200    if (convolution_direction == 2) {
    198       chisq = 100;
    199     }
    200     convolution_direction = 1;
     201      if (sigma2 - sigma1 > deconvolveThreshold) {
     202        chisq = 100;
     203      }
     204    }
     205    //    convolution_direction = 1;
    201206  }
    202207 
     
    249254  // Do convolutions
    250255  if (convolution_direction == 1) {
    251     psImageSmoothMask_Threaded(imageC1,image1,mask1,maskVal,sigmaKern,6,1e-6);
    252     psImageSmoothMask_Threaded(varC1,var1,mask1,maskVal,sigmaKern * M_SQRT1_2,6,1e-6);
    253     maskC1 = psImageConvolveMask(maskC1,mask1,maskVal,maskBad,
    254                                  -maskBox,maskBox,-maskBox,maskBox);
    255     conv1->covariance = psImageCovarianceCalculate(kernel,ro1->covariance);
     256    if (conv1) {
     257      psImageSmoothMask_Threaded(imageC1,image1,mask1,maskVal,sigmaKern,6,1e-6);
     258      psImageSmoothMask_Threaded(varC1,var1,mask1,maskVal,sigmaKern * M_SQRT1_2,6,1e-6);
     259      maskC1 = psImageConvolveMask(maskC1,mask1,maskVal,maskBad,
     260                                   -maskBox,maskBox,-maskBox,maskBox);
     261      conv1->covariance = psImageCovarianceCalculate(kernel,ro1->covariance);
     262      pmSubtractionBorder(imageC1,varC1,maskC1,maskBox,maskBlank);
     263      pmSubtractionMaskApply(imageC1,varC1,maskC1,PM_SUBTRACTION_MODE_1);
     264    }
    256265    if (conv2) {
    257266      imageC2 = psImageCopy(imageC2,image2,PS_TYPE_F32);
     
    260269      conv2->covariance = psMemIncrRefCounter(ro2->covariance);
    261270    }
    262     pmSubtractionBorder(imageC1,varC1,maskC1,maskBox,maskBlank);
    263     pmSubtractionMaskApply(imageC1,varC1,maskC1,PM_SUBTRACTION_MODE_1);
    264271  }
    265272  else if (convolution_direction == 2) {
    266     psImageSmoothMask_Threaded(imageC2,image2,mask2,maskVal,sigmaKern,6,1e-6);
    267     psImageSmoothMask_Threaded(varC2,var2,mask2,maskVal,sigmaKern * M_SQRT1_2,6,1e-6);
    268     maskC2 = psImageConvolveMask(maskC2,mask2,maskVal,maskBad,
    269                                  -maskBox,maskBox,-maskBox,maskBox);
    270     conv2->covariance = psImageCovarianceCalculate(kernel,ro2->covariance);
     273    if (conv2) {
     274      psImageSmoothMask_Threaded(imageC2,image2,mask2,maskVal,sigmaKern,6,1e-6);
     275      psImageSmoothMask_Threaded(varC2,var2,mask2,maskVal,sigmaKern * M_SQRT1_2,6,1e-6);
     276      maskC2 = psImageConvolveMask(maskC2,mask2,maskVal,maskBad,
     277                                   -maskBox,maskBox,-maskBox,maskBox);
     278      conv2->covariance = psImageCovarianceCalculate(kernel,ro2->covariance);
     279      pmSubtractionBorder(imageC2,varC2,maskC2,maskBox,maskBlank);
     280      pmSubtractionMaskApply(imageC2,varC2,maskC2,PM_SUBTRACTION_MODE_2);
     281    }
    271282    if (conv1) {
    272283      imageC1 = psImageCopy(imageC1,image1,PS_TYPE_F32);
     
    275286      conv1->covariance = psMemIncrRefCounter(ro1->covariance);
    276287    }
    277     pmSubtractionBorder(imageC2,varC2,maskC2,maskBox,maskBlank);
    278     pmSubtractionMaskApply(imageC2,varC2,maskC2,PM_SUBTRACTION_MODE_2);
    279288  }   
    280289
     
    294303    float flux1,flux2;
    295304
    296     if (convolution_direction == 1) {
     305    if (conv1) {
    297306      simple_do_boxphot(&nPix1,&flux1,source,imageC1,maskC1,maskBad,photRadius);
    298       if (conv2) {
    299         simple_do_boxphot(&nPix2,&flux2,source,imageC2,maskC2,maskBad,photRadius);
    300       }
    301       else {
    302         simple_do_boxphot(&nPix2,&flux2,source,image2,mask2,maskBad,photRadius);
    303       }
    304     }
    305     else if (convolution_direction == 2) {
     307    }
     308    else {
     309      simple_do_boxphot(&nPix1,&flux1,source,image1,mask1,maskBad,photRadius);
     310    }
     311
     312    if (conv2) {
    306313      simple_do_boxphot(&nPix2,&flux2,source,imageC2,maskC2,maskBad,photRadius);
    307       if (conv1) {
    308         simple_do_boxphot(&nPix1,&flux1,source,imageC1,maskC1,maskBad,photRadius);
    309       }
    310       else {
    311         simple_do_boxphot(&nPix1,&flux1,source,image1,mask1,maskBad,photRadius);
    312       }
    313     }
     314    }
     315    else {
     316      simple_do_boxphot(&nPix2,&flux2,source,image2,mask2,maskBad,photRadius);
     317    }
     318
    314319    logFluxDifferences->data.F32[i] = flux2 - flux1;
    315320    fitMask->data.PS_TYPE_VECTOR_MASK_DATA[i] = 0;
     
    321326    //    fprintf(stderr,"SOURCES: %d %g %g %g -> %d %d %g %g %d %g\n",i,source->peak->xf,source->peak->yf,source->psfMag,
    322327    //      nPix1,nPix2,flux1,flux2,fitMask->data.PS_TYPE_VECTOR_MASK_DATA[i],logFluxDifferences->data.F32[i]);
    323    
    324328  }
    325329
  • trunk/psModules/src/imcombine/pmSubtractionSimple.h

    r35771 r35867  
    1616                              psImageMaskType maskVal,
    1717                              psImageMaskType maskBad,
    18                               psImageMaskType maskPoor
     18                              psImageMaskType maskPoor,
     19                              float deconvolveThreshold
    1920                              );
    2021
Note: See TracChangeset for help on using the changeset viewer.