- Timestamp:
- Jan 4, 2010, 10:06:09 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionStamps.c
r26502 r26505 181 181 182 182 pmSubtractionStampList *pmSubtractionStampListAlloc(int numCols, int numRows, const psRegion *region, 183 int footprint, float spacing, float sysErr )183 int footprint, float spacing, float sysErr, float skyErr) 184 184 { 185 185 pmSubtractionStampList *list = psAlloc(sizeof(pmSubtractionStampList)); // Stamp list to return … … 224 224 list->footprint = footprint; 225 225 list->sysErr = sysErr; 226 list->skyErr = skyErr; 226 227 227 228 return list; … … 326 327 const psImage *image2, const psImage *subMask, 327 328 const psRegion *region, float thresh1, float thresh2, 328 int size, int footprint, float spacing, float sysErr, 329 int size, int footprint, float spacing, float sysErr, float skyErr, 329 330 pmSubtractionMode mode) 330 331 { … … 383 384 384 385 if (!stamps) { 385 stamps = pmSubtractionStampListAlloc(numCols, numRows, region, footprint, spacing, sysErr);386 stamps = pmSubtractionStampListAlloc(numCols, numRows, region, footprint, spacing, sysErr, skyErr); 386 387 } 387 388 … … 441 442 xStamp = xList->data.F32[j]; 442 443 yStamp = yList->data.F32[j]; 443 fprintf (stderr, "find: %d %d ==> %5.1f %5.1f\n", xCentre, yCentre, xStamp, yStamp);444 // fprintf (stderr, "find: %d %d ==> %5.1f %5.1f\n", xCentre, yCentre, xStamp, yStamp); 444 445 } 445 446 } else { … … 496 497 const psImage *image, const psImage *subMask, 497 498 const psRegion *region, int size, int footprint, 498 float spacing, float sysErr, pmSubtractionMode mode)499 float spacing, float sysErr, float skyErr, pmSubtractionMode mode) 499 500 500 501 { … … 517 518 pmSubtractionStampList *stamps = pmSubtractionStampListAlloc(subMask->numCols, subMask->numRows, 518 519 region, footprint, spacing, 519 sysErr ); // Stamp list520 sysErr, skyErr); // Stamp list 520 521 int numStamps = stamps->num; // Number of stamps 521 522 … … 548 549 } 549 550 550 fprintf (stderr, "stamp: %5.1f %5.1f == %d %d\n", xStamp, yStamp, xPix, yPix);551 // fprintf (stderr, "stamp: %5.1f %5.1f == %d %d\n", xStamp, yStamp, xPix, yPix); 551 552 552 553 bool found = false; … … 742 743 return false; 743 744 } 744 fprintf (stderr, "stamp: %5.1f %5.1f == %d %d\n", stamp->x, stamp->y, x, y);745 // fprintf (stderr, "stamp: %5.1f %5.1f == %d %d\n", stamp->x, stamp->y, x, y); 745 746 746 747 // Catch memory leaks --- these should have been freed and NULLed before … … 765 766 psImage *varSub = psImageSubset(variance, region); // Subimage with stamp 766 767 psKernel *var = psKernelAllocFromImage(varSub, size, size); // Variance postage stamp 767 if (isfinite(stamps->sysErr) && stamps->sysErr > 0) { 768 769 if ((isfinite(stamps->skyErr) && (stamps->skyErr > 0)) || 770 (isfinite(stamps->sysErr) && (stamps->sysErr > 0))) { 768 771 float sysErr = 0.25 * PS_SQR(stamps->sysErr); // Systematic error 772 float skyErr = stamps->skyErr; 769 773 psKernel *image1 = stamp->image1, *image2 = stamp->image2; // Input images 770 774 for (int y = -size; y <= size; y++) { 771 775 for (int x = -size; x <= size; x++) { 772 776 float additional = image1->kernel[y][x] + image2->kernel[y][x]; 773 weight->kernel[y][x] = 1.0 / ( var->kernel[y][x] + sysErr * PS_SQR(additional));777 weight->kernel[y][x] = 1.0 / (skyErr + var->kernel[y][x] + sysErr * PS_SQR(additional)); 774 778 } 775 779 } … … 795 799 pmSubtractionStampList *pmSubtractionStampsSetFromSources(const psArray *sources, const psImage *image, 796 800 const psImage *subMask, const psRegion *region, 797 int size, int footprint, float spacing, float sysErr, 801 int size, int footprint, float spacing, float sysErr, float skyErr, 798 802 pmSubtractionMode mode) 799 803 { … … 819 823 y->data.F32[numOut] = source->peak->yf; 820 824 } 821 fprintf (stderr, "stamp: %5.1f %5.1f\n", x->data.F32[numOut], y->data.F32[numOut]);825 // fprintf (stderr, "stamp: %5.1f %5.1f\n", x->data.F32[numOut], y->data.F32[numOut]); 822 826 numOut++; 823 827 } … … 826 830 827 831 pmSubtractionStampList *stamps = pmSubtractionStampsSet(x, y, image, subMask, region, size, 828 footprint, spacing, sysErr, mode); // Stamps832 footprint, spacing, sysErr, skyErr, mode); // Stamps 829 833 psFree(x); 830 834 psFree(y); … … 840 844 pmSubtractionStampList *pmSubtractionStampsSetFromFile(const char *filename, const psImage *image, 841 845 const psImage *subMask, const psRegion *region, 842 int size, int footprint, float spacing, float sysErr, 846 int size, int footprint, float spacing, float sysErr, float skyErr, 843 847 pmSubtractionMode mode) 844 848 { … … 858 862 859 863 pmSubtractionStampList *stamps = pmSubtractionStampsSet(x, y, image, subMask, region, size, footprint, 860 spacing, sysErr, mode);864 spacing, sysErr, skyErr, mode); 861 865 psFree(data); 862 866
Note:
See TracChangeset
for help on using the changeset viewer.
