00001
00002 #ifdef __cplusplus
00003 extern "C" {
00004 #endif
00005
00006
00007 #ifndef SADIE_H
00008 #define SADIE_H
00009
00010
00011
00012 #define LOCALE "tclSadie"
00013 #define SYSTEM "Solaris/Linux"
00014
00015
00016
00017 #define _NOERRORCHECK_
00018
00019 #define DIR ""
00020
00021 #define DBND 65535
00022 #define DLIN 65535
00023 #define DPIX 65535
00024 #define DBIT 8
00025 #define DMIN 128.5
00026 #define DMAX 255.5
00027
00028 #define SBPB 8
00029 #define SBIT sizeof(PIXEL)*SBPB
00030
00031 #define SMIN 0
00032 #define SMAX 255
00033
00034 #define SLEN 1024
00035
00036 #define TLEN 496
00037
00038
00039
00040
00041
00042
00043 typedef unsigned char BYTE;
00044
00045 typedef float PIXEL;
00046
00047
00048
00049
00050
00051 typedef struct ROI {
00052 unsigned long tmpSelect;
00053 unsigned long select;
00054 char *name;
00055 long nval;
00056 long *zero;
00057 PIXEL *gmin;
00058 PIXEL *gmax;
00059 double *mean;
00060 double *dev;
00061 double *cov;
00062 double *cor;
00063 struct ROI *next;
00064 } ROI, *ROIPtr;
00065
00066
00067 typedef struct {
00068 short nbnd;
00069 short nlin;
00070 short npix;
00071 short nbit;
00072 PIXEL gmin;
00073 PIXEL gmax;
00074 char pstr[1];
00075 char text[TLEN-1];
00076 ROIPtr regions;
00077 PIXEL ***data;
00078 } IMAGE;
00079
00080 extern char *SLOG;
00081
00082 extern short NAMES;
00083
00084 extern short TIMES;
00085
00086 extern short LINES;
00087
00088 extern short ABORT;
00089
00090
00091
00092 typedef enum {
00093 T_EXIT,
00094 T_BILTOBSQ,
00095 T_BSQTOBIL,
00096 T_CHECKER,
00097 T_CHECKIMG,
00098 T_CHIRP,
00099 T_CLUSTER,
00100 T_COM2REAL,
00101 T_COMBINE,
00102 T_COMPARE,
00103 T_CONTNORM,
00104 T_CONTOUR,
00105 T_COVAR,
00106 T_CSPLINE,
00107 T_DECORSTR,
00108 T_DESTRIPE,
00109 T_DISK2IMG,
00110 T_DSPL2IMG,
00111 T_DUPL,
00112 T_EDGE,
00113 T_EIGEN,
00114 T_EXPAND,
00115 T_FCONVL,
00116 T_FFT1D,
00117 T_FFT2D,
00118 T_FHT1D,
00119 T_FHT2D,
00120 T_FILTER,
00121 T_FINI,
00122 T_FLTBOX,
00123 T_FLTCONE,
00124 T_FLTCYL,
00125 T_FLTEXP,
00126 T_FLTGAUSS,
00127 T_FUNCTION,
00128 T_GEOMCOEF,
00129 T_GEOMWARP,
00130 T_GETMEM,
00131 T_GRADIENT,
00132 T_GRAYSCAL,
00133 T_GRID,
00134 T_HELP,
00135 T_HISTEQ,
00136 T_HISTOGRM,
00137 T_HMOSAIC,
00138 T_HSVTORGB,
00139 T_IMG2DISK,
00140 T_IMG2DSPL,
00141 T_IMG2EPSF,
00142 T_IMG2PICT,
00143 T_IMG2TAPE,
00144 T_IMG2TEXT,
00145 T_IMG2TIFF,
00146 T_IMG2VECT,
00147 T_IMPORT,
00148 T_INFO,
00149 T_INIT,
00150 T_INSERT,
00151 T_MATRIX_INVERT,
00152 T_LABEL,
00153 T_LVLSLICE,
00154 T_MAIN,
00155 T_MATCH,
00156 T_MAXLIKE,
00157 T_MEDIAN,
00158 T_MESSAGE,
00159 T_MINDIST,
00160 T_MOSAIC,
00161 T_PACK,
00162 T_PCT,
00163 T_PICT2IMG,
00164 T_PIXLDUMP,
00165 T_PLOT,
00166 T_PROGRESS,
00167 T_PSPECT1D,
00168 T_PSPECT,
00169 T_RANDOM,
00170 T_RANGE,
00171 T_REAL2COM,
00172 T_REFINE,
00173 T_RELIEF,
00174 T_RELIMG,
00175 T_RELMEM,
00176 T_RESAMPL,
00177 T_RGBTOHSV,
00178 T_RMSDIFF,
00179 T_ROISTATS,
00180 T_ROTATE,
00181 T_ROTATECUBE,
00182 T_SCATTER,
00183 T_SCONVL,
00184 T_SEGMENT,
00185 T_SIGMAP,
00186 T_SINESTAR,
00187 T_SINEWAVE,
00188 T_STATS,
00189 T_STRETCH,
00190 T_SUBSAMPL,
00191 T_SWAP,
00192 T_TAPE2IMG,
00193 T_TEST,
00194 T_TFINVERT,
00195 T_TFLINEAR,
00196 T_TFLOG,
00197 T_TFPLT,
00198 T_TFQUANT,
00199 T_TFROOT,
00200 T_TFSAT,
00201 T_TFSCALE,
00202 T_TFSQUARE,
00203 T_TFTABLE,
00204 T_TFTHRESH,
00205 T_TIFF2IMG,
00206 T_TIMING,
00207 T_TRNSFORM,
00208 T_UNPACK,
00209 T_VECT2IMG,
00210 T_VMOSAIC,
00211 T_VSTRETCH,
00212 T_WINDOW,
00213 T_WTFCAVG,
00214 T_WTFDIVER,
00215 T_WTFMAJ,
00216 T_WTFMAX,
00217 T_WTFMIN,
00218 T_WTFVAR,
00219 T_END
00220 } T_TIME;
00221
00222 extern char *functions[T_END][2];
00223
00224
00225
00226 #define FALSE 0
00227 #define TRUE 1
00228
00229 #define OFF 0
00230 #define ON 1
00231
00232 #define BEGIN "
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330 #define BTIFF ((unsigned long)0)
00331 #define GTIFF ((unsigned long)1)
00332 #define PTIFF ((unsigned long)2)
00333 #define RTIFF ((unsigned long)3)
00334
00335 #define TBYTE ((unsigned long)1)
00336 #define TASCII ((unsigned long)2)
00337 #define TSHORT ((unsigned long)3)
00338 #define TLONG ((unsigned long)4)
00339 #define TRATIONAL ((unsigned long)5)
00340
00341 #define LilEndian ((unsigned long)0x4949)
00342 #define BigEndian ((unsigned long)0x4D4D)
00343 #define MagicNumber ((unsigned long)42)
00344
00345 #define NoComp ((unsigned long)1)
00346 #define RLEComp ((unsigned long)2)
00347 #define PackBitsComp ((unsigned long)32773)
00348
00349 #define NewSubfileType 254
00350 #define SubfileType 255
00351 #define ImageWidth 256
00352 #define ImageLength 257
00353 #define BitsPerSample 258
00354 #define Compression 259
00355
00356 #define PhotometricInterpretation 262
00357 #define Thresholding 263
00358 #define CellWidth 264
00359 #define CellLength 265
00360 #define FillOrder 266
00361
00362 #define ImageDescription 270
00363 #define Make 271
00364 #define Model 272
00365 #define StripOffsets 273
00366 #define Orientation 274
00367
00368 #define SamplesPerPixel 277
00369 #define RowsPerStrip 278
00370 #define StripByteCounts 279
00371 #define MinSampleValue 280
00372 #define MaxSampleValue 281
00373 #define XResolution 282
00374 #define YResolution 283
00375 #define PlanarConfiguration 284
00376
00377 #define FreeOffsets 288
00378 #define FreeByteCounts 289
00379 #define GrayResponseUnit 290
00380 #define GrayResponseCurve 291
00381
00382 #define ResolutionUnit 296
00383
00384 #define Software 305
00385 #define DateTime 306
00386
00387 #define Artist 315
00388 #define HostComputer 316
00389
00390 #define ColorMap 320
00391
00392 #define ExtraSamples 338
00393
00394 #define Copyright 33432
00395
00396 typedef struct {
00397 unsigned short tag;
00398 unsigned short type;
00399 unsigned long count;
00400 unsigned long value;
00401 } entry;
00402
00403
00404
00405
00406
00407 #define min(x,y) ((x) < (y) ? (x) : (y))
00408 #define max(x,y) ((x) > (y) ? (x) : (y))
00409
00410 #define rnd(x) (short)((x) > 0.0 ? (x)+0.5 : (x)-0.5)
00411 #define lrnd(x) (long)((x) > 0.0 ? (x)+0.5 : (x)-0.5)
00412
00413
00414
00415 #include <stdio.h>
00416 #include <stdlib.h>
00417 #include <string.h>
00418 #include <math.h>
00419 #include <time.h>
00420
00421
00422 extern int ProgMeter_Create(char*);
00423 extern int ProgMeter_Update(int, double);
00424 extern int ProgMeter_Destroy(int);
00425
00426 extern void BILTOBSQ (IMAGE *, IMAGE **);
00427 extern void BSQTOBIL (IMAGE **, short, IMAGE **);
00428 extern void CHECKER (short, short, short, short, IMAGE **);
00429 extern short CHECKIMG (IMAGE *);
00430 extern void CHIRP (short, short, double, IMAGE **);
00431 extern void CLUSTER (IMAGE *, short, short, short, PIXEL, short, short, short, PIXEL, IMAGE **);
00432 extern void COM2REAL (IMAGE *, short, IMAGE **, IMAGE **);
00433 extern void COMBINE (IMAGE *, IMAGE *, short, double, double, IMAGE **);
00434 extern void COMPARE (IMAGE *, IMAGE *, short, IMAGE **);
00435 extern void CONTNORM (IMAGE *, PIXEL, double, short, IMAGE **);
00436 extern void CONTOUR (IMAGE *, short, double, IMAGE **);
00437 extern void COVAR (IMAGE *, short, double *, double *);
00438 extern void DECORSTR (IMAGE *, short, IMAGE **);
00439 extern void DESTRIPE (IMAGE *, short, short, short, short, short, IMAGE **);
00440 extern void DISK2IMG (char *, long, IMAGE **);
00441 extern void DUPL (IMAGE *, short, short, short, short, short, short, short, short, short, IMAGE **);
00442 extern void EDGE (IMAGE *, short, IMAGE **, IMAGE **);
00443 extern void EIGEN (double *, short, double *);
00444 extern void EXPAND (IMAGE *, double, double, double, IMAGE **);
00445 extern void FCONVL (IMAGE *, IMAGE *, short, IMAGE **);
00446 extern void FFT2D (IMAGE *, short, IMAGE **);
00447 extern void FHT2D (IMAGE *, short, IMAGE **);
00448 extern void FILTER (IMAGE *, double (*)(double, double, double, double), double, double, double, IMAGE **);
00449 extern void FINI (void);
00450 extern double FLTBOX (double, double, double, double);
00451 extern double FLTCONE (double, double, double, double);
00452 extern double FLTCYL (double, double, double, double);
00453 extern double FLTEXP (double, double, double, double);
00454 extern double FLTGAUSS (double, double, double, double);
00455 extern void FUNCTION (short, short, double, double, double, short, IMAGE **);
00456 extern void GEOMCOEF (double *, double *, double *, double *, short, short, double *, double *);
00457 extern void GEOMWARP (IMAGE *, short, short, short, double *, double *, short, double, PIXEL, IMAGE **);
00458 extern void GETMEM (short, short, short, IMAGE **);
00459 extern void GRADIENT (IMAGE *, PIXEL *, PIXEL *, short, IMAGE **, IMAGE **);
00460 extern void GRAYSCAL (short, short, short, PIXEL, PIXEL, IMAGE **);
00461 extern void HELP (T_TIME, char *);
00462 extern void HISTEQ (IMAGE *, short, short, IMAGE **);
00463 extern void HISTOGRM (IMAGE *, short, PIXEL, PIXEL, short, long *);
00464 extern void STRICTHISTOGRM (IMAGE *, short, short,PIXEL, PIXEL, short, long *);
00465 extern void HMOSAIC (IMAGE *, IMAGE *, short, PIXEL, IMAGE **);
00466 extern void HSVTORGB (IMAGE *, IMAGE **);
00467 extern void IMG2DISK (IMAGE *, short, char *);
00468 extern void IMG2EPSF (IMAGE *, char *, short);
00469 extern void IMG2TEXT (IMAGE *, char *);
00470 extern void IMG2TIFF (IMAGE *, char *, short);
00471 extern void IMPORT (char *, short, short, short, short, short, short, short, short, short, short, short, short,short, short, short, long, IMAGE **out);
00472 extern void INIT (void);
00473 extern void INSERT (IMAGE *, IMAGE *, short, short, IMAGE **);
00474 extern void MATRIX_INVERT (double *, short, double *);
00475 extern void LABEL (IMAGE *, double, PIXEL, IMAGE **);
00476 extern void LVLSLICE (IMAGE *, PIXEL *, short, IMAGE **);
00477 extern void MATCH (IMAGE *, IMAGE *, short, short, IMAGE **);
00478 extern void MAXLIKE (IMAGE *, short, double *, double *, IMAGE **);
00479 extern void MEDIAN (IMAGE *, short, short, IMAGE **);
00480 extern void MESSAGE (char, char *);
00481 extern void MINDIST (IMAGE *, short, short, double *, double *, IMAGE **);
00482 extern void MOSAIC (IMAGE **, short, short, short, short *, short *, PIXEL, IMAGE **);
00483 extern void PACK (short, long, PIXEL *);
00484 extern void PCT (IMAGE *, short, IMAGE **);
00485 extern short PLOT (PIXEL **, short, short, char *, char *, short);
00486 extern short PROGRESS (double);
00487 extern void PSPECT (IMAGE *, IMAGE **);
00488 extern void RANDOM (short, short, short, double, IMAGE **);
00489 extern void RANGE (IMAGE *);
00490 extern void REAL2COM (IMAGE *, IMAGE *, short, IMAGE **);
00491 extern void REFINE (IMAGE *[3], IMAGE **);
00492 extern void RELIEF (IMAGE *, double, double, double, IMAGE **);
00493 extern void RELIMG (IMAGE **);
00494 extern void RELMEM (IMAGE *);
00495 extern void RESAMPL (IMAGE *, short, short, short, short, IMAGE **);
00496 extern void RGBTOHSV (IMAGE *, IMAGE **);
00497 extern void RMSDIFF (IMAGE *, IMAGE *, double *);
00498 extern short ROISTATS (char *, short, long, PIXEL *, short, short, PIXEL *, PIXEL *, double *, double *, long *, double *, double *);
00499 extern void ROTATE (IMAGE *, double, PIXEL, double, IMAGE **);
00500 extern void ROTATECUBE (IMAGE *, short, short, short, short, short, short, IMAGE **);
00501 extern void SCATTER (IMAGE *, IMAGE *, short, short, short, short, IMAGE **);
00502 extern void SCONVL (IMAGE *, PIXEL *, short, short, IMAGE **);
00503 extern void SEGMENT (IMAGE *, short, double, PIXEL, IMAGE **);
00504 extern void SIGMAP (IMAGE *, IMAGE *, IMAGE **);
00505 extern void SINESTAR (short, short, double, IMAGE **);
00506 extern void SINEWAVE (short, short, double, double, IMAGE **);
00507 extern short STATS (IMAGE *, short, short, short, PIXEL, PIXEL, double *, double *, PIXEL *, PIXEL *, PIXEL *, long *);
00508 extern void STRETCH (IMAGE *, short (*)(IMAGE *, IMAGE **), IMAGE **);
00509 extern void SUBSAMPL (IMAGE *, short, short, short, short, short, short, short, short, short, IMAGE **);
00510 extern short SWAP (unsigned char *);
00511 extern void TAPE2IMG (unsigned char *, short, short, long, short, short, short, short, short, short, short, short, short, short, short, short, short, IMAGE **);
00512 extern short TFINVERT (IMAGE *, IMAGE **);
00513 extern short TFLINEAR (IMAGE *, IMAGE **);
00514 extern short TFLOG (IMAGE *, IMAGE **);
00515 extern short TFPLT (IMAGE *, IMAGE **);
00516 extern short TFQUANT (IMAGE *, IMAGE **);
00517 extern short TFROOT (IMAGE *, IMAGE **);
00518 extern short TFSAT (IMAGE *, IMAGE **);
00519 extern short TFSCALE (IMAGE *, IMAGE **);
00520 extern short TFSQUARE (IMAGE *, IMAGE **);
00521 extern short TFTABLE (IMAGE *, IMAGE **);
00522 extern short TFTHRESH (IMAGE *, IMAGE **);
00523 extern void TIFF2IMG (char *, IMAGE **);
00524 extern void TIMING (T_TIME);
00525 extern void TRNSFORM (IMAGE *, short, IMAGE **);
00526 extern void UNPACK (short, long, PIXEL *);
00527 extern void VMOSAIC (IMAGE *, IMAGE *, short, PIXEL, IMAGE **);
00528 extern void VSTRETCH (IMAGE *, short, IMAGE **);
00529 extern void WINDOW (IMAGE *, PIXEL (*)(PIXEL *, short, short), short, short, IMAGE **);
00530 extern PIXEL WTFCAVG (PIXEL *, short, short);
00531 extern PIXEL WTFDIVER (PIXEL *, short, short);
00532 extern PIXEL WTFMAJ (PIXEL *, short, short);
00533 extern PIXEL WTFMAX (PIXEL *, short, short);
00534 extern PIXEL WTFMIN (PIXEL *, short, short);
00535 extern PIXEL WTFVAR (PIXEL *, short, short);
00536
00537 extern void CREATE_ROI (IMAGE*, char*, int, int, int, int, short, short, short);
00538 extern void CLEAR_ROI (IMAGE*);
00539 extern void brshnm (int, int, int, int);
00540
00541 extern int FILESIZE (unsigned char*);
00542 extern double mBesselF(double);
00543
00544
00545
00546 #endif
00547
00548
00549
00550 #ifdef __cplusplus
00551 }
00552 #endif