Learn R Programming

EBImage (version 4.14.2)

stackObjects: Places detected objects into an image stack

Description

Places detected objects into an image stack.

Usage

stackObjects(x, ref, combine=TRUE, bg.col='black', ext)

Arguments

x
An Image object or an array containing object masks. Object masks are sets of pixels with the same unique integer value.
ref
An Image object or an array, containing the intensity values of the objects.
combine
If x contains multiple images, specifies if the resulting list of image stacks with individual objects should be combined using combine into a single image stack.
bg.col
Background pixel color.
ext
A numeric controlling the size of the output image. If missing, ext is estimated from data. See details.

Value

An Image object containing the stacked objects contained in x. If x contains multiple images and if combine is TRUE, stackObjects returns a list of Image objects.

Details

stackObjects creates a set of n images of size (2*ext+1, 2*ext+1), where n is the number of objects in x, and places each object of x in this set. If not specified, ext is estimated using the 98% quantile of m.majoraxis/2, where m.majoraxis is the semi-major axis descriptor extracted from computeFeatures.moment, taken over all the objects of the image x.

See Also

combine, tile, computeFeatures.moment

Examples

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

  ## load images
  nuc = readImage(system.file('images', 'nuclei.tif', package='EBImage'))
  cel = readImage(system.file('images', 'cells.tif', package='EBImage'))
  img = rgbImage(green=cel, blue=nuc)
  display(img, title='Cells')

  ## segment nuclei
  nmask = thresh(nuc, 10, 10, 0.05)
  nmask = opening(nmask, makeBrush(5, shape='disc'))
  nmask = fillHull(bwlabel(nmask))

  ## segment cells, using propagate and nuclei as 'seeds'
  ctmask = opening(cel>0.1, makeBrush(5, shape='disc'))
  cmask = propagate(cel, nmask, ctmask)

  ## using paintObjects to highlight objects
  res = paintObjects(cmask, img, col='#ff00ff')
  res = paintObjects(nmask, res, col='#ffff00')
  display(res, title='Segmented cells')

  ## stacked cells
  st = stackObjects(cmask, img)
  display(st, title='Stacked objects')

Run the code above in your browser using DataLab