IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 22, 2013, 10:30:55 AM (13 years ago)
Author:
eugene
Message:

swap to PS1_V1 smoothing for the pcm analysis

Location:
branches/eam_branches/ipp-20130904/psModules/src/objects
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCM_MinimizeChisq.c

    r36228 r36229  
    477477        // * threading takes place above this level
    478478        pcm->modelConvFlux = psImageCopy (pcm->modelConvFlux, pcm->modelFlux, pcm->modelFlux->type.type);
    479         psImageSmooth_PreAlloc_F32 (pcm->modelConvFlux, pcm->smdata);
    480         // psImageSmooth (pcm->modelConvFlux, pcm->sigma, pcm->nsigma);
     479        psImageSmoothCache_F32 (pcm->modelConvFlux, pcm->smdata);
    481480    } else {
    482481        psImageConvolveKernel (pcm->modelConvFlux, pcm->modelFlux, NULL, 0, pcm->psfFFT);
     
    497496            // * threading takes place above this level
    498497            dmodelConv = psImageCopy (dmodelConv, dmodel, dmodel->type.type);
    499             psImageSmooth_PreAlloc_F32 (dmodelConv, pcm->smdata);
    500             // psImageSmooth (dmodelConv, pcm->sigma, pcm->nsigma);
     498            psImageSmoothCache_F32 (dmodelConv, pcm->smdata);
    501499        } else {
    502500            psImageConvolveKernel (dmodelConv, dmodel, NULL, 0, pcm->psfFFT);
     
    518516            // * threading takes place above this level
    519517            dmodelConv = psImageCopy (dmodelConv, dmodel, dmodel->type.type);
    520             psImageSmooth_PreAlloc_F32 (dmodelConv, pcm->smdata);
    521             // psImageSmooth (dmodelConv, pcm->sigma, pcm->nsigma);
     518            psImageSmoothCache_F32 (dmodelConv, pcm->smdata);
    522519        } else {
    523520            psImageConvolveFFT (dmodelConv, dmodel, NULL, 0, pcm->psf);
  • branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.c

    r36228 r36229  
    8888    }
    8989
     90    pcm->smdata = NULL;
    9091    pcm->modelConv = NULL;
    9192    pcm->psf = NULL;
     
    253254    // check for NULL structure elements?
    254255
    255     int size = smdata->Nrange + 1;
    256 
     256    int size = smdata->Nrange;
     257
     258    psFree (smdata->kernel);
    257259    smdata->kernel = psVectorAlloc(2 * smdata->Nrange + 1, PS_TYPE_F32);
    258260
     
    265267    // generate the kernel (not normalized)
    266268    for (int i = -size, j = 0; i <= size; i++, j++) {
    267         float z = i / sigma / M_SQRT2;
     269        float z = PS_SQR(i * factor);
    268270        sum += smdata->kernel->data.F32[j] = 1.0 / (1 + kappa * z + pow(z,1.666));
    269271    }
     
    334336    pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff);
    335337   
    336     float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
    337     float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
    338 
    339338    pcm->use1Dgauss = true;
    340     pcm->sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
    341339    pcm->nsigma = 2.0;
     340   
     341    // XXX use these lines for a GAUSS kernel:
     342    // float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
     343    // float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
     344    // pcm->sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
     345
     346    // XXX use these lines for a PS1_V1 kernel
     347    pcm->sigma = 0.5 * (axes.major + axes.minor);
     348    pcm->kappa = PAR[PM_PAR_7];
    342349
    343350    // psImageSmoothCacheAlloc generates a structure but does not assign the smoothing vector
    344351    pcm->smdata = psImageSmoothCacheAlloc (source->pixels, pcm->sigma, pcm->nsigma);
    345352
    346     float v1sigma = 0.5 * (axes.major + axes.minor);
    347     psImageSmoothCacheKernel_Gauss (pcm->smdata, v1sigma, PAR[PM_PAR_7]);
    348 
     353    // XXX use this for GAUSS kernel:
     354    // psImageSmoothCacheKernel_Gauss (pcm->smdata, pcm->sigma);
     355
     356    // XXX use these lines for a PS1_V1 kernel
     357    psImageSmoothCacheKernel_PS1_V1 (pcm->smdata, pcm->sigma, pcm->kappa);
    349358# else
    350359    // make sure we save a cached copy of the psf flux
     
    363372    psf->image->data.F32[(int)(0.5*psf->image->numRows)][(int)(0.5*psf->image->numCols)] = 1.0;
    364373# endif
    365 
    366374    pcm->psf = psf;
    367375    pcm->smdata = NULL;
    368 
    369376# endif
    370377
     
    428435            pcm->dmodelsConvFlux->data[n] = psImageCopy (pcm->dmodelsConvFlux->data[n], source->pixels, PS_TYPE_F32);
    429436        }
     437
     438        // If we have changed the window, we need to redefine the smoothing target vectors (but pcm->sigma,kappa,nsigma remain)
    430439        psFree(pcm->smdata);
    431         pcm->smdata = psImageSmooth_PreAlloc_DataAlloc (source->pixels, pcm->sigma, pcm->nsigma);
    432 
    433     // psImageSmoothCacheAlloc generates a structure but does not assign the smoothing vector
    434     pcm->smdata = psImageSmoothCacheAlloc (source->pixels, pcm->sigma, pcm->nsigma);
    435 
    436     float v1sigma = 0.5 * (axes.major + axes.minor);
    437     psImageSmoothCacheKernel_Gauss (pcm->smdata, v1sigma, PAR[PM_PAR_7]);
     440        pcm->smdata = psImageSmoothCacheAlloc (source->pixels, pcm->sigma, pcm->nsigma);
     441
     442        // XXX use this for GAUSS kernel:
     443        // psImageSmoothCacheKernel_Gauss (pcm->smdata, pcm->sigma);
     444
     445        // XXX use these lines for a PS1_V1 kernel
     446        psImageSmoothCacheKernel_PS1_V1 (pcm->smdata, pcm->sigma, pcm->kappa);
    438447    }
    439448
     
    472481        pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff);
    473482   
    474         float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
    475         float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
    476 
    477         float sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
    478483        float nsigma = 2.0;
    479484
    480         psImageSmooth (source->modelFlux, sigma, nsigma);
     485        // XXX use these for a GAUSS kernel
     486        // float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
     487        // float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
     488        // float sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
     489
     490        float sigma = 0.5 * (axes.major + axes.minor);
     491        float kappa = PAR[PM_PAR_7];
    481492
    482493        // psImageSmoothCacheAlloc generates a structure but does not assign the smoothing vector
    483         pcm->smdata = psImageSmoothCacheAlloc (source->pixels, pcm->sigma, pcm->nsigma);
    484        
    485         float v1sigma = 0.5 * (axes.major + axes.minor);
    486         psImageSmoothCacheKernel_Gauss (pcm->smdata, v1sigma, PAR[PM_PAR_7]);
    487 
    488         psImageSmoothCache_F32 (source->modelFlux, pcm->smdata);
     494        psImageSmoothCacheData *smdata = psImageSmoothCacheAlloc (source->modelFlux, sigma, nsigma);
     495
     496        psImageSmoothCacheKernel_PS1_V1 (smdata, sigma, kappa);
     497        // XXX psImageSmoothCacheKernel_GAUSS (smdata, sigma);
     498
     499        psImageSmoothCache_F32 (source->modelFlux, smdata);
     500
     501        // old call: psImageSmooth (source->modelFlux, sigma, nsigma);
    489502    } else {
    490503        // make sure we save a cached copy of the psf flux
     
    532545        pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff);
    533546   
    534         float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
    535         float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
    536 
    537         float sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
    538547        float nsigma = 2.0;
    539548
    540         psImageSmooth (source->modelFlux, sigma, nsigma);
     549        // float FWHM_MAJOR = 2*modelPSF->modelRadius (modelPSF->params, 0.5*PAR[PM_PAR_I0]);
     550        // float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major);
     551        // float sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
     552
     553        float sigma = 0.5 * (axes.major + axes.minor);
     554        float kappa = PAR[PM_PAR_7];
     555
     556        // psImageSmoothCacheAlloc generates a structure but does not assign the smoothing vector
     557        psImageSmoothCacheData *smdata = psImageSmoothCacheAlloc (source->modelFlux, sigma, nsigma);
     558
     559        psImageSmoothCacheKernel_PS1_V1 (smdata, sigma, kappa);
     560        // XXX psImageSmoothCacheKernel_GAUSS (smdata, sigma);
     561
     562        psImageSmoothCache_F32 (source->modelFlux, smdata);
     563        psFree (smdata);
     564
     565        // old call: psImageSmooth (source->modelFlux, sigma, nsigma);
    541566    } else {
    542567        // make sure we save a cached copy of the psf flux
  • branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.h

    r36085 r36229  
    3838    bool use1Dgauss;
    3939    float sigma;
     40    float kappa;
    4041    float nsigma;
    4142
    42     psImageSmooth_PreAlloc_Data *smdata;
     43    psImageSmoothCacheData *smdata;
    4344} pmPCMdata;
    4445
Note: See TracChangeset for help on using the changeset viewer.