### Method

# Vips Image convasep

#### Declaration [src]

    int
    vips_convasep (
      VipsImage* in,
      VipsImage** out,
      VipsImage* mask,
      ...
    )

#### Description [src]

Approximate separable integer convolution. This is a low-level operation, see `vips_convsep()` for something more convenient.

The image is convolved twice: once with `mask` and then again with `mask` rotated by 90 degrees. `mask` must be 1xn or nx1 elements. Elements of `mask` are converted to integers before convolution.

Larger values for `layers` give more accurate results, but are slower. As `layers` approaches the mask radius, the accuracy will become close to exact convolution and the speed will drop to match. For many large masks, such as Gaussian, `layers` need be only 10% of this value and accuracy will still be good.

The output image always has the same `VipsBandFormat` as the input image.

Optional arguments

- `layers`: `gint`, number of layers for approximation

See also

`vips_convsep()`.

This method is not directly available to language bindings.

#### Parameters

`out`

  Type: `VipsImage`

  Output image.

  The argument will be set by the function.
  The caller of the method takes ownership of the returned data, and is responsible for freeing it.

`mask`

  Type: `VipsImage`

  Convolve with this mask.

  The data is owned by the caller of the method.

`...`

  Type: ``

  `NULL`-terminated list of optional named arguments.

#### Return value

Type: `int`

0 on success, -1 on error.