morphology function

Morphology

Morphology

Apply a morphology method. This is a very flexible function which can be used to apply any morphology method with custom parameters. See imagemagick website

for examples.

image_morphology( image, method = "convolve", kernel = "Gaussian", iterations = 1, opts = list() ) image_convolve( image, kernel = "Gaussian", iterations = 1, scaling = NULL, bias = NULL )

Arguments

  • image: magick image object returned by image_read() or image_graph()

  • method: a string with a valid method from morphology_types()

  • kernel: either a square matrix or a string. The string can either be a parameterized kerneltype such as: "DoG:0,0,2" or "Diamond"

    or it can contain a custom matrix (see examples)

  • iterations: number of iterations

  • opts: a named list or character vector with custom attributes

  • scaling: string with kernel scaling. The special flag "!" automatically scales to full dynamic range, for example: "50%!"

  • bias: output bias string, for example "50%"

Examples

#example from IM website: if(magick_config()$version > "6.8.8"){ pixel <- image_blank(1, 1, 'white') |> image_border('black', '5x5') # See the effect of Dilate method pixel |> image_scale('800%') pixel |> image_morphology('Dilate', "Diamond") |> image_scale('800%') # These produce the same output: pixel |> image_morphology('Dilate', "Diamond", iter = 3) |> image_scale('800%') pixel |> image_morphology('Dilate', "Diamond:3") |> image_scale('800%') # Plus example pixel |> image_morphology('Dilate', "Plus", iterations = 2) |> image_scale('800%') # Rose examples rose |> image_morphology('ErodeI', 'Octagon', iter = 3) rose |> image_morphology('DilateI', 'Octagon', iter = 3) rose |> image_morphology('OpenI', 'Octagon', iter = 3) rose |> image_morphology('CloseI', 'Octagon', iter = 3) # Edge detection man <- demo_image('man.gif') man |> image_morphology('EdgeIn', 'Octagon') man |> image_morphology('EdgeOut', 'Octagon') man |> image_morphology('Edge', 'Octagon') # Octagonal Convex Hull man |> image_morphology('Close', 'Diamond') |> image_morphology('Thicken', 'ConvexHull', iterations = 1) # Thinning down to a Skeleton man |> image_morphology('Thinning', 'Skeleton', iterations = 1) # Specify custom kernel matrix usingn a string: img <- demo_image("test_mag.gif") i <- image_convolve(img, kernel = '4x5: 0 -1 0 0 -1 +1 -1 0 -1 +1 -1 0 -1 +1 +1 -1 0 -1 -1 0 ', bias = "50%") }

See Also

Other image: _index_, analysis, animation, attributes(), color, composite, defines, device, edges, editing, effects(), fx, geometry, ocr, options(), painting, segmentation, transform(), video

  • Maintainer: Jeroen Ooms
  • License: MIT + file LICENSE
  • Last published: 2025-03-23