Object removal and re-indexation

Description

The rmObjects functions deletes objects from an image by setting their pixel intensity values to 0. reenumerate re-enumerates all objects in an image from 0 (background) to the actual number of objects.

Usage

1
2
3

Arguments

x

An Image object in Grayscale color mode or an array containing object masks. Object masks are sets of pixels with the same unique integer value.

index

A numeric vector (or a list of vectors if x contains multiple frames) containing the indexes of objects to remove in the frame.

reenumerate

Logical, should all the objects in the image be re-indexed afterwards (default).

Value

An Image object or an array, containing the new objects.

Author(s)

Oleg Sklyar, osklyar@ebi.ac.uk, 2006-2007

See Also

bwlabel, watershed

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  ## make objects
  x = readImage(system.file('images', 'shapes.png', package='EBImage'))
  x = x[110:512,1:130]
  y = bwlabel(x)
  
  ## number of objects found
  max(y)
  
  display(normalize(y), title='Objects')
  
  ## remove every second letter
  objects = list(
    seq.int(from = 2, to = max(y), by = 2),
    seq.int(from = 1, to = max(y), by = 2)
    )
  z = rmObjects(combine(y, y), objects)
  
  display(normalize(z), title='Object removal')
  
  ## the number of objects left in each image
  apply(z, 3, max)
  
  ## perform object removal without re-enumerating
  z = rmObjects(y, objects, reenumerate = FALSE)
  
  ## labels of objects left
  unique(as.vector(z))[-1L]
  
  ## re-index objects
  z = reenumerate(z)
  unique(as.vector(z))[-1L]