NAME

     convolve_filter - convolves an image with a filter kernel.

SYNOPSIS

      #include "CVIPtools.h"
      #include "CVIPimage.h"
      #include "CVIPdef.h"
      #include "CVIPfs.h"
      #include "CVIPmatrix.h"

      Image *convolve_filter(Image *imageP, Matrix *filP)

      <imageP> - pointer to an Image
      <filP> - pointer to a Matrix containing the kernel
               to be convolved with <imageP>

PATH

      $CVIPHOME/SPATIALFILTER/spatial_tools.c

DESCRIPTION

     The convolve function performs a spatial convolution  of  an
     input image with an input matrix. The input image must be of
     type CVIP_BYTE or CVIP_SHORT.  The filter matrix must be  of
     type  CVIP_FLOAT.  The  output  image  returned  is  of type
     CVIP_SHORT.

     This function assumes mirror (DCT) symmetry  on  edges,  but
     does NOT flip the convolution mask before use.

     A related function, get_default_filter, can be used to  pro-
     vide the kernel <filP>.

TYPES AND CONSTANTS

     None

RETURN VALUES

     Returns pointer to output image.

EXAMPLE

      #include <CVIPtoolkit.h>
      #include <CVIPimage.h>
      #include <CVIPdef.h>
      #include <CVIPspfltr.h>
      #include <CVIPmatrix.h>
      #include <CVIPconvert.h>
      #include <CVIPview.h>
      #define VIEWER "picture"
      #define VIDEO_APP "SunVideo &"

      void main()
      {
      Image *cvipImage,*cvipImage1;
      IMAGE_FORMAT format;
      char *inputfile,*outputfile;
      Matrix *mat;
      int i,j;
      unsigned int row=3;
      unsigned int col=3;

      setDisplay_Image(VIEWER, "Default")
      print_CVIP("\n\t\tEnter the  Input File Name:  ");
      inputfile =(char *) getString_CVIP();
      format = getFormat_CVIP(inputfile);
      cvipImage = read_Image(inputfile,1);
      view_Image(cvipImage, inputfile);
      free(inputfile);
      mat=new_Matrix(row,col,CVIP_FLOAT,REAL);
      if(mat==NULL)
             printf("NULL");
      /*Provides the filter kernel*/
      for(i=0;i<3;i++)
       for(j=0;j<3;j++)
             ((float **)(mat->rptr))[i][j]=0.5;
      /*The following call convolves the image with the
      lowpass filter kernel got by the get_default_filter */
      cvipImage1 = (Image *)convolve_filter(cvipImage,mat);
      print_CVIP("\n\t\tEnter the Output File Name:  ");
      outputfile = getString_CVIP();
      view_Image(cvipImage1,outputfile);
      write_Image(cvipImage1,outputfile,CVIP_NO,CVIP_NO,format,1);
      free(outputfile);
      }

BUGS

     None at this time

SEE ALSO

     new_Matrix

AUTHOR

     Copyright (C) 1996 SIUE - by Scott Umbaugh, Greg Hance,  and
     Kun Luo.