103 lines
3.3 KiB
Groff
103 lines
3.3 KiB
Groff
|
.TH ADDITION 3 "24 April 1991"
|
||
|
.SH NAME
|
||
|
im_add, im_gadd, im_gaddim, im_gfadd \- add two images
|
||
|
.SH SYNOPSIS
|
||
|
#include <vips/vips.h>
|
||
|
|
||
|
int im_add(in1, in2, out)
|
||
|
.br
|
||
|
IMAGE *in1, *in2, *out;
|
||
|
|
||
|
int im_gadd(a, in1, b, in2, c, out)
|
||
|
.br
|
||
|
double a, b, c;
|
||
|
.br
|
||
|
IMAGE *in1, *in2, *out;
|
||
|
|
||
|
int im_gaddim(a, in1, b, in2, c, out)
|
||
|
.br
|
||
|
double a, b, c;
|
||
|
.br
|
||
|
IMAGE *in1, *in2, *out;
|
||
|
|
||
|
int im_gfadd(a, in1, b, in2, c, out)
|
||
|
.br
|
||
|
double a, b, c;
|
||
|
.br
|
||
|
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 size; however they can be of
|
||
|
different types. Only the history of the image descriptor pointed by in1 is
|
||
|
copied to out.
|
||
|
|
||
|
.B im_add(3)
|
||
|
|
||
|
For two integer images, add the two images and write 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.
|
||
|
|
||
|
.B im_gadd(3)
|
||
|
performs generalised addition of two images by calling
|
||
|
.B im_gaddim(3)
|
||
|
and
|
||
|
.B im_gfadd(3).
|
||
|
These are very old and tired things, and should not be used.
|
||
|
|
||
|
Input should be non complex. Output depends on input according to function
|
||
|
called. The result at each point is: a * pel1 + b * pel2 + c, properly
|
||
|
rounded if necessary. Pel1 and pel2 are the
|
||
|
corresponding pixels from in1 and in2 respectively.
|
||
|
|
||
|
im_gaddim() performs generalised addition of in1 and in2, on the condition
|
||
|
they are neither float nor double nor complex. The format of the resultant
|
||
|
image is given by the table:
|
||
|
|
||
|
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
|
||
|
|
||
|
The result at each point is: a * pel1 + b * pel2 + c, properly rounded. Pel1
|
||
|
and pel2 are the corresponding pixels from in1 and in2 respectively.
|
||
|
|
||
|
.B im_gfadd(3)
|
||
|
adds the non-complex images pointed by in1 and in2. Result is
|
||
|
float except if one (or both) inputs is double. In the latter case the result
|
||
|
is double. The result at each point is: a * pel1 + b * pel2 + c. Pel1 and
|
||
|
pel2 are the corresponding pixels from in1 and in2 respectively.
|
||
|
|
||
|
.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_multiply(3).
|
||
|
.SH AUTHOR
|
||
|
N. Dessipris \- 22/04/1991
|
||
|
.br
|
||
|
J. Cupitt, im_add(), \- 21/7/93
|