Changeset 1693 for trunk/doc/pslib/psLibSDRS.tex
- Timestamp:
- Sep 6, 2004, 2:52:16 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/doc/pslib/psLibSDRS.tex (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/pslib/psLibSDRS.tex
r1692 r1693 1 %%% $Id: psLibSDRS.tex,v 1.10 8 2004-09-04 04:29:14 price Exp $1 %%% $Id: psLibSDRS.tex,v 1.109 2004-09-07 00:52:16 eugene Exp $ 2 2 \documentclass[panstarrs,spec]{panstarrs} 3 3 … … 2341 2341 2342 2342 \begin{verbatim} 2343 psImage *psImageSubsection( constpsImage *image, const char *section);2343 psImage *psImageSubsection(psImage *image, const char *section); 2344 2344 \end{verbatim} 2345 2345 Similar to \code{psImageSubset}, but uses an image \code{section}, of … … 2364 2364 2365 2365 \begin{verbatim} 2366 psImage *psImageTrim(psImage *image, int x0, int x1, int y0, int y1);2366 psImage *psImageTrim(psImage *image, int x0, int y0, int x1, int y1); 2367 2367 \end{verbatim} 2368 2368 Trim the specified \code{image} in-place, which involves shuffling the … … 2418 2418 2419 2419 \begin{verbatim} 2420 psVector *psImageCut(psVector *out, const psImage *input, 2421 const psImage *mask, unsigned int maskVal, 2422 float xs, float ys, float xe, float ye, 2423 unsigned int nSamples, psImageInterpolateMode mode); 2424 \end{verbatim} 2425 Extract pixels along a line segment, \code{(xs,ys)} to \code{(xe,ye)}, 2426 on the image to a vector (array of the appropriate data type). The 2427 line segment is sampled \code{nSamples} times, hence the output vector 2428 contains \code{nSamples} elements. The interpolation method used to 2429 derive the output vector value at each sample along the line segment 2430 is specified by \code{mode}. If the \code{mask} is non-\code{NULL}, 2431 then pixels for which the corresponding mask value is \code{maskVal} 2432 are not included in the interpolation. This function must be defined 2433 for the following types: \code{psS8}, \code{psU16}, \code{psF32}, 2420 psVector *psImageCut(psVector *out, 2421 psVector *coords, 2422 const psImage *input, 2423 const psImage *mask, 2424 unsigned int maskVal, 2425 float x0, 2426 float y0, 2427 float x1, 2428 float y1, 2429 unsigned int nSamples, 2430 psImageInterpolateMode mode); 2431 \end{verbatim} 2432 Extract pixels along a line segment, \code{(x0,y0)} to \code{(x1,y1)}, 2433 on the image to a vector of the same data type. The line segment is 2434 sampled \code{nSamples} times, hence the output vector contains 2435 \code{nSamples} elements. The interpolation method used to derive the 2436 output vector value at each sample along the line segment is specified 2437 by \code{mode}. If the \code{mask} is non-\code{NULL}, then pixels 2438 for which the corresponding mask value is \code{maskVal} are not 2439 included in the interpolation. This function must be defined for the 2440 following types: \code{psS8}, \code{psU16}, \code{psF32}, 2434 2441 \code{psF64}. 2435 2442 2436 2443 \begin{verbatim} 2437 psVector *psImageRadialCut(psVector *out, const psImage *input, 2444 psVector *psImageRadialCut(psVector *out, 2445 const psImage *input, 2438 2446 const psImage *mask, 2439 2447 unsigned int maskVal, 2440 float x, float y, 2441 const psVector *radii, const psStats *stats); 2448 float x, 2449 float y, 2450 const psVector *radii, 2451 const psStats *stats); 2442 2452 \end{verbatim} 2443 2453 Extract radial region data to a vector. A vector is constructed where … … 2612 2622 is specified by \code{x0,y0}, while the upper right-hand corner of the 2613 2623 requested region is specified by \code{x1,y1}. A negative value for 2614 either of \code{x1} or \code{y 2} specifies the size of the region to2624 either of \code{x1} or \code{y1} specifies the size of the region to 2615 2625 be read counting down from the end of the array. 2616 2626 … … 3395 3405 The \code{psMetadataAdd} routine is required to check that all 3396 3406 metadata names are unique unless the type is already qualified as 3397 \code{PS_META_ NON_UNIQUE}; in this case the data are added to the3407 \code{PS_META_ITEM_SET}; in this case the data are added to the 3398 3408 corresponding \code{psMetadataItem.items} list. 3399 3409 … … 3440 3450 Care should be taken not to leak memory when appending an item for 3441 3451 which the key already exists in the metadata (and is not 3442 \code{PS_META_ NON_UNIQUE}).3452 \code{PS_META_ITEM_SET}). 3443 3453 % 3444 3454 \begin{verbatim} … … 4036 4046 4037 4047 \end{document} 4038 4039 4040 An example of the usage of the metadata APIs is as follows:4041 \begin{verbatim}4042 for (int i = 0; i < 10; i += 5) {4043 float sqrti = sqrt(i);4044 psMetadataAdd(ms, PS_LIST_TAIL, psMetadataItemAlloc(PS_META_INT, &i, NULL, "const.%d", i));4045 psMetadataAdd(ms, PS_LIST_TAIL, psMetadataItemAlloc(PS_META_FLOAT, &sqrti,4046 "square root", "const.sqrt%d", i));4047 }4048 psMetadataAdd(ms, psMetadataItemAlloc(PS_META_STR, "Bonjour", "French", "lang.hello"));4049 /*4050 * Remove a key4051 */4052 psMetadataItemFree(psMetadataRemove(ms, PS_LIST_UNKNOWN, "lang.hello"));4053 /*4054 * Print all metadata4055 */4056 fprintf(stdout, "------\n");4057 psMetadataSetIterator(ms, 1, PS_LIST_HEAD);4058 while ((meta = psMetadataGetNext(ms, NULL, 1)) != NULL) {4059 psMetadataItemPrint(stdout, meta, "");4060 }4061 /*4062 * Look up a key by name4063 */4064 fprintf(stdout, "------\n");4065 fprintf(stdout, "Looking up by name:\n");4066 meta = psMetadataLookup(ms, "const.5");4067 if (meta != NULL) {4068 psMetadataItemPrint(stdout, meta, "");4069 }4070 \end{verbatim}4071 4072 \subsubsection{Naming convention for Metadata}4073 4074 The \code{psMetadataItem} struct includes a name. This name should be of4075 the form \code{name1.name2.name3}$\cdots$, e.g.\hfil\break4076 \null\qquad\qquad\code{IPP.phase1.ota12.biassec}.4077 4078 We must set in place a system for assigning the top-level `domains'4079 to responsible individuals, and for gathering a complete list of4080 all metadata names in use throughout the project.4081 4082 \paragraph{Support for Multiple Values for a Given Name}4083 4084 \begin{verbatim}4085 psMetadataAdd(ms, PS_LIST_UNKNOWN, psMetadataItemAlloc(PS_META_STR | PS_META_NON_UNIQUE,4086 "Bonjour", "French", "lang.hello"));4087 psMetadataAdd(ms, PS_LIST_UNKNOWN, psMetadataItemAlloc(PS_META_STR | PS_META_NON_UNIQUE,4088 "Aloha", "Hawaiian", "lang.hello"));4089 psMetadataAdd(ms, PS_LIST_UNKNOWN, psMetadataItemAlloc(PS_META_STR | PS_META_NON_UNIQUE,4090 "Good Morning", "English", "lang.hello"));4091 /*4092 * Print all metadata starting "lang"4093 */4094 psMetadataSetIterator(ms, 2, PS_LIST_HEAD);4095 while ((meta = psMetadataGetNext(ms, "lang", 2)) != NULL) {4096 psMetadataItemPrint(stdout, meta, "");4097 }4098 \end{verbatim}
Note:
See TracChangeset
for help on using the changeset viewer.
