#ifndef _IP_H #define _IP_H //[comment] /* include file to use the functions in libip // */ /* data structures */ //#define FITS_HROWS 36 //#define FITS_HCOLS 80 //typedef char FITSRow[FITS_HCOLS]; typedef unsigned short CamPix; /* C type of 16bit pixel */ //#define NCAMPIX (1<<(int)(8*sizeof(CamPix))) /* number of unique CamPix */ //#define MAXCAMPIX (NCAMPIX-1) /* largest value in a CamPix*/ //typedef struct { /* following fields are cracked from the header for easy reference */ // int bitpix; /* handy BITPIX */ // int sw, sh; /* handy NAXIS1 and NAXIS2 */ // // FITSRow *var; /* malloced array of all unrecognized header lines */ // int nvar; /* number of var[] */ //char *image; /* malloced image array of sw*sh*(bitpix/8) bytes */ //int nbytes; /* bytes read so far .. used for incremental loading */ //int totbytes; /* total bytes to be read .. aka, size of image[] */ /* cache of WCS info from recent FImage */ //int wcsset; /* set when following are ok */ //double xref; /* x reference coordinate value (deg) */ //double yref; /* y reference coordinate value (deg) */ //double xrefpix; /* x reference pixel */ //double yrefpix; /* y reference pixel */ //double xinc; /* x coordinate increment (deg) */ //double yinc; /* y coordinate increment (deg) */ //double rot; /* rotation (deg) (from N through E) */ //char type[5]; /* projection code, see worldpos() */ //} FImage; /* "regsion": rectangular subset of an image */ typedef struct { CamPix *im; /* entire 2d array */ int iw, ih; /* dimensions of im */ int rx, ry; /* ul corner */ int rw, rh; /* size of region */ } ImRegion; #define ImRCenter(rp) (((rp)->ry+(rp)->rh/2)*(rp)->iw + (rp)->rx+(rp)->rw/2) /* stats for a region */ typedef struct { CamPix min, max; /* smallest and largest pixel */ CamPix median; /* pixel value in middle of population */ int maxatx, maxaty; /* location of largtest pixel, wrt image */ double mean, std; /* mean and std of all pixels in region */ double cmean, cstd; /* " of central half (25..75 percentile) of pixels */ } ImStats; /* characterization of a guassian curve */ typedef struct { double B; /* base */ double A; /* amplitude */ double s; /* sigma */ double m; /* median position */ } Gaussian; #define FWHMSIG 2.355 /* FWHM/sigma */ //[comment] /* definition of a star. * model it as 2 1d commensurate gaussians (same A and B) in x and y. * err is 1 sigma value of deviations at each pixel from the ideal shape. */ //typedef struct { //double x, y; /* position when each m == 0 */ //Gaussian vg; /* vertical best fit */ //Gaussian hg; /* horizontal best fit */ //double err; /* deviation @ STARSIGMA sigma */ //} Star; //#define STARSIGMA 3.0 /* sigmas of noise for star err */ //[comment] /****************************************************************************/ /* explodegif.c */ // //extern int explodeGIF (unsigned char *raw, int nraw, int *wp, int *hp, //unsigned char *pixap[], unsigned char ra[], unsigned char ga[], //unsigned char ba[], char errmsg[]); // // [comment] /****************************************************************************/ /* fits.c */ /* extern int writeFITS (int fd, FImage *fip, char *errmsg, int restore); extern int readFITS (int fd, FImage *fip, char *errmsg); extern int readIncFITS (int fd, FImage *fip, char *errmsg); extern int readFITSHeader (int fd, FImage *fip, char *errmsg); extern int writeSimpleFITS (int fd, char *pix, int w, int h, int restore); extern int getNAXIS (FImage *fip, int *n1p, int *n2p, char errmsg[]); extern void initFImage (FImage *fip); extern void resetFImage (FImage *fip); extern void setSimpleFITSHeader (FImage *fip); extern void setLogicalFITS (FImage *fip, char *name, int v, char *comment); extern void setIntFITS (FImage *fip, char *name, int v, char *comment); extern void setRealFITS (FImage *fip, char *name,double v,int sigdig,char *cmt); extern void setCommentFITS (FImage *fip, char *name, char *comment); extern void setStringFITS (FImage *fip, char *name, char *string, char *cmt); extern int getLogicalFITS (FImage *fip, char *name, int *vp); extern int getIntFITS (FImage *fip, char *name, int *vp); extern int getRealFITS (FImage *fip, char *name, double *vp); extern int getCommentFITS (FImage *fip, char *name, char *buf); extern int getStringFITS (FImage *fip, char *name, char *string); extern void addFImageVar (FImage *fip, FITSRow row); extern int delFImageVar (FImage *fip, char *name); extern int cpyFImageVar (FImage *dstfip, FImage *srcfip, char *name); */ // [comment] /****************************************************************************/ /* gaussfit.c */ int gaussfit (CamPix a[], int na, Gaussian *gp); int gauss2fit (ImRegion *ip, Gaussian *hgp, Gaussian *vgp); // [comment] /****************************************************************************/ /* lstsqr.c */ int lstsqr (double (*chisqr)(double p[]), double params0[], double params1[], int np, double ftol); //[comment] /****************************************************************************/ /* median.c */ //extern double dmedian (double a[], int n); //extern CamPix cmedian (CamPix a[], int n); //[comment] /****************************************************************************/ /* sqr.c */ double sqr (double x); //[comment] /****************************************************************************/ /* stars.c */ /* extern int quickStars (FImage *fip, ImStats *isp, int border, int burnt, double std, double **xpp, double **ypp); extern int getStar (ImRegion *rp, Star *sp); extern int cmpStars (Star *s1, Star *s0, double *magp, double *errp); */ //[comment] /****************************************************************************/ /* stats.c */ void regionStats (ImRegion *rp, ImStats *sp); //extern void ringStats (CamPix *ip, int imw, int r, int *minp, int *maxp, // int *medp); //extern void starCentroid (CamPix *ip, int imw, int r, int sky, double *dxp, //double *dyp, int *massp); //extern int clampRegion (ImRegion *rp); //[comment] /****************************************************************************/ /* walk.c */ /* extern void brightWalk (ImRegion *rp, int scan[8], int *bx, int *by); */ //[comment] /****************************************************************************/ /* wcs.c */ /* extern int RADec2xy(FImage *fip, double ra, double dec, double *xp, double *yp); extern int xy2RADec(FImage *fip, double x, double y, double *rap, double *decp); */ //[comment] /* For RCS Only -- Do Not Edit * @(#) $RCSfile: ip.h,v $ $Date: 2003/03/22 23:44:49 $ $Revision: 1.8 $ $Name: $ */ static double chisqr_1based (double p[]); static int amoeba(double **p, double *y, int ndim, double ftol,double (*funk)(), int *nfunk); static double * vector(nl,nh) int nl,nh; #endif /* _IP_H */