Changeset 3426
- Timestamp:
- Mar 15, 2005, 1:18:29 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/doc/modules/ModulesSDRS.tex (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/modules/ModulesSDRS.tex
r3425 r3426 1 %%% $Id: ModulesSDRS.tex,v 1.3 3 2005-03-15 23:13:16price Exp $1 %%% $Id: ModulesSDRS.tex,v 1.34 2005-03-15 23:18:29 price Exp $ 2 2 \documentclass[panstarrs]{panstarrs} 3 3 … … 1535 1535 \end{verbatim} 1536 1536 1537 \appendix1538 1539 \section{Pseudo-C PSPhot}1540 \label{psphot}1541 1542 \begin{verbatim}1543 # include <pslib.h>1544 # include <psmodule.h>1545 1546 main () {1547 1548 psMetadata *header;1549 psImage *image;1550 1551 fd = psFitsOpen (argv[1]);1552 md = psFitsReadHeader (fd);1553 image = psFitsReadImage (fd, md);1554 1555 stats = psImageStats (NULL, image);1556 1557 RDNOISE = psMetadataLookup (md, "RDNOISE");1558 GAIN = psMetadataLookup (md, "GAIN");1559 INNER = psMetadataLookup (config, "INNER_RADIUS");1560 OUTER = psMetadataLookup (config, "OUTER_RADIUS");1561 SATURATE = psMetadataLookup (config, "SATURATE");1562 NSIGMA = psMetadataLookup (config, "PSF_PEAK_THRESHOLD");1563 RADIUS = psMetadataLookup (config, "PSF_MOMENTS_RADIUS");1564 XBORDER = psMetadataLookup (config, "XBORDER");1565 YBORDER = psMetadataLookup (config, "YBORDER");1566 1567 keep = psRegionAlloc (XBORDER, image->nCol - YBORDER,1568 YBORDER, image->nRow - YBORDER);1569 1570 Sky = stats->median;1571 Sig = sqrt(Sky/GAIN + SQ(RDNOISE));1572 1573 kernel = psKernelParts ();1574 smooth = psImageConvolve (NULL, image, kernel, PS_PARTS);1575 1576 peaks = pmFindImagePeaks (smooth, NSIGMA*Sig + Sky);1577 1578 peaks = pmCullImagePeaks (peaks, SATURATE, keep);1579 1580 sources = pmSourceLocalSky (image, peaks, INNER, OUTER);1581 1582 sources = pmSourceMoments (image, sources, RADIUS);1583 1584 sources = pmSourceRoughClassify (sources, SATURATE, MIN_SN_LIM, keep);1585 1586 stars = pmSourceSelectBrightStars (sources);1587 1588 stars = pmSourceFitModel (1589 }1590 1591 1592 1593 psArray *pmFindImagePeaks (psImage *image, float threshold) {1594 1595 psVector *row;1596 1597 row = psVectorAlloc (image[0].Ncol);1598 1599 /* find peaks in each row */1600 for (i = 0; i < image[0].Nrow; i++) {1601 rowpeaks = pmFindVectorPeaks (row, threshold);1602 peaks.x = rowpeaks;1603 peaks.y = i;1604 peaks.z = image (i, x);1605 }1606 1607 /* drop non-local peaks (peaks with neighbors) */1608 for (n = 0; n < peaks.n; n++) {1609 if (!local_peak) {1610 drop_peak;1611 }1612 }1613 return (peaks);1614 }1615 \end{verbatim}1616 1537 1617 1538 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 2184 2105 psFree(kernels); 2185 2106 psFree(kernelCoeffs); 2186 \ebd{verbatim} 2107 \end{verbatim} 2108 2109 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2110 2111 \appendix 2112 2113 \section{Pseudo-C PSPhot} 2114 \label{psphot} 2115 2116 \begin{verbatim} 2117 # include <pslib.h> 2118 # include <psmodule.h> 2119 2120 main () { 2121 2122 psMetadata *header; 2123 psImage *image; 2124 2125 fd = psFitsOpen (argv[1]); 2126 md = psFitsReadHeader (fd); 2127 image = psFitsReadImage (fd, md); 2128 2129 stats = psImageStats (NULL, image); 2130 2131 RDNOISE = psMetadataLookup (md, "RDNOISE"); 2132 GAIN = psMetadataLookup (md, "GAIN"); 2133 INNER = psMetadataLookup (config, "INNER_RADIUS"); 2134 OUTER = psMetadataLookup (config, "OUTER_RADIUS"); 2135 SATURATE = psMetadataLookup (config, "SATURATE"); 2136 NSIGMA = psMetadataLookup (config, "PSF_PEAK_THRESHOLD"); 2137 RADIUS = psMetadataLookup (config, "PSF_MOMENTS_RADIUS"); 2138 XBORDER = psMetadataLookup (config, "XBORDER"); 2139 YBORDER = psMetadataLookup (config, "YBORDER"); 2140 2141 keep = psRegionAlloc (XBORDER, image->nCol - YBORDER, 2142 YBORDER, image->nRow - YBORDER); 2143 2144 Sky = stats->median; 2145 Sig = sqrt(Sky/GAIN + SQ(RDNOISE)); 2146 2147 kernel = psKernelParts (); 2148 smooth = psImageConvolve (NULL, image, kernel, PS_PARTS); 2149 2150 peaks = pmFindImagePeaks (smooth, NSIGMA*Sig + Sky); 2151 2152 peaks = pmCullImagePeaks (peaks, SATURATE, keep); 2153 2154 sources = pmSourceLocalSky (image, peaks, INNER, OUTER); 2155 2156 sources = pmSourceMoments (image, sources, RADIUS); 2157 2158 sources = pmSourceRoughClassify (sources, SATURATE, MIN_SN_LIM, keep); 2159 2160 stars = pmSourceSelectBrightStars (sources); 2161 2162 stars = pmSourceFitModel ( 2163 } 2164 2165 2166 2167 psArray *pmFindImagePeaks (psImage *image, float threshold) { 2168 2169 psVector *row; 2170 2171 row = psVectorAlloc (image[0].Ncol); 2172 2173 /* find peaks in each row */ 2174 for (i = 0; i < image[0].Nrow; i++) { 2175 rowpeaks = pmFindVectorPeaks (row, threshold); 2176 peaks.x = rowpeaks; 2177 peaks.y = i; 2178 peaks.z = image (i, x); 2179 } 2180 2181 /* drop non-local peaks (peaks with neighbors) */ 2182 for (n = 0; n < peaks.n; n++) { 2183 if (!local_peak) { 2184 drop_peak; 2185 } 2186 } 2187 return (peaks); 2188 } 2189 \end{verbatim} 2187 2190 2188 2191 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note:
See TracChangeset
for help on using the changeset viewer.
