# `Monty.Frameworks.Models.Salience.Strategies.Vocus2.SafeOperatingLimits`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/frameworks/models/salience/strategies/vocus2/safe_operating_limits.ex#L1)

The sigmas VOCUS2 was actually tried with, as fractions of the image.

Mirrors
`tbp/monty/frameworks/models/salience/strategies/vocus2/vocus2.py::SafeOperatingLimits`.

A sigma is a distance in pixels, so what is a broad blur on a 64-pixel image
is a tight one on a 128-pixel image. The limits are therefore fractions of the
image's smallest dimension — `max_fractional_center_sigma: 0.1` on a 64-pixel
image means a centre sigma of at most 6.4 — rather than absolute numbers that
would only suit one resolution.

Three rejections, in Monty's order: the surround must be meaningfully wider
than the centre, the centre must sit inside its range, and the surround inside
its own. Outside these limits VOCUS2 may work, may work differently, or may
not work; the point of the check is that nobody finds out by accident.

# `t`

```elixir
@type t() :: %Monty.Frameworks.Models.Salience.Strategies.Vocus2.SafeOperatingLimits{
  max_fractional_center_sigma: float(),
  max_fractional_surround_sigma: float(),
  min_fractional_sigma_separation: float(),
  min_image_dim_size: pos_integer()
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
