EBImage (version 4.14.2)

bwlabel: Binary segmentation

Description

Labels connected (connected sets) objects in a binary image.

Usage

bwlabel(x)

Arguments

x
An Image object or an array. x is considered as a binary image, whose pixels of value 0 are considered as background ones and other pixels as foreground ones.

Value

A Grayscale Image object or an array, containing the labelled version of x.

Details

All pixels for each connected set of foreground (non-zero) pixels in x are set to an unique increasing integer, starting from 1. Hence, max(x) gives the number of connected objects in x.

See Also

computeFeatures, propagate, watershed, paintObjects, colorLabels

Examples

Run this code
  ## simple example
  x = readImage(system.file('images', 'shapes.png', package='EBImage'))
  x = x[110:512,1:130]
  display(x, title='Binary')
  y = bwlabel(x)
  display(normalize(y), title='Segmented')

  ## read nuclei images
  x = readImage(system.file('images', 'nuclei.tif', package='EBImage'))
  display(x)

  ## computes binary mask
  y = thresh(x, 10, 10, 0.05)
  y = opening(y, makeBrush(5, shape='disc'))
  display(y, title='Cell nuclei binary mask')

  ## bwlabel
  z = bwlabel(y)
  display(normalize(z), title='Cell nuclei')
  nbnuclei = apply(z, 3, max)
  cat('Number of nuclei=', paste(nbnuclei, collapse=','),'\n')

  ## recolor nuclei in colors
  cols = c('black', sample(rainbow(max(z))))
  zrainbow = Image(cols[1+z], dim=dim(z))
  display(zrainbow, title='Cell nuclei (recolored)')

Run the code above in your browser using DataLab