Changeset 4041 for trunk/doc/modules/ModulesSDRS.tex
- Timestamp:
- May 27, 2005, 11:27:13 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/doc/modules/ModulesSDRS.tex (modified) (83 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/modules/ModulesSDRS.tex
r3975 r4041 1 %%% $Id: ModulesSDRS.tex,v 1.4 1 2005-05-19 02:58:14 priceExp $1 %%% $Id: ModulesSDRS.tex,v 1.42 2005-05-27 21:27:13 jhoblitt Exp $ 2 2 \documentclass[panstarrs]{panstarrs} 3 3 … … 100 100 standard locations, with optional command-line override values. 101 101 102 \begin{ verbatim}102 \begin{prototype} 103 103 bool pmConfigLoadSite (psMetadata **site, int *argc, char **argv); 104 104 bool pmConfigLoadCamera (psMetadata **camera, psMetadata *site, psMetadata *header, int *argc, char **argv); 105 105 bool pmConfigLoadRecipe (psMetadata **recipe, psMetadata *camera, int *argc, char **argv, char *script); 106 \end{ verbatim}106 \end{prototype} 107 107 108 108 \code{pmConfigLoadSite} loads basic configuration information from a … … 198 198 before being returned as a \code{psRegion} pointer. 199 199 200 \begin{ verbatim}200 \begin{prototype} 201 201 psSTR pmConfigLookupSTR (psMetadata *config, psMetadata *header, char *name); 202 202 psS32 pmConfigLookupS32 (psMetadata *config, psMetadata *header, char *name); 203 203 psF64 pmConfigLookupF64 (psMetadata *config, psMetadata *header, char *name); 204 204 psRegion *pmConfigLookupRegion (psMetadata *config, psMetadata *header, char *name); 205 \end{ verbatim}205 \end{prototype} 206 206 207 207 \section{Camera Data Organization \& Camera Geometry} … … 291 291 \subsection{Determine the Camera from the Primary Header} 292 292 293 \begin{ verbatim}293 \begin{prototype} 294 294 char *pmCameraFromHeader (psFitsHeader *header, psMetadata *rules); 295 \end{ verbatim}295 \end{prototype} 296 296 297 297 This function examines a primary header unit (\code{header}) and … … 340 340 \subsection{Validate the Header set \& Construct the FPA} 341 341 342 \begin{ verbatim}342 \begin{prototype} 343 343 bool pmCameraValidateHeaders (psMetadata *headers, psMetadata *camera); 344 344 psFPA *pmFPAfromHeader (psMetadata *headers, psMetadata *camera); 345 \end{ verbatim}345 \end{prototype} 346 346 347 347 These funtions examine the collection of \code{headers} and compare … … 505 505 offset and/or astrometry parameters. 506 506 507 \begin{ verbatim}507 \begin{prototype} 508 508 bool pmFPADefineOffsets (psFPA fpa); 509 509 bool pmFPADefineWCS (psFPA fpa); 510 510 bool pmFPADefineWCSfromOffsets (psFPA fpa); 511 \end{ verbatim}511 \end{prototype} 512 512 513 513 The first function takes a \code{psFPA} structure which has been … … 569 569 boundaries of the cells within chip-based images. 570 570 571 \begin{ verbatim}571 \begin{prototype} 572 572 psReadout *pmReadoutLoad (psReadout *input, psFits *f, psCell *cell, int plane); 573 \end{ verbatim}573 \end{prototype} 574 574 575 575 \section{Phase 2} … … 608 608 \code{pmSubtractBias} shall subtract the bias from the image. 609 609 The API shall be the following: 610 \begin{ verbatim}610 \begin{prototype} 611 611 psReadout *pmSubtractBias(psReadout *in, void *fitSpec, const psList *overscans, 612 612 pmOverscanAxis overscanAxis, const psStats *stat, 613 613 int nBin, pmFit fit, const psReadout *bias); 614 \end{ verbatim}614 \end{prototype} 615 615 616 616 Two types of bias correction may optionally be performed on the input … … 638 638 The \code{overscanAxis} specifies how the prescan/overscan subtraction 639 639 is to be performed. It is an enumerated type: 640 \begin{ verbatim}640 \begin{datatype} 641 641 /** Overscan axis */ 642 642 typedef enum { … … 646 646 PM_OVERSCAN_ALL ///< Subtract the statistic of all pixels in overscan region 647 647 } pmOverscanAxis; 648 \end{ verbatim}648 \end{datatype} 649 649 650 650 If the \code{overscanAxis} is \code{PM_OVERSCAN_NONE}, then the … … 681 681 682 682 \code{fit} is an enumerated type: 683 \begin{ verbatim}683 \begin{datatype} 684 684 /** Fit types */ 685 685 typedef enum { … … 688 688 PM_FIT_SPLINE ///< Fit cubic splines 689 689 } pmFit; 690 \end{ verbatim}690 \end{datatype} 691 691 692 692 If \code{fitSpec} is \code{NULL}, or \code{fit} is \code{PM_FIT_NONE}, … … 738 738 \code{coeff}, acting on the flux. The API shall be the following: 739 739 740 \begin{ verbatim}740 \begin{prototype} 741 741 psReadout *pmNonLinearityPolynomial(psReadout *in, const psPolynomial1D *coeff); 742 \end{ verbatim}742 \end{prototype} 743 743 744 744 The polynomial coefficients, \code{coeff}, will be supplied by the … … 749 749 shall be the following: 750 750 751 \begin{ verbatim}751 \begin{prototype} 752 752 psReadout *pmNonLinearityLookup(psReadout *in, const psVector *inFlux, const psVector *outFlux); 753 \end{ verbatim}753 \end{prototype} 754 754 755 755 For each pixel in the input image, the function shall find the flux … … 785 785 divide the input image by the flat-field image and return it in place, 786 786 updating the mask as appropriate. The API shall be the following: 787 \begin{ verbatim}787 \begin{prototype} 788 788 bool pmFlatField(psReadout *in, psReadout *mask, const psReadout *flat); 789 \end{ verbatim}789 \end{prototype} 790 790 791 791 Note that the input image, \code{in}, and the flat-field image, … … 827 827 828 828 We define several mask values for use in the phase 2 processing: 829 \begin{ verbatim}829 \begin{datatype} 830 830 /** Mask values */ 831 831 typedef enum { … … 835 835 PM_MASK_FLAT = 0x0008, ///< The pixel is non-positive in the flat-field 836 836 } pmMaskValue; 837 \end{ verbatim}837 \end{datatype} 838 838 839 839 Of these, masks for the charge traps need to be grown by the extent of … … 850 850 pixels in the bad pixel mask that match the value to mask. The API 851 851 shall be the following: 852 \begin{ verbatim}852 \begin{prototype} 853 853 psReadout *pmMaskBadPixels(psReadout *in, const psImage *mask, unsigned int maskVal, 854 854 float sat, unsigned int growVal, int grow); 855 \end{ verbatim}855 \end{prototype} 856 856 857 857 Note that the input image, \code{in}, is modified in-place. All … … 882 882 subtract a model for the background of the image. The API shall be 883 883 the following: 884 \begin{ verbatim}884 \begin{prototype} 885 885 psReadout *pmSubtractSky(psReadout *in, psPolynomial2D *poly, psImage *mask, psU8 maskVal, 886 886 int binFactor, psStats *stats, float clipSD); 887 \end{ verbatim}887 \end{prototype} 888 888 889 889 Note that the input image, \code{in}, shall be subtracted in-place. … … 933 933 and so each input image will have the same noise characteristics. 934 934 935 \begin{ verbatim}935 \begin{datatype} 936 936 typedef struct { 937 937 psStats *stats; // Statistics to use in combining pixels … … 941 941 int nKeep; // Number of pixels to be sure to keep 942 942 } pmCombineParams; 943 943 \end{datatype} 944 945 \begin{prototype} 944 946 psImage * 945 947 pmReadoutCombine(psImage *output, // Output image, or NULL … … 952 954 float readnoise // Read noise in e 953 955 ); 954 \end{ verbatim}956 \end{prototype} 955 957 956 958 \code{pmReadoutCombine} combines input images pixel by pixel --- for … … 1104 1106 1105 1107 We start by defining a single source detected in a single band: 1106 \begin{ verbatim}1108 \begin{datatype} 1107 1109 typedef struct { 1108 1110 pmPeak *peak; // description of peak pixel … … 1113 1115 pmSourceType type; // best identification of object 1114 1116 } pmSource; 1115 \end{ verbatim}1117 \end{datatype} 1116 1118 1117 1119 This source has the capacity for several types of measurements. The 1118 1120 simplest measurement of a source is the location and flux of the peak 1119 1121 pixel associated with the source: 1120 \begin{ verbatim}1122 \begin{datatype} 1121 1123 typedef struct { 1122 1124 int x; // x-coordinate of peak pixel … … 1125 1127 pmPeakType class; // description of peak 1126 1128 } pmPeak; 1127 \end{ verbatim}1129 \end{datatype} 1128 1130 1129 1131 A peak pixel may have several features which may be determined when … … 1135 1137 than a specific number of neighbors at the same value, within some 1136 1138 tolarence: 1137 \begin{ verbatim}1139 \begin{datatype} 1138 1140 typedef enum { 1139 1141 PM_PEAK_LONE; // isolated peak … … 1141 1143 PM_PEAK_FLAT; // peak has equal-value neighbors 1142 1144 } pmPeakType; 1143 \end{ verbatim}1145 \end{datatype} 1144 1146 1145 1147 The pixels which contain the source may be specified with the … … 1154 1156 moment information for a specific source: 1155 1157 1156 \begin{ verbatim}1158 \begin{datatype} 1157 1159 typedef struct { 1158 1160 float x; // x-coord of centroid … … 1166 1168 int nPixels; // number of pixels used 1167 1169 } pmMoments; 1168 \end{ verbatim}1170 \end{datatype} 1169 1171 1170 1172 An object's flux distribution may be modelled with some analytical … … 1174 1176 discuss the details of these models in section~\ref{ObjectModels}. 1175 1177 1176 \begin{ verbatim}1178 \begin{datatype} 1177 1179 typedef struct { 1178 1180 pmObjectModel type; // model to be used … … 1183 1185 psS32 nIter; // number of iterations 1184 1186 } pmModel; 1185 \end{ verbatim}1186 1187 \begin{ verbatim}1187 \end{datatype} 1188 1189 \begin{datatype} 1188 1190 typedef enum { 1189 1191 PM_MODEL_GAUSS; … … 1194 1196 PM_MODEL_SERSIC_CORE; 1195 1197 } pmModelType; 1196 \end{ verbatim}1198 \end{datatype} 1197 1199 1198 1200 A given source may be identified as most-likely to be one of several … … 1202 1204 source classification code is developed.} 1203 1205 1204 \begin{ verbatim}1206 \begin{datatype} 1205 1207 typedef enum { 1206 1208 PM_SOURCE_PSFSTAR; … … 1213 1215 PM_SOURCE_OTHER; 1214 1216 } pmSourceType; 1215 \end{ verbatim}1216 1217 \begin{ verbatim}1217 \end{datatype} 1218 1219 \begin{datatype} 1218 1220 typedef enum { 1219 1221 PM_CONTOUR_CRUDE; 1220 1222 } pmContourType; 1221 \end{ verbatim}1223 \end{datatype} 1222 1224 1223 1225 Allocators for the above structures are defined as follows: 1224 \begin{ verbatim}1226 \begin{prototype} 1225 1227 pmSource *pmSourceAlloc (); 1226 1228 pmPeak *pmPeakAlloc (int x, int y, float counts, psPeakType class); 1227 1229 pmMoments *pmMomentsAlloc (); 1228 1230 pmModel *pmModelAlloc (pmModelType type); 1229 \end{ verbatim}1231 \end{prototype} 1230 1232 1231 1233 \subsection{Basic Object Detection APIs} … … 1235 1237 which we expect to use them in a basic object detection process. 1236 1238 1237 \begin{ verbatim}1239 \begin{prototype} 1238 1240 psVector *pmFindVectorPeaks(const psVector *vector, float threshold); 1239 \end{ verbatim}1241 \end{prototype} 1240 1242 1241 1243 Find all local peaks in the given vector above the given threshold. A … … 1255 1257 \code{psU32}). 1256 1258 1257 \begin{ verbatim}1259 \begin{prototype} 1258 1260 psArray *pmFindImagePeaks(const psImage *image, float threshold); 1259 \end{ verbatim}1261 \end{prototype} 1260 1262 1261 1263 Find all local peaks in the given image above the given threshold. … … 1272 1274 this function is an array of \code{pmPeak} entries. 1273 1275 1274 \begin{ verbatim}1276 \begin{prototype} 1275 1277 psArray *pmPeaksSubset(psArray *peaks, float maxvalue, const psRegion valid); 1276 \end{ verbatim}1278 \end{prototype} 1277 1279 1278 1280 Create a new peaks array, removing certain types of peaks from the … … 1282 1284 function is a new array with a reduced number of peaks. 1283 1285 1284 \begin{ verbatim}1286 \begin{prototype} 1285 1287 pmSource *pmSourceLocalSky(const psImage *image, const pmPeak *peak, psStatsOptions statsOptions, float innerRadius, float outerRadius); 1286 \end{ verbatim}1288 \end{prototype} 1287 1289 1288 1290 Measure the local sky in the vicinity of the given \code{peak}. The … … 1297 1299 which is then returned. 1298 1300 1299 \begin{ verbatim}1301 \begin{prototype} 1300 1302 bool pmSourceMoments(pmSource *source, float radius); 1301 \end{ verbatim}1303 \end{prototype} 1302 1304 1303 1305 Measure source moments for the given \code{source}, using the value of … … 1309 1311 value indicates the success (TRUE) of the operation. 1310 1312 1311 \begin{ verbatim}1313 \begin{prototype} 1312 1314 bool pmSourceRoughClass(pmArray *source, psMetadata *metadata); 1313 \end{ verbatim}1315 \end{prototype} 1314 1316 1315 1317 Based on the specified data values, make a guess at the source … … 1401 1403 \end{enumerate} 1402 1404 1403 \begin{ verbatim}1405 \begin{prototype} 1404 1406 bool pmSourceSetPixelsCircle(pmSource *source, const psImage *image, float radius, int maskVal); 1405 \end{ verbatim}1407 \end{prototype} 1406 1408 1407 1409 Define pixels associated with a source based on a circular aperture. … … 1413 1415 success or \code{FALSE} on failure. 1414 1416 1415 \begin{ verbatim}1417 \begin{prototype} 1416 1418 bool pmSourceModelGuess(pmSource *source, const psImage *image, pmModelType model); 1417 \end{ verbatim}1419 \end{prototype} 1418 1420 1419 1421 Convert available data to an initial guess for the given model. This … … 1424 1426 function returns \code{TRUE} on success or \code{FALSE} on failure. 1425 1427 1426 \begin{ verbatim}1428 \begin{prototype} 1427 1429 psArray *pmSourceContour(const pmSource *source, const psImage *image, float level, pmContourType type); 1428 \end{ verbatim}1430 \end{prototype} 1429 1431 1430 1432 Find points in a contour for the given source at the given level. If … … 1440 1442 \tbd{Other contour types may be specified in the future for more refined contours} 1441 1443 1442 \begin{ verbatim}1444 \begin{prototype} 1443 1445 bool pmSourceFitModel(pmSource *source, psImage *image); 1444 \end{ verbatim}1446 \end{prototype} 1445 1447 1446 1448 Fit the requested model to the specified source. The starting guess … … 1451 1453 returns \code{TRUE} on success or \code{FALSE} on failure. 1452 1454 1453 \begin{ verbatim}1455 \begin{prototype} 1454 1456 bool pmSourceAddModel(psImage *image, pmSource *source, bool center, bool sky); 1455 1457 bool pmSourceSubModel(psImage *image, pmSource *source, bool center, bool sky); 1456 \end{ verbatim}1458 \end{prototype} 1457 1459 1458 1460 Add or subtract the given source model flux to/from the provided … … 1473 1475 \subsubsection{Real 2D Gaussian} 1474 1476 1475 \begin{ verbatim}1477 \begin{prototype} 1476 1478 float pmMinLM_Gauss2D(psVector *deriv, psVector *params, psVector *x); 1477 \end{ verbatim}1479 \end{prototype} 1478 1480 1479 1481 This function is a two-dimensional Gaussian with an elliptical … … 1485 1487 \subsubsection{Pseudo-Gaussian} 1486 1488 1487 \begin{ verbatim}1489 \begin{prototype} 1488 1490 float pmMinLM_PseudoGauss2D(psVector *deriv, psVector *params, psVector *x); 1489 \end{ verbatim}1491 \end{prototype} 1490 1492 1491 1493 This function is a polynomial approximation of a 2D Gaussian otherwise … … 1498 1500 \subsubsection{Waussian} 1499 1501 1500 \begin{ verbatim}1502 \begin{prototype} 1501 1503 float pmMinLM_Wauss2D(psVector *deriv, psVector *params, psVector *x); 1502 \end{ verbatim}1504 \end{prototype} 1503 1505 1504 1506 The Waussian is a modified polynomial approximation of a 2D Gaussian, … … 1508 1510 \subsubsection{Twisted Gaussian} 1509 1511 1510 \begin{ verbatim}1512 \begin{prototype} 1511 1513 float pmMinLM_TwistGauss2D(psVector *deriv, psVector *params, psVector *x); 1512 \end{ verbatim}1514 \end{prototype} 1513 1515 1514 1516 This function describes an object with power-law wings and a flattened … … 1522 1524 \subsubsection{Sersic Galaxy Model} 1523 1525 1524 \begin{ verbatim}1526 \begin{prototype} 1525 1527 float pmMinLM_Sersic(psVector *deriv, psVector *params, psVector *x); 1526 \end{ verbatim}1528 \end{prototype} 1527 1529 1528 1530 \subsubsection{Sersic with Core Galaxy Model} 1529 1531 1530 \begin{ verbatim}1532 \begin{prototype} 1531 1533 float pmMinLM_SersicCore(psVector *deriv, psVector *params, psVector *x); 1532 \end{ verbatim}1534 \end{prototype} 1533 1535 1534 1536 \subsubsection{Pseudo Sersic Galaxy Model} 1535 1537 1536 \begin{ verbatim}1538 \begin{prototype} 1537 1539 float pmMinLM_PseudoSersic(psVector *deriv, psVector *params, psVector *x); 1538 \end{ verbatim}1540 \end{prototype} 1539 1541 1540 1542 … … 1556 1558 \subsection{Combining images} 1557 1559 1558 \begin{ verbatim}1560 \begin{prototype} 1559 1561 psImage *pmCombineImages(psImage *combined, // Combined image 1560 1562 psArray **questionablePixels, // Array of rejection masks … … 1568 1570 const psStats *stats // Statistics to use in the combination 1569 1571 ); 1570 \end{ verbatim}1572 \end{prototype} 1571 1573 1572 1574 \code{pmCombineImages} shall combine the input \code{images}, … … 1602 1604 \subsection{Rejecting pixels} 1603 1605 1604 \begin{ verbatim}1606 \begin{prototype} 1605 1607 psArray *pmRejectPixels(const psArray *images, // Array of input images 1606 1608 const psArray *pixels, // These are the pixels which were rejected in the combination … … 1610 1612 float gradLimit // Gradient limit 1611 1613 ); 1612 \end{ verbatim}1614 \end{prototype} 1613 1615 1614 1616 \code{pmRejectPixels} inspects those questionable \code{pixels} … … 1764 1766 equally useful and faster, though not as tried and proven. 1765 1767 1766 \begin{ verbatim}1768 \begin{datatype} 1767 1769 typedef enum { 1768 1770 PM_SUBTRACTION_KERNEL_POIS, // POIS kernel --- delta functions 1769 1771 PM_SUBTRACTION_KERNEL_ISIS // ISIS kernel --- gaussians modified by polynomials 1770 1772 } pmSubtractionKernelsType; 1771 \end{ verbatim}1773 \end{datatype} 1772 1774 1773 1775 In order to simplify the book-keeping for the kernels, we will define … … 1775 1777 each of the kernel basis functions: 1776 1778 1777 \begin{ verbatim}1779 \begin{datatype} 1778 1780 typedef struct { 1779 1781 pmSubtractionKernelType type; // Type of kernels --- allowing the use of multiple kernels … … 1785 1787 // accelerate ISIS; don't use for POIS) 1786 1788 } pmSubtractionKernels; 1787 \end{ verbatim}1789 \end{datatype} 1788 1790 1789 1791 This structure caters for both choices of kernel type. For a POIS … … 1811 1813 The \code{pmSubtractionKernels} are generated by the following functions: 1812 1814 1813 \begin{ verbatim}1815 \begin{prototype} 1814 1816 pmSubtractionKernels *pmSubtractionKernelsAllocPOIS(int size, int spatialOrder); 1815 1817 pmSubtractionKernels *pmSubtractionKernelsAllocISIS(const psVector *sigmas, const psVector *orders, 1816 1818 int size, int spatialOrder); 1817 \end{ verbatim}1819 \end{prototype} 1818 1820 1819 1821 \code{pmSubtractionKernelsAllocPOIS} shall generate the … … 1847 1849 convolution kernel are referred to as ``stamps''. 1848 1850 1849 \begin{ verbatim}1851 \begin{datatype} 1850 1852 typedef struct { 1851 1853 int x, y; // Position … … 1854 1856 psStampStatus status; // Status of stamp 1855 1857 } pmStamp; 1856 \end{ verbatim}1858 \end{datatype} 1857 1859 1858 1860 A stamp is the region around a central pixel, \code{x,y}. The … … 1868 1870 \code{status}, an enumerated type: 1869 1871 1870 \begin{ verbatim}1872 \begin{datatype} 1871 1873 typedef enum { 1872 1874 PM_STAMP_USED, // Use this stamp … … 1875 1877 PM_STAMP_NONE // No stamp in this region 1876 1878 } pmStampStatus; 1877 \end{ verbatim}1878 1879 \begin{ verbatim}1879 \end{datatype} 1880 1881 \begin{prototype} 1880 1882 psArary *pmSubtractionFindStamps(psArray *stamps, // Output stamps, or NULL 1881 1883 const psImage *image, // Image for which to find stamps … … 1886 1888 int border // Border around image to ignore (should be size of kernel) 1887 1889 ); 1888 \end{ verbatim}1890 \end{prototype} 1889 1891 1890 1892 \code{pmSubtractionFindStamps} returns an array of stamps on the … … 1914 1916 stamps. 1915 1917 1916 \begin{ verbatim}1918 \begin{prototype} 1917 1919 bool pmSubtractionCalculateEquation(psArray *stamps, // The stamps for which to calculate the equation 1918 1920 const psImage *reference, // Reference image … … 1921 1923 int footprint // Half-size of region over which to calculate equation 1922 1924 ); 1923 \end{ verbatim}1925 \end{prototype} 1924 1926 1925 1927 \code{pmSubtractionCalculateEquation} shall calculate the … … 1961 1963 subtraction, care should be taken with optimisation. 1962 1964 1963 \begin{ verbatim}1965 \begin{prototype} 1964 1966 psVector *pmSubtractionSolveEquation(psVector *solution, // Solution vector, or NULL 1965 1967 const psArray *stamps // Array of stamps 1966 1968 ); 1967 \end{ verbatim}1969 \end{prototype} 1968 1970 1969 1971 \code{pmSubtractionSolveEquation} shall solve the matrix equation … … 1982 1984 \subsection{Rejection of stamps} 1983 1985 1984 \begin{ verbatim}1986 \begin{prototype} 1985 1987 bool pmSubtractionRejectStamps(psArray *stamps, // Array of stamps to check for rejection 1986 1988 psImage *mask, // Mask image … … 1993 1995 const pmSubtractionKernels *kernels // Array of kernel parameters 1994 1996 ); 1995 \end{ verbatim}1997 \end{prototype} 1996 1998 1997 1999 \code{pmSubtractionRejectStamps} shall apply the \code{solution} to … … 2014 2016 it. 2015 2017 2016 \begin{ verbatim}2018 \begin{prototype} 2017 2019 psImage *pmSubtractionKernelImage(psImage *out, const psVector *solution, 2018 2020 const pmSubtractionKernels *kernels, float x, float y); 2019 \end{ verbatim}2021 \end{prototype} 2020 2022 2021 2023 \code{pmSubtractionKernelImage} shall create an image of the kernel … … 2208 2210 corresponding parameters, \code{psPhase2MaskCRs} shall mask cosmic 2209 2211 rays on the input image on the basis of their morphology. The API shall be the following: 2210 \begin{ verbatim}2212 \begin{prototype} 2211 2213 /** Masks Cosmic Rays on the input image on the basis of morphology. */ 2212 2214 psReadout *psPhase2MaskCRs(psReadout *in, ///< Input image to be masked, and output … … 2214 2216 const void *params ///< Parameters for algorithm 2215 2217 ); 2216 \end{ verbatim}2218 \end{prototype} 2217 2219 2218 2220 This is one case in which the best choice of algorithm is not known, … … 2229 2231 \code{psPhase2MaskOpticalDefects} shall mask optical defects on the 2230 2232 image. The API shall be the following: 2231 \begin{ verbatim}2233 \begin{prototype} 2232 2234 /** Masks optical defects in the input image */ 2233 2235 psChip *psPhase2MaskOpticalDefects(psChip *in, ///< Image to be masked (with astrometry), and output … … 2235 2237 int grow ///< Number of pixels to grow 2236 2238 ); 2237 \end{ verbatim}2239 \end{prototype} 2238 2240 2239 2241 \tbd{It's not clear to me how this is accomplished apart from an … … 2251 2253 parameters, \code{psPhase2MeasurePSF} shall return the PSF for the 2252 2254 image. The API shall be the following: 2253 \begin{ verbatim}2255 \begin{prototype} 2254 2256 /** Measures the PSF on the input image. Returns the PSF */ 2255 2257 psImage *psPhase2MeasurePSF(const psReadout *in, ///< Input image for which to measure the PSF … … 2257 2259 const void *params ///< Parameters for algorithm 2258 2260 ); 2259 \end{ verbatim}2261 \end{prototype} 2260 2262 2261 2263 This is another case where the algorithm is not currently clear, and … … 2270 2272 readout with the \code{objects} member set to a list of objects. The 2271 2273 API shall be the following: 2272 \begin{ verbatim}2274 \begin{prototype} 2273 2275 /** Find and measure objects on the input image. Fills in the "objects" member of the psReadout. */ 2274 2276 /** THIS NEEDS WORK. */ … … 2277 2279 const psVector *levels ///< Threshold levels (std dev.s) 2278 2280 ); 2279 \end{ verbatim}2281 \end{prototype} 2280 2282 2281 2283 Note that the input image shall be modified in-place, only insofar as … … 2293 2295 clipping parameters, \code{psPhase2Astrometry} shall fit an 2294 2296 astrometric solution. The API shall be the following: 2295 \begin{ verbatim}2297 \begin{prototype} 2296 2298 /** Corrects astrometry on the input chip */ 2297 2299 psChip *psPhase2Astrometry(psChip *in, ///< Input chip for which to do astrometry, and output … … 2300 2302 float clipLevel ///< Level at which to clip 2301 2303 ); 2302 \end{ verbatim}2304 \end{prototype} 2303 2305 2304 2306 Note that the input chip shall be modified in-place, only insofar as … … 2319 2321 coordinates. We define a \code{psPostageStampSpec} to specify the 2320 2322 parameters for a postage stamp: 2321 \begin{ verbatim}2323 \begin{datatype} 2322 2324 /** Specification of a postage stamp: location on the sky */ 2323 2325 typedef struct { … … 2325 2327 psSphereCoord *size; ///< Size of postage stamp 2326 2328 } psPostageStampSpec; 2327 \end{ verbatim}2329 \end{datatype} 2328 2330 2329 2331 The \code{center} shall be specified in ICRS coordinates, which is the … … 2336 2338 chip, \code{psPhase2PostageStamps} shall output an array of subimages, 2337 2339 containing each of the regions. The API shall be the following: 2338 \begin{ verbatim}2340 \begin{prototype} 2339 2341 /** Return postage stamps of a set of regions */ 2340 2342 psImageArray *psPhase2PostageStamps(const psChip *in, ///< Chip from which to form postage stamps … … 2342 2344 ///< psPostageStampSpec 2343 2345 ); 2344 \end{ verbatim}2346 \end{prototype} 2345 2347 2346 2348 \code{regions} shall be a linked list of \code{psPostageStampSpec}s,
Note:
See TracChangeset
for help on using the changeset viewer.
