Changeset 36229 for branches/eam_branches/ipp-20130904/psModules
- Timestamp:
- Oct 22, 2013, 10:30:55 AM (13 years ago)
- Location:
- branches/eam_branches/ipp-20130904/psModules/src/objects
- Files:
-
- 3 edited
-
pmPCM_MinimizeChisq.c (modified) (3 diffs)
-
pmPCMdata.c (modified) (8 diffs)
-
pmPCMdata.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCM_MinimizeChisq.c
r36228 r36229 477 477 // * threading takes place above this level 478 478 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); 481 480 } else { 482 481 psImageConvolveKernel (pcm->modelConvFlux, pcm->modelFlux, NULL, 0, pcm->psfFFT); … … 497 496 // * threading takes place above this level 498 497 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); 501 499 } else { 502 500 psImageConvolveKernel (dmodelConv, dmodel, NULL, 0, pcm->psfFFT); … … 518 516 // * threading takes place above this level 519 517 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); 522 519 } else { 523 520 psImageConvolveFFT (dmodelConv, dmodel, NULL, 0, pcm->psf); -
branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.c
r36228 r36229 88 88 } 89 89 90 pcm->smdata = NULL; 90 91 pcm->modelConv = NULL; 91 92 pcm->psf = NULL; … … 253 254 // check for NULL structure elements? 254 255 255 int size = smdata->Nrange + 1; 256 256 int size = smdata->Nrange; 257 258 psFree (smdata->kernel); 257 259 smdata->kernel = psVectorAlloc(2 * smdata->Nrange + 1, PS_TYPE_F32); 258 260 … … 265 267 // generate the kernel (not normalized) 266 268 for (int i = -size, j = 0; i <= size; i++, j++) { 267 float z = i / sigma / M_SQRT2;269 float z = PS_SQR(i * factor); 268 270 sum += smdata->kernel->data.F32[j] = 1.0 / (1 + kappa * z + pow(z,1.666)); 269 271 } … … 334 336 pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff); 335 337 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 339 338 pcm->use1Dgauss = true; 340 pcm->sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;341 339 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]; 342 349 343 350 // psImageSmoothCacheAlloc generates a structure but does not assign the smoothing vector 344 351 pcm->smdata = psImageSmoothCacheAlloc (source->pixels, pcm->sigma, pcm->nsigma); 345 352 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); 349 358 # else 350 359 // make sure we save a cached copy of the psf flux … … 363 372 psf->image->data.F32[(int)(0.5*psf->image->numRows)][(int)(0.5*psf->image->numCols)] = 1.0; 364 373 # endif 365 366 374 pcm->psf = psf; 367 375 pcm->smdata = NULL; 368 369 376 # endif 370 377 … … 428 435 pcm->dmodelsConvFlux->data[n] = psImageCopy (pcm->dmodelsConvFlux->data[n], source->pixels, PS_TYPE_F32); 429 436 } 437 438 // If we have changed the window, we need to redefine the smoothing target vectors (but pcm->sigma,kappa,nsigma remain) 430 439 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); 438 447 } 439 448 … … 472 481 pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff); 473 482 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;478 483 float nsigma = 2.0; 479 484 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]; 481 492 482 493 // 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); 489 502 } else { 490 503 // make sure we save a cached copy of the psf flux … … 532 545 pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff); 533 546 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;538 547 float nsigma = 2.0; 539 548 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); 541 566 } else { 542 567 // make sure we save a cached copy of the psf flux -
branches/eam_branches/ipp-20130904/psModules/src/objects/pmPCMdata.h
r36085 r36229 38 38 bool use1Dgauss; 39 39 float sigma; 40 float kappa; 40 41 float nsigma; 41 42 42 psImageSmooth _PreAlloc_Data *smdata;43 psImageSmoothCacheData *smdata; 43 44 } pmPCMdata; 44 45
Note:
See TracChangeset
for help on using the changeset viewer.
