| .TH IM_STDIF 3 "10 May 1991" |
| .SH NAME |
| im_stdif, im_stdif_raw \- statistical differentiation of an image |
| .SH SYNOPSIS |
| .B #include <vips/vips.h> |
| |
| int im_stdif(in, out, a, m0, b, s0, xw, yw) |
| .br |
| IMAGE *in, *out; |
| .br |
| double a, m0, b, s0; |
| .br |
| int xw, yw; |
| |
| int im_stdif_raw(in, out, a, m0, b, s0, xw, yw) |
| .br |
| IMAGE *in, *out; |
| .br |
| double a, m0, b, s0; |
| .br |
| int xw, yw; |
| |
| .SH DESCRIPTION |
| im_stdif() preforms statistical differencing according to the formula |
| given in page 45 of the book "An Introduction to Digital Image Processing" by |
| Wayne Niblack. This transformation emphasises the way in which a pel differs |
| statistically from its neighbours. It is useful for enhancing low-contrast |
| images with lots of detail, such as X-ray plates. |
| |
| At point (i,j) the output is given by the eqn: |
| |
| vout(i,j) = a*m0 + (1-a)*meanv + |
| (vin(i,j) - meanv) * (b*s0) / (s0+b*stdv) |
| |
| Values a, m0, b and s0 are entered, while meanv and stdv are the values |
| calculated over a moving window of size xw, yw centred on pixel (i,j). m0 is the |
| new mean, a is the weight given to it. s0 is the new standard deviation, b is |
| the weight given to it. Try: |
| |
| im_stdif $VIPSHOME/pics/huysum.v fred.v 0.5 128 0.5 50 11 11 |
| |
| The opreation works on one-band UCHAR images only, and writes a one-band UCHAR |
| image as its result. The output image has the same size as the input - a black |
| border is added to mark uncomputable pixels. |
| |
| im_stdif_raw() behaves exactly as im_stdif(), but does not add the border of |
| black pixels. |
| |
| .SH RETURN VALUE |
| All functions returns 0 on success and -1 on error. |
| .SH SEE ALSO |
| im_lhisteq(3), im_histgr(3), im_hsp(3), im_heq(3). |
| .SH COPYRIGHT |
| 1991-1996, The National Gallery and Birkbeck College |