| .TH IM_MULTIPLY 3 "24 April 1991" |
| .SH NAME |
| im_cmulnorm, im_multiply \- multiply two images |
| .SH SYNOPSIS |
| .B #include <vips/vips.h> |
| |
| .B int im_cmulnorm(in1, in2, out) |
| .br |
| .B IMAGE *in1, *in2, *out; |
| |
| .B int im_multiply(in1, in2, out) |
| .br |
| .B IMAGE *in1, *in2, *out; |
| |
| .SH 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. |
| |
| .B 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). |
| |
| .B 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. |
| |
| .SH BUGS |
| None of the functions checks the result for over/underflow. |
| .SH RETURN VALUE |
| All functions return 0 on success and -1 on error. |
| .SH SEE ALSO |
| im_subtract(3), im_lintra(3), im_add(3). |
| .SH AUTHOR |
| N. Dessipris \- 22/04/1991 |
| .br |
| J. Cupitt (im_multiply) \- 22/04/1991 |