erode

Perform morphological $(LINK3 https://en.wikipedia.org/wiki/Erosion_(morphology),erosion).

Use given kernel matrix to estimate image erosion for given image slice. Given slice is considered to be binarized with threshold method.

For given input slice:

1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1

... And erosion kernel of:

1 1 1
1 1 1
1 1 1

... Resulting slice is:

0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 0 0 0 1 1 1 1 0
0 1 1 1 1 0 0 0 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0

Note: Erosion works only for 2D binary images.

Slice!(kind, [2], T*)
erode
(
alias BoundaryConditionTest = neumann
T
SliceKind kind
)
(
Slice!(kind, [2], T*) slice
,
Slice!(kind, [2], T*) kernel = radialKernel!T(3)
,
Slice!(kind, [2], T*) prealloc = emptySlice!([2], T)
,
TaskPool pool = taskPool
)
if (
isBoundaryCondition!BoundaryConditionTest
)

Parameters

slice Slice!(kind, [2], T*)

Input image slice, to be eroded.

kernel Slice!(kind, [2], T*)

Erosion kernel. Default value is radialKernel!T(3).

prealloc Slice!(kind, [2], T*)

Optional pre-allocated buffer to hold result.

pool TaskPool

Optional TaskPool instance used to parallelize computation.

Return Value

Type: Slice!(kind, [2], T*)

Eroded image slice, of same type as input image.

Meta