VIA - Volumetric Image Analysis
VImage.h
00001 /*
00002  *  $Id: VImage.h 726 2004-03-08 13:12:45Z lohmann $
00003  *
00004  *  Definitions associated with images: their representation in files and
00005  *  in memory, and operations that can be performed with them.
00006  */
00007 
00008 #ifndef V_VImage_h
00009 #define V_VImage_h 1
00010 
00011 /*
00012  *  Copyright 1993, 1994 University of British Columbia
00013  *
00014  *  Permission to use, copy, modify, distribute, and sell this software and its
00015  *  documentation for any purpose is hereby granted without fee, provided that
00016  *  the above copyright notice appears in all copies and that both that
00017  *  copyright notice and this permission notice appear in supporting
00018  *  documentation. UBC makes no representations about the suitability of this
00019  *  software for any purpose. It is provided "as is" without express or
00020  *  implied warranty.
00021  *
00022  *  Author: Arthur Pope, UBC Laboratory for Computational Intelligence
00023  */
00024 
00025 /* From the Vista library: */
00026 #include "viaio/Vlib.h"
00027 #include "viaio/file.h"
00028 
00029 /* From the standard C library: */
00030 #include <stdio.h>
00031 
00032 /* For definition of pid_t: */
00033 #include <sys/types.h>
00034 
00035 /* For portability: */
00036 #include <X11/Xfuncproto.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041 
00042 
00043 /*
00044  *  The representation of an image in memory.
00045  */
00046 
00047 /* Description of an image: */
00048 typedef struct V_ImageRec {
00049     int nbands;                         /* number of bands */
00050     int nrows;                          /* number of rows */
00051     int ncolumns;                       /* number of columns */
00052     VRepnKind pixel_repn;               /* representation of pixel values */
00053     unsigned long flags;                /* various flags */
00054     VAttrList attributes;               /* list of other image attributes */
00055     VPointer data;                      /* array of image pixel values */
00056     VPointer *row_index;                /* ptr to first pixel of each row */
00057     VPointer **band_index;              /* ptr to first row of each band */
00058     int nframes;                        /* number of motion frames */
00059     int nviewpoints;                    /* number of camera viewpoints */
00060     int ncolors;                        /* number of color channels */
00061     int ncomponents;                    /* number of vector components */
00062 } VImageRec;
00063 
00064 /* Codes for flags: */
00065 enum {
00066     VImageSingleAlloc = 0x01            /* one free() releases everything */
00067 };
00068 
00069 
00070 /*
00071  *  Macros for accessing image in memory.
00072  */
00073 
00074 /* The number of bands, rows, columns, etc. in an image: */
00075 #define VImageNBands(image)     ((image)->nbands)
00076 #define VImageNRows(image)      ((image)->nrows)
00077 #define VImageNColumns(image)   ((image)->ncolumns)
00078 #define VImageNFrames(image)    ((image)->nframes)
00079 #define VImageNViewpoints(image) ((image)->nviewpoints)
00080 #define VImageNColors(image)    ((image)->ncolors)
00081 #define VImageNComponents(image) ((image)->ncomponents)
00082 
00083 /* An image's pixel representation: */
00084 #define VPixelRepn(image)       ((image)->pixel_repn)
00085 
00086 /* An image's pixel data: */
00087 #define VImageData(image)       ((image)->data)
00088 
00089 /* An image's list of attributes: */
00090 #define VImageAttrList(image)   ((image)->attributes)
00091 
00092 /* The number of pixels in an image: */
00093 #define VImageNPixels(image) \
00094     ((image)->nbands * (image)->nrows * (image)->ncolumns)
00095 
00096 /* The size, in bytes, of a pixel on the present architecture: */
00097 #define VPixelSize(image)       (VRepnSize ((image)->pixel_repn))
00098 
00099 /* The minimum size, in bits, needed to represent a pixel: */
00100 #define VPixelPrecision(image)  (VRepnPrecision ((image)->pixel_repn))
00101 
00102 /* The name of an image's pixel representation: */
00103 #define VPixelRepnName(image)   (VRepnName ((image)->pixel_repn))
00104 
00105 /* The minimum and maximum legal pixel values: */
00106 #define VPixelMinValue(image)   (VRepnMinValue ((image)->pixel_repn))
00107 #define VPixelMaxValue(image)   (VRepnMaxValue ((image)->pixel_repn))
00108 
00109 /* The size, in bytes, of an entire image on the present architecture: */
00110 #define VImageSize(image)       (VImageNPixels(image) * VPixelSize(image))
00111 
00112 /* A pointer to a specified pixel: */
00113 #define VPixelPtr(image, band, row, column) \
00114     ((VPointer) ((char *) ((image)->band_index[band][row]) + \
00115                  (column) * VPixelSize (image)))
00116 
00117 /* A specified pixel of a specified type: */
00118 #define VPixel(image, band, row, column, type) \
00119     (* ((type *) (image)->band_index[band][row] + (column)))
00120 
00121 /* A pointer to a three-dimensional array of pixels: */
00122 #define VPixelArray(image, type) \
00123     ((type ***) (image)->band_index)
00124 
00125 /* The band corresponding to a particular frame, viewpoint, etc.: */
00126 #define VBandIndex(image, frame, viewpoint, color, component) \
00127     (((((frame) * (image)->nviewpoints + (viewpoint)) * (image)->ncolors + \
00128        (color)) * (image)->ncomponents) + (component))
00129 
00130 /* Test whether two images have the same representational range: */
00131 #define VSameImageRange(image1, image2) \
00132     ((image1)->nbands == (image2)->nbands && \
00133      (image1)->nrows == (image2)->nrows && \
00134      (image1)->ncolumns == (image2)->ncolumns && \
00135      (image1)->pixel_repn == (image2)->pixel_repn)
00136 
00137 /* Test whether two images have the same size: */
00138 #define VSameImageSize(image1, image2) \
00139     ((image1)->nbands == (image2)->nbands && \
00140      (image1)->nrows == (image2)->nrows && \
00141      (image1)->ncolumns == (image2)->ncolumns)
00142 
00143 
00144 /*
00145  *  Attributes used to represent an image.
00146  */
00147 
00148 #define VColorInterpAttr        "color_interp"
00149 #define VComponentInterpAttr    "component_interp"
00150 #define VFrameInterpAttr        "frame_interp"
00151 #define VNBandsAttr             "nbands"
00152 #define VNColorsAttr            "ncolors"
00153 #define VNComponentsAttr        "ncomponents"
00154 #define VNFramesAttr            "nframes"
00155 #define VNViewpointsAttr        "nviewpoints"
00156 #define VPixelAspectRatioAttr   "pixel_aspect_ratio"
00157 #define VViewpointInterpAttr    "viewpoint_interp"
00158 
00159 /* Values of band interpretation attributes: */
00160 typedef enum {
00161 
00162     /* Used at all levels of the hierarchy (frame, viewpoint, color, ...) */
00163     VBandInterpNone,            /* no interpretation specified */
00164     VBandInterpOther,           /* unknown interpretation specified */
00165 
00166     /* Describing motion frames: */
00167 
00168     /* Describing camera viewpoints: */
00169     VBandInterpStereoPair,
00170 
00171     /* Describing color channels: */
00172     VBandInterpRGB,
00173 
00174     /* Describing vector components: */
00175     VBandInterpComplex,
00176     VBandInterpGradient,
00177     VBandInterpIntensity,
00178     VBandInterpOrientation
00179 } VBandInterp;
00180 
00181 extern VDictEntry VBandInterpDict[];
00182 
00183 
00184 /*
00185  *  Miscellaneous things.
00186  */
00187 
00188 /* For specifying a band: */
00189 typedef int VBand;
00190 #define VAllBands       -1              /* all bands */
00191 
00192 /* For specifying how to pad when convolving: */
00193 typedef enum {
00194     VConvolvePadNone,                   /* set border pixels to zero */
00195     VConvolvePadZero,                   /* pad with zero */
00196     VConvolvePadBorder,                 /* pad with border pixel values */
00197     VConvolvePadWrap,                   /* pad with wrapped around values */
00198     VConvolvePadTrim                    /* don't pad, trim destination image */
00199 } VConvolvePadMethod;
00200 
00201 /* For specifying which type of image filtering is to be performed: */
00202 typedef enum {
00203     VFilterGaussian,                    /* 2D Gaussian smoothing */
00204     VFilterGaussianDx,                  /* d / dX */
00205     VFilterGaussianDy                   /* d / dY */
00206 } VFilterKind;
00207 
00208 /* Keywords for representing kind of operation: */
00209 typedef enum {
00210 
00211     /* Unary operations: */
00212     VImageOpAbs,
00213     VImageOpExp,
00214     VImageOpLog,
00215     VImageOpNot,
00216     VImageOpSqrt,
00217     VImageOpSquare,
00218 
00219     /* Binary (dyadic) operations: */
00220     VImageOpAdd,
00221     VImageOpAnd,
00222     VImageOpDist,
00223     VImageOpDiv,
00224     VImageOpMax,
00225     VImageOpMin,
00226     VImageOpMult,
00227     VImageOpOr,
00228     VImageOpSub,
00229     VImageOpXor
00230 } VImageOpKind;
00231 
00232 
00233 /*
00234  *  Declarations of library routines.
00235  */
00236 
00237 /* From Adjust.c: */
00238 
00239 extern VImage VAdjustImage (
00240 #if NeedFunctionPrototypes
00241     VImage              /* src */,
00242     VImage              /* dest */,
00243     VBand               /* band */,
00244     double              /* brightness */,
00245     double              /* contrast */
00246 #endif
00247 );
00248 
00249 /* From Canny.c: */
00250 
00251 extern VImage VCanny (
00252 #if NeedFunctionPrototypes
00253     VImage              /* src */,
00254     VImage              /* dest */,
00255     VBand               /* band */,
00256     double              /* sigma */,
00257     VImage *            /* orientation */,
00258     double *            /* noise */
00259 #endif
00260 );
00261 
00262 /* From Complex.c: */
00263 
00264 extern VImage VBuildComplexImage (
00265 #if NeedFunctionPrototypes
00266     VImage              /* r_src */,
00267     VBand               /* r_band */,
00268     VImage              /* i_src */,
00269     VBand               /* i_band */,
00270     VImage              /* dest */,
00271     VRepnKind           /* pixel_repn */
00272 #endif
00273 );
00274 
00275 extern VImage VImageMagnitude (
00276 #if NeedFunctionPrototypes
00277     VImage              /* src */,
00278     VImage              /* dest */,
00279     VBand               /* band */
00280 #endif
00281 );
00282 
00283 extern VImage VImagePhase (
00284 #if NeedFunctionPrototypes
00285     VImage              /* src */,
00286     VImage              /* dest */,
00287     VBand               /* band */
00288 #endif
00289 );
00290 
00291 /* From ConvertC.c: */
00292 
00293 extern VImage VConvertImageCopy (
00294 #if NeedFunctionPrototypes
00295     VImage              /* src */,
00296     VImage              /* dest */,
00297     VBand               /* band */,
00298     VRepnKind           /* pixel_repn */
00299 #endif
00300 );
00301 
00302 /* From ConvertL.c: */
00303 
00304 extern VImage VConvertImageLinear (
00305 #if NeedFunctionPrototypes
00306     VImage              /* src */,
00307     VImage              /* dest */,
00308     VBand               /* band */,
00309     VRepnKind           /* pixel_repn */,
00310     double              /* a */,
00311     double              /* b */
00312 #endif
00313 );
00314 
00315 /* From ConvertO.c: */
00316 
00317 extern VImage VConvertImageOpt (
00318 #if NeedFunctionPrototypes
00319     VImage              /* src */,
00320     VImage              /* dest */,
00321     VBand               /* band */,
00322     VRepnKind           /* pixel_repn */,
00323     int                 /* method */
00324 #endif
00325 );
00326 
00327 /* From ConvertR.c: */
00328 
00329 extern VImage VConvertImageRange (
00330 #if NeedFunctionPrototypes
00331     VImage              /* src */,
00332     VImage              /* dest */,
00333     VBand               /* band */,
00334     VRepnKind           /* pixel_repn */
00335 #endif
00336 );
00337 
00338 /* From Convolve.c: */
00339 
00340 extern VImage VConvolveImage (
00341 #if NeedFunctionPrototypes
00342     VImage              /* src */,
00343     VImage              /* dest */,
00344     VBand               /* band */,
00345     VImage              /* mask */,
00346     VConvolvePadMethod  /* pad_method */,
00347     int                 /* shift */
00348 #endif
00349 );
00350 
00351 /* From ConvolveSep.c: */
00352 
00353 extern VImage VConvolveImageSep (
00354 #if NeedFunctionPrototypes
00355     VImage              /* src */,
00356     VImage              /* dest */,
00357     VBand               /* band */,
00358     VImage [3]          /* masks */,
00359     VConvolvePadMethod [3] /* pad_methods */,
00360     int [3]             /* shifts */
00361 #endif
00362 );
00363 
00364 /* From Crop.c: */
00365 
00366 extern VImage VCropImage (
00367 #if NeedFunctionPrototypes
00368     VImage              /* src */,
00369     VImage              /* dest */,
00370     VBand               /* band */,
00371     int                 /* top */,
00372     int                 /* left */,
00373     int                 /* height */,
00374     int                 /* width */
00375 #endif
00376 );
00377 
00378 /* From Dither.c: */
00379 
00380 extern VBoolean VDither (
00381 #if NeedFunctionPrototypes
00382     VImage              /* src */,
00383     VImage              /* dest */,
00384     VBand               /* band */,
00385     int                 /* top */,
00386     int                 /* left */,
00387     int                 /* height */,
00388     int                 /* width */,
00389     int []              /* nvalues */,
00390     VBooleanPromoted    /* absolute */
00391 #endif
00392 );
00393 
00394 /* From Fft.c: */
00395 
00396 extern VImage VImageFFT (
00397 #if NeedFunctionPrototypes
00398     VImage              /* src */,
00399     VImage              /* dest */,
00400     VBooleanPromoted    /* inverse */,
00401     double              /* norm */
00402 #endif
00403 );
00404 
00405 /* In Fill.c: */
00406 
00407 extern VBoolean VFillImage (
00408 #if NeedFunctionPrototypes
00409     VImage              /* image */,
00410     VBand               /* band */,
00411     VDoublePromoted     /* value */
00412 #endif
00413 );
00414 
00415 /* From Flip.c: */
00416 
00417 extern VImage VFlipImage (
00418 #if NeedFunctionPrototypes
00419     VImage              /* src */,
00420     VImage              /* dest */,
00421     VBand               /* band */,
00422     VBooleanPromoted    /* vertical */
00423 #endif
00424 );
00425 
00426 /* From ForkImageDpy.c: */
00427 
00428 extern pid_t VForkImageDisplay (
00429 #if NeedFunctionPrototypes
00430     VImage              /* image */,
00431     VStringConst        /* program */,
00432     VStringConst        /* title */
00433 #endif
00434 );
00435 
00436 /* From GaussConv.c: */
00437 
00438 extern VImage VGaussianConvolveImage (
00439 #if NeedFunctionPrototypes
00440     VImage              /* src */,
00441     VImage              /* dest */,
00442     VBand               /* band */,
00443     double              /* sigma */,
00444     int                 /* filter_size */,
00445     VFilterKind         /* filter_kind */
00446 #endif
00447 );
00448 
00449 /* From Gradient.c: */
00450 
00451 extern VImage VImageGradient (
00452 #if NeedFunctionPrototypes
00453     VImage              /* src */,
00454     VImage              /* dest */,
00455     VBand               /* band */
00456 #endif
00457 );
00458 
00459 /* From GradientSeq.c: */
00460 
00461 extern VImage VImageGradientSeq (
00462 #if NeedFunctionPrototypes
00463     VImage              /* src */,
00464     VImage              /* dest */,
00465     VBand               /* band */,
00466     int                 /* kernel_size */,
00467     VDouble []          /* kernel */
00468 #endif
00469 );
00470 
00471 /* From Image.c: */
00472 
00473 extern VImage VCreateImage (
00474 #if NeedFunctionPrototypes
00475     int                 /* nbands */,
00476     int                 /* nrows */,
00477     int                 /* ncols */,
00478     VRepnKind           /* pixel_repn */
00479 #endif
00480 );
00481 
00482 extern VImage VCreateImageLike (
00483 #if NeedFunctionPrototypes
00484     VImage              /* src  */
00485 #endif
00486 );
00487 
00488 extern void VDestroyImage (
00489 #if NeedFunctionPrototypes
00490     VImage              /* image */
00491 #endif
00492 );
00493 
00494 extern VDouble VGetPixel (
00495 #if NeedFunctionPrototypes
00496     VImage              /* image */,
00497     int                 /* band */,
00498     int                 /* row */,
00499     int                 /* column */
00500 #endif
00501 );
00502 
00503 extern void VSetPixel (
00504 #if NeedFunctionPrototypes
00505     VImage              /* image */,
00506     int                 /* band */,
00507     int                 /* row */,
00508     int                 /* column */,
00509     VDoublePromoted     /* value */
00510 #endif
00511 );
00512 
00513 extern VImage VCopyImage (
00514 #if NeedFunctionPrototypes
00515     VImage              /* src */,
00516     VImage              /* dest */,
00517     VBand               /* band */
00518 #endif
00519 );
00520 
00521 extern VImage VCopyImageAttrs (
00522 #if NeedFunctionPrototypes
00523     VImage              /* src */,
00524     VImage              /* dest */
00525 #endif
00526 );
00527 
00528 extern VImage VCopyImagePixels (
00529 #if NeedFunctionPrototypes
00530     VImage              /* src */,
00531     VImage              /* dest */,
00532     VBand               /* band */
00533 #endif
00534 );
00535 
00536 extern VBoolean VCopyBand (
00537 #if NeedFunctionPrototypes
00538     VImage              /* src */,
00539     VBand               /* src_band */,
00540     VImage              /* dest */,
00541     VBand               /* dest_band */
00542 #endif
00543 );
00544 
00545 extern VImage VCombineBands (
00546 #if NeedFunctionPrototypes
00547     int                 /* nels */,
00548     VImage []           /* src_images */,
00549     VBand []            /* src_bands */,
00550     VImage              /* dest */
00551 #endif
00552 );
00553 
00554 extern VImage VCombineBandsVa (
00555 #if NeedVarargsPrototypes
00556     VImage              /* dest */,
00557     ...
00558 #endif
00559 );
00560 
00561 extern VImage VSelectDestImage (
00562 #if NeedFunctionPrototypes
00563     VStringConst        /* routine */,
00564     VImage              /* dest */,
00565     int                 /* nbands */,
00566     int                 /* nrows */,
00567     int                 /* ncolumns */,
00568     VRepnKind           /* pixel_repn */
00569 #endif
00570 );
00571 
00572 extern VBoolean VSelectBand (
00573 #if NeedFunctionPrototypes
00574     VStringConst        /* routine */,
00575     VImage              /* image */,
00576     VBand               /* band */,
00577     int *               /* npixels */,
00578     VPointer *          /* first_pixel */
00579 #endif
00580 );
00581 
00582 extern VBandInterp VImageFrameInterp (
00583 #if NeedFunctionPrototypes
00584     VImage              /* image */
00585 #endif
00586 );
00587 
00588 extern VBandInterp VImageViewpointInterp (
00589 #if NeedFunctionPrototypes
00590     VImage              /* image */
00591 #endif
00592 );
00593 
00594 extern VBandInterp VImageColorInterp (
00595 #if NeedFunctionPrototypes
00596     VImage              /* image */
00597 #endif
00598 );
00599 
00600 extern VBandInterp VImageComponentInterp (
00601 #if NeedFunctionPrototypes
00602     VImage              /* image */
00603 #endif
00604 );
00605 
00606 extern VBoolean VSetBandInterp (
00607 #if NeedFunctionPrototypes
00608     VImage              /* image */,
00609     VBandInterp         /* frame_interp */,
00610     int                 /* nframes */,
00611     VBandInterp         /* viewpoint_interp */,
00612     int                 /* nviewpoints */,
00613     VBandInterp         /* color_interp */,
00614     int                 /* ncolors */,
00615     VBandInterp         /* component_interp */,
00616     int                 /* ncomponents */
00617 #endif
00618 );
00619 
00620 extern int VReadImages (
00621 #if NeedFunctionPrototypes
00622     FILE *              /* file */,
00623     VAttrList *         /* attributes */,
00624     VImage **           /* images */
00625 #endif
00626 );
00627 
00628 extern VBoolean VWriteImages (
00629 #if NeedFunctionPrototypes
00630     FILE *              /* file */,
00631     VAttrList           /* attributes */,
00632     int                 /* nimages */,
00633     VImage []           /* images */
00634 #endif
00635 );
00636 
00637 /* From ImageDpy.c: */
00638 
00639 extern void VImageWindowSize (
00640 #if NeedFunctionPrototypes
00641     VImage              /* image */,
00642     int                 /* max_width */,
00643     int                 /* max_height */,
00644     int *               /* width */,
00645     int *               /* height */
00646 #endif
00647 );
00648 
00649 /* From ImageToPS.c: */
00650 
00651 extern VBoolean VImageBandToPS (
00652 #if NeedFunctionPrototypes
00653     FILE *              /* f */,
00654     VImage              /* image */,
00655     VBand               /* band */
00656 #endif
00657 );
00658 
00659 extern VBoolean VRGBImageToPS (
00660 #if NeedFunctionPrototypes
00661     FILE *              /* f */,
00662     VImage              /* image */,
00663     VBand               /* band */
00664 #endif
00665 );
00666 
00667 extern VBoolean VGradientImageToPS (
00668 #if NeedFunctionPrototypes
00669     FILE *              /* f */,
00670     VImage              /* image */,
00671     VBand               /* band */,
00672     double              /* arrow_width */
00673 #endif
00674 );
00675 
00676 /* From Invert.c: */
00677 
00678 extern VImage VInvertImage (
00679 #if NeedFunctionPrototypes
00680     VImage              /* src */,
00681     VImage              /* dest */,
00682     VBand               /* band */
00683 #endif
00684 );
00685 
00686 extern VImage VNegateImage (
00687 #if NeedFunctionPrototypes
00688     VImage              /* src */,
00689     VImage              /* dest */,
00690     VBand               /* band */
00691 #endif
00692 );
00693 
00694 /* From Kernel.c: */
00695 
00696 extern VBoolean VGaussianKernel (
00697 #if NeedFunctionPrototypes
00698     int                 /* ncoeffs */,
00699     VDouble []          /* coeffs */,
00700     double              /* sigma */
00701 #endif
00702 );
00703 
00704 extern VBoolean VGaussianD1Kernel (
00705 #if NeedFunctionPrototypes
00706     int                 /* ncoeffs */,
00707     VDouble []          /* coeffs */,
00708     double              /* sigma */
00709 #endif
00710 );
00711 
00712 extern VBoolean VGaussianSplineKernel (
00713 #if NeedFunctionPrototypes
00714     int                 /* ncoeffs */,
00715     VDouble []          /* coeffs */,
00716     double              /* sigma */
00717 #endif
00718 );
00719 
00720 /* From Op.c: */
00721 
00722 extern VImage VImageOpI (
00723 #if NeedFunctionPrototypes
00724     VImage              /* src1 */,
00725     VImage              /* dest */,
00726     VBand               /* band1 */,
00727     VImageOpKind        /* op */,
00728     VImage              /* src2 */,
00729     VBand               /* band2 */,
00730     VDouble *           /* minptr */,
00731     VDouble *           /* maxptr */
00732 #endif
00733 );
00734 
00735 extern VImage VImageOpU (
00736 #if NeedFunctionPrototypes
00737     VImage              /* src1 */,
00738     VImage              /* dest */,
00739     VBand               /* band1 */,
00740     VImageOpKind        /* op */,
00741     VDouble *           /* minptr */,
00742     VDouble *           /* maxptr */
00743 #endif
00744 );
00745 
00746 extern VImage VImageOpV (
00747 #if NeedFunctionPrototypes
00748     VImage              /* src1 */,
00749     VImage              /* dest */,
00750     VBand               /* band1 */,
00751     VImageOpKind        /* op */,
00752     double              /* value */,
00753     VDouble *           /* minptr */,
00754     VDouble *           /* maxptr */
00755 #endif
00756 );
00757 
00758 /* From OptFlowWLS.c: */
00759 
00760 VImage VOptFlowWLS (
00761 #if NeedFunctionPrototypes
00762     VImage              /* src */,
00763     VImage              /* dest */,
00764     int                 /* method */,
00765     double              /* smoothing */,
00766     double              /* threshold */,
00767     double [2]          /* noise */,
00768     double              /* prior_variance */
00769 #endif
00770 );
00771 
00772 /* From ReadPlain.c: */
00773 
00774 VImage VReadPlain (
00775 #if NeedFunctionPrototypes
00776     FILE *              /* plain format file */
00777 #endif
00778 );
00779 
00780 /* From ReadPnm.c: */
00781 
00782 VImage VReadPnm (
00783 #if NeedFunctionPrototypes
00784     FILE *              /* pnm file */
00785 #endif
00786 );
00787 
00788 /* From RGBToGray.c: */
00789 
00790 extern VImage VRGBImageToGray (
00791 #if NeedFunctionPrototypes
00792     VImage              /* src */,
00793     VImage              /* dest */,
00794     VBand               /* band */
00795 #endif
00796 );
00797 
00798 /* From Rotate.c: */
00799 
00800 extern VImage VRotateImage (
00801 #if NeedFunctionPrototypes
00802     VImage              /* src */,
00803     VImage              /* dest */,
00804     VBand               /* band */,
00805     double              /* angle */
00806 #endif
00807 );
00808 
00809 /* From Sample.c: */
00810 
00811 extern VImage VSampleImage (
00812 #if NeedFunctionPrototypes
00813     VImage              /* src */,
00814     VImage              /* dest */,
00815     VBand               /* band */,
00816     int                 /* row reduction factor */,
00817     int                 /* column reduction factor */
00818 #endif
00819 );
00820 
00821 /* From Scale.c: */
00822 
00823 VImage VScaleImage (
00824 #if NeedFunctionPrototypes
00825     VImage              /* src */,
00826     VImage              /* dest */,
00827     VBand               /* band */,
00828     double              /* row scaling factor */,
00829     double              /* column scaling factor */
00830 #endif
00831 );
00832 
00833 VImage VReduceImage (
00834 #if NeedFunctionPrototypes
00835     VImage              /* src */,
00836     VImage              /* dest */,
00837     VBand               /* band */,
00838     int                 /* row reduction factor */,
00839     int                 /* column reduction factor */
00840 #endif
00841 );
00842 
00843 VImage VExpandImage (
00844 #if NeedFunctionPrototypes
00845     VImage              /* src */,
00846     VImage              /* dest */,
00847     VBand               /* band */,
00848     int                 /* row expansion factor */,
00849     int                 /* column expansion factor */
00850 #endif
00851 );
00852 
00853 /* From Shear.c: */
00854 
00855 extern VImage VShearImageX (
00856 #if NeedFunctionPrototypes
00857     VImage              /* src */,
00858     VImage              /* dest */,
00859     VBand               /* band */,
00860     double              /* shear */
00861 #endif
00862 );
00863 
00864 extern VImage VShearImageY (
00865 #if NeedFunctionPrototypes
00866     VImage              /* src */,
00867     VImage              /* dest */,
00868     VBand               /* band */,
00869     double              /* shear */
00870 #endif
00871 );
00872 
00873 /* From Stats.c: */
00874 
00875 extern VBoolean VImageStats (
00876 #if NeedFunctionPrototypes
00877     VImage              /* src */,
00878     VBand               /* band */,
00879     VDouble *           /* pmin */,
00880     VDouble *           /* pmax */,
00881     VDouble *           /* pmean */,
00882     VDouble *           /* pvar */
00883 #endif
00884 );
00885 
00886 /* From Synth.c: */
00887 
00888 /* Later in this file: */
00889 VBoolean VRampImage (
00890 #if NeedFunctionPrototypes
00891     VImage              /* image */,
00892     VBand               /* band */,
00893     double [2]          /* origin */,
00894     double              /* orientation */,
00895     double              /* base */,
00896     double              /* slope */
00897 #endif
00898 );
00899 
00900 VBoolean VSineGratingImage (
00901 #if NeedFunctionPrototypes
00902     VImage              /* image */,
00903     VBand               /* band */,
00904     double [2]          /* origin */,
00905     double              /* amplitude */,
00906     double              /* base */,
00907     double              /* frequency */,
00908     double              /* orientation */,
00909     double              /* phase */
00910 #endif
00911 );
00912 
00913 VBoolean VZonePlateImage (
00914 #if NeedFunctionPrototypes
00915     VImage              /* image */,
00916     VBand               /* band */,
00917     double [2]          /* origin */,
00918     double              /* amplitude */,
00919     double              /* base */,
00920     double              /* frequency */,
00921     double              /* phase */
00922 #endif
00923 );
00924 
00925 VBoolean VBinomialNoiseImage (
00926 #if NeedFunctionPrototypes
00927     VImage              /* image */,
00928     VBand               /* band */,
00929     VDoublePromoted     /* v0 */,
00930     VDoublePromoted     /* v1 */,
00931     double              /* p */
00932 #endif
00933 );
00934 
00935 VBoolean VNormalNoiseImage (
00936 #if NeedFunctionPrototypes
00937     VImage              /* image */,
00938     VBand               /* band */,
00939     double              /* mean */,
00940     double              /* std_dev */
00941 #endif
00942 );
00943 
00944 VBoolean VUniformNoiseImage (
00945 #if NeedFunctionPrototypes
00946     VImage              /* image */,
00947     VBand               /* band */,
00948     VDoublePromoted     /* min_value */,
00949     VDoublePromoted     /* max_value */
00950 #endif
00951 );
00952 
00953 /* From Transpose.c: */
00954 
00955 extern VImage VTransposeImage (
00956 #if NeedFunctionPrototypes
00957     VImage              /* src */,
00958     VImage              /* dest */,
00959     VBand               /* band */
00960 #endif
00961 );
00962 
00963 /* From UbcIff.c: */
00964 
00965 extern VImage VReadUbcIff (
00966 #if NeedFunctionPrototypes
00967     FILE *              /* f */
00968 #endif
00969 );
00970 
00971 extern VBoolean VWriteUbcIff (
00972 #if NeedFunctionPrototypes
00973     FILE *              /* f */,
00974     VImage              /* image */,
00975     VBand               /* band */
00976 #endif
00977 );
00978 
00979 /* From ZeroC.c: */
00980 
00981 extern VImage VZeroCrossings (
00982 #if NeedFunctionPrototypes
00983     VImage              /* src */,
00984     VImage              /* dest */,
00985     VBand               /* band */
00986 #endif
00987 );
00988 
00989 #ifdef __cplusplus
00990 }
00991 #endif
00992 
00993 #endif /* V_VImage_h */