Opening

Include <mln/morpho/structural/opening.hpp>

Image{I}
image_concrete_t<I> opening(I image, StructuringElement se)
Image{I}
image_concrete_t<I> opening(I image, StructuringElement se, BorderManager bm)
void opening(Image image, StructuringElement se, OutputImage out)
void opening(Image image, StructuringElement se, BorderManager bm, OutputImage out)

Opening by a structuring element.

Given a structuring element 𝐵, the opening \(\gamma(f)\) of the input image 𝑓 is defined as:

\[\gamma(f) = \delta_\mathcal{B}(\varepsilon_\mathcal{B}(f))\]
  • An optional border management may be used to manage border side-effects. Only fill and user are currently supported.

  • If the optional output image is provided, it must be wide enough to store the result (the function does not perform any resizing).

param ima:

Input image 𝑓

param se:

Structuring element 𝐵

param bm (optional):

Border management policy

param output (optional):

Output image

return:
  • (1,2) An image whose type is deduced from the input image

  • (3,4) Nothing (the output image is passed as an argument)

exception:

N/A

Notes

Complexity

Example 1 : Opening by a square on a gray-level image

#include <mln/morpho/opening.hpp>
#include <mln/core/se/rect2d.hpp>

// Define a square SE of size 21x21
auto input = ...;
auto rect = mln::se::rect2d(21,21);
auto output = mln::morpho::opening(input, rect);
../_images/lena_gray.jpg ../_images/morpho_opening_1.png