augmenters.segmentation¶
Superpixels¶
Completely or partially transform images to their superpixel representation.
Note
This augmenter is fairly slow. See Performance.
API link: Superpixels
Example.
Generate about 64
superpixels per image. Replace each one with a
probability of 50%
by its average pixel color.
import imgaug.augmenters as iaa
aug = iaa.Superpixels(p_replace=0.5, n_segments=64)
Example.
Generate 16
to 128
superpixels per image. Replace each superpixel with
a probability between 10
and 100%
(sampled once per image) by its
average pixel color.
aug = iaa.Superpixels(p_replace=(0.1, 1.0), n_segments=(16, 128))
Example.
Effect of setting n_segments
to a fixed value of 64
and then
increasing p_replace
from 0.0
and 1.0
:
Example.
Effect of setting p_replace
to a fixed value of 1.0
and then
increasing n_segments
from 1*16
to 9*16=144
:
Voronoi¶
Average colors of an image within Voronoi cells.
This augmenter performs the following steps:
- Query points_sampler to sample random coordinates of cell centers. On the image.
- Estimate for each pixel to which voronoi cell (i.e. segment) it belongs. Each pixel belongs to the cell with the closest center coordinate (euclidean distance).
- Compute for each cell the average color of the pixels within it.
- Replace the pixels of p_replace percent of all cells by their average color. Do not change the pixels of
(1 - p_replace)
percent of all cells. (The percentages are average values over many images. Some images may get more/less cells replaced by their average color.)
API link: Voronoi
Example.
Create an augmenter that places a 20x40
(HxW
) grid of cells on
the image and replaces all pixels within each cell by the cell’s average
color. The process is performed at an image size not exceeding 128px on
any side. If necessary, the downscaling is performed using linear
interpolation.
import imgaug.augmenters as iaa
points_sampler = iaa.RegularGridPointsSampler(n_cols=20, n_rows=40)
aug = iaa.Voronoi(points_sampler)
Example.
Create a voronoi augmenter that generates a grid of cells dynamically
adapted to the image size. Larger images get more cells. On the x-axis,
the distance between two cells is w * W
pixels, where W
is the
width of the image and w
is always 0.1
. On the y-axis,
the distance between two cells is h * H
pixels, where H
is the
height of the image and h
is sampled uniformly from the interval
[0.05, 0.2]
. To make the voronoi pattern less regular, about 20
percent of the cell coordinates are randomly dropped (i.e. the remaining
cells grow in size). In contrast to the first example, the image is not
resized (if it was, the sampling would happen after the resizing,
which would affect W
and H
). Not all voronoi cells are replaced
by their average color, only around 90
percent of them. The
remaining 10
percent’s pixels remain unchanged.
points_sampler = iaa.DropoutPointsSampler(
iaa.RelativeRegularGridPointsSampler(
n_cols_frac=(0.05, 0.2),
n_rows_frac=0.1),
0.2)
aug = iaa.Voronoi(points_sampler, p_replace=0.9, max_size=None)
UniformVoronoi¶
Uniformly sample Voronoi cells on images and average colors within them.
This augmenter is a shortcut for the combination of Voronoi
with
UniformPointsSampler
. Hence, it generates a fixed amount of N
random coordinates of voronoi cells on each image. The cell coordinates
are sampled uniformly using the image height and width as maxima.
API link: UniformVoronoi
Example.
Sample for each image uniformly the number of voronoi cells N
from the
interval [100, 500]
. Then generates N
coordinates by sampling
uniformly the x-coordinates from [0, W]
and the y-coordinates from
[0, H]
, where H
is the image height and W
the image width.
Then uses these coordinates to group the image pixels into voronoi
cells and averages the colors within them. The process is performed at an
image size not exceeding 128px on any side. If necessary, the downscaling
is performed using linear interpolation.
import imgaug.augmenters as iaa
aug = iaa.UniformVoronoi((100, 500))
Example.
Same as above, but always samples N=250
cells, replaces only
90
percent of them with their average color (the pixels of the
remaining 10
percent are not changed) and performs the transformation
at the original image size.
aug = iaa.UniformVoronoi(250, p_replace=0.9, max_size=None)
RegularGridVoronoi¶
Sample Voronoi cells from regular grids and color-average them.
This augmenter is a shortcut for the combination of Voronoi
,
RegularGridPointsSampler
and DropoutPointsSampler
. Hence, it
generates a regular grid with R
rows and C
columns of coordinates
on each image. Then, it drops p
percent of the R*C
coordinates
to randomize the grid. Each image pixel then belongs to the voronoi
cell with the closest coordinate.
API link: RegularGridVoronoi
Example.
Place a regular grid of 10x20
(height x width
) coordinates on
each image. Randomly drop on average 20
percent of these points
to create a less regular pattern. Then use the remaining coordinates
to group the image pixels into voronoi cells and average the colors
within them. The process is performed at an image size not exceeding
128px on any side. If necessary, the downscaling is performed using
linear interpolation.
import imgaug.augmenters as iaa
aug = iaa.RegularGridVoronoi(10, 20)
Example.
Same as above, generates a grid with randomly 10
to 30
rows,
drops none of the generated points, replaces only 90
percent of
the voronoi cells with their average color (the pixels of the remaining
10
percent are not changed) and performs the transformation
at the original image size.
aug = iaa.RegularGridVoronoi(
(10, 30), 20, p_drop_points=0.0, p_replace=0.9, max_size=None)
RelativeRegularGridVoronoi¶
Sample Voronoi cells from image-dependent grids and color-average them.
This augmenter is a shortcut for the combination of Voronoi
,
RegularGridPointsSampler
and DropoutPointsSampler
. Hence, it
generates a regular grid with R
rows and C
columns of coordinates
on each image. Then, it drops p
percent of the R*C
coordinates
to randomize the grid. Each image pixel then belongs to the voronoi
cell with the closest coordinate.
Note
In contrast to the other Voronoi augmenters, this one uses
None
as the default value for max_size, i.e. the color averaging
is always performed at full resolution. This enables the augmenter to
make most use of the added points for larger images. It does however
slow down the augmentation process.
API link: RelativeRegularGridVoronoi
Example.
Place a regular grid of R x C
coordinates on each image, where
R
is the number of rows and computed as R=0.1*H
with H
being
the height of the input image. C
is the number of columns and
analogously estimated from the image width W
as C=0.25*W
.
Larger images will lead to larger R
and C
values.
On average, 20
percent of these grid coordinates are randomly
dropped to create a less regular pattern. Then, the remaining coordinates
are used to group the image pixels into voronoi cells and the colors
within them are averaged.
import imgaug.augmenters as iaa
aug = iaa.RelativeRegularGridVoronoi(0.1, 0.25)
Example.
Same as above, generates a grid with randomly R=r*H
rows, where
r
is sampled uniformly from the interval [0.03, 0.1]
and
C=0.1*W
rows. No points are dropped. The augmenter replaces only
90
percent of the voronoi cells with their average color (the pixels
of the remaining 10
percent are not changed). Images larger than
512px
are temporarily downscaled (before sampling the grid points)
so that no side exceeds 512px
. This improves performance, but
degrades the quality of the resulting image.
aug = iaa.RelativeRegularGridVoronoi(
(0.03, 0.1), 0.1, p_drop_points=0.0, p_replace=0.9, max_size=512)