Method

VipsImagestdif

Declaration [src]

int
vips_stdif (
  VipsImage* in,
  VipsImage** out,
  int width,
  int height,
  ...
)

Description [src]

Optional arguments:

  • a: weight of new mean
  • m0: target mean
  • b: weight of new deviation
  • s0: target deviation

vips_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 equation:

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 width, height 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:

vips stdif $VIPSHOME/pics/huysum.v fred.v 0.5 128 0.5 50 11 11

The operation 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.

See also: vips_hist_local().

This method is not directly available to language bindings.

Parameters

out VipsImage
 

Output image.

 The argument will be set by the function.
 The instance takes ownership of the data, and is responsible for freeing it.
width int
 

Width of region.

height int
 

Height of region.

...
 

NULL-terminated list of optional named arguments.

Return value

Returns: int
 

0 on success, -1 on error.