Man Linux: Main Page and Category List

NAME

       im_cmulnorm, im_multiply - multiply two images

SYNOPSIS

       #include <vips/vips.h>

       int im_cmulnorm(in1, in2, out)
       IMAGE *in1, *in2, *out;

       int im_multiply(in1, in2, out)
       IMAGE *in1, *in2, *out;

DESCRIPTION

       These functions operate on two images held by image descriptors in1 and
       in2 and write the result to the image descriptor out.  Input images in1
       and  in2 should have the same channels and the same sizes; however they
       can be of different types.  Only the history of  the  image  descriptor
       pointed by in1 is copied to out.

       im_multiply(3)  applied to two integer images multiplies the two images
       and writes the output as:

        in1    | uchar   char   ushort  short  uint  int
        -------+-----------------------------------------
        in2    |
        uchar  | ushort  short  ushort  short  uint  int
        char   | short   short  short   short  int   int
        ushort | ushort  short  ushort  short  uint  int
        short  | short   short  short   short  int   int
        uint   | uint    int    uint    int    uint  int
        int    | int     int    int     int    int   int

       If one or more of the images is a floating point type,  the  output  is
       FMTFLOAT,  unless one or more of the inputs is FMTDOUBLE, in which case
       the output is also FMTDOUBLE.

       If one or more  of  the  images  is  a  complex  type,  the  output  is
       FMTCOMPLEX,  unless one or more of the inputs is FMTDPCOMPLEX, in which
       case the output is also FMTDPCOMPLEX.

       For complex input pels (x1,y1) and (x2,y2), im_multiply() writes (x1*x2
       - y1*y2, x1*y2 + x2*y1).

       im_cmulnorm(3)  multiplies  two  complex  images. The complex output is
       normalised to 1 by dividing both the real and  the  imaginary  part  of
       each  pel  with  the  norm;  for instance if the complex multiplication
       produces (a,b) then the output written by  this  function  is  (a/norm,
       b/norm),  where  norm=a*a+b*b.   Result  is  checked  for  norm=0.  The
       function is useful  for  phase  correlation.   Both  inputs  should  be
       complex.

       Result is float complex if both inputs are float complex.  In any other
       case the result is double complex.

BUGS

       None of the functions checks the result for over/underflow.

RETURN VALUE

       All functions return 0 on success and -1 on error.

SEE ALSO

       im_subtract(3), im_lintra(3), im_add(3).

AUTHOR

       N. Dessipris - 22/04/1991
       J. Cupitt (im_multiply) - 22/04/1991

                                 24 April 1991