iris-cv 0.0.0

A fast computer vision library framework in Rust.
Documentation
---
title: "Image Filters & Blur"
description: "Apply box blur, Gaussian blur, median filter, bilateral filter, separable 2D filters, distance transform, and more in Rust with Iris."
keywords: ["image filters", "blur", "gaussian blur", "median filter", "bilateral filter", "box blur", "smoothing"]
---

# Image Filters & Blur


Image filtering is essential for noise reduction, smoothing, and feature enhancement. Iris implements standard spatial filters using parallelized row-by-row CPU iterations (powered by `rayon` under the `parallel` feature flag) or accelerated GPU tensor calculations.

## Available Blur Filters


### Box Blur


Smooths an image using a normalized box filter of the given kernel size.

```rust
// Applies a 5x5 box filter
let blurred = image.box_blur(5)?;
```

### Gaussian Blur


Smooths an image using a Gaussian kernel. You must specify the kernel size (must be odd) and standard deviation `sigma`.

```rust
// Applies a 5x5 Gaussian blur with sigma = 1.5
let gaussian = image.gaussian_blur(5, 1.5)?;
```

### Median Blur


Reduces salt-and-pepper noise by taking the median value in each local neighborhood.

```rust
// Applies a 5x5 median filter
let median = image.median_blur(5)?;
```

### Bilateral Filter


Smooths the image while preserving sharp edges. It uses a range sigma for color similarity and space sigma for coordinate closeness.

```rust
// Applies a bilateral filter with d=5, sigma_color=0.1, sigma_space=10.0
let filtered = image.bilateral_filter(5, 0.1, 10.0)?;
```

### Separable 2D Filter


Applies two 1D kernels sequentially along the X and Y dimensions to achieve efficient custom 2D filtering.

```rust
let kernel_x = vec![0.25, 0.5, 0.25];
let kernel_y = vec![0.25, 0.5, 0.25];
let filtered = image.sep_filter_2d(&kernel_x, &kernel_y)?;
```

## Utility Filters


### Filter2D


Applies a general 2D convolution kernel to the image.

```rust
let kernel: &[&[f32]] = &[
    &[0.0, -1.0, 0.0],
    &[-1.0, 5.0, -1.0],
    &[0.0, -1.0, 0.0],
];
let sharpened = image.filter2d(kernel, None, 0.0)?;
```

### Add Weighted


Blends two images: `result = alpha * src1 + beta * src2 + gamma`.

```rust
let blended = img1.add_weighted(&img2, 0.7, 0.3, 0.0)?;
```

### Convert Scale Abs


Converts the image with per-pixel scale and shift, then takes absolute values.

```rust
let abs_img = image.convert_scale_abs(1.0, 0.0)?;
```

### Distance Transform


Computes the distance transform of a binary image, where each pixel value is its distance to the nearest zero pixel.

```rust
let dist = image.distance_transform()?;
```