image_segment() reduces a color, color near-infrared, or grayscale images
to a segmented image using a given color channel (red, green blue) or even
color indexes (See image_index() for more details). The Otsu's thresholding
method (Otsu, 1979) is used to automatically perform clustering-based image
thresholding.
image_segment_iter() Provides an iterative image segmentation, returning
the proportions of segmented pixels.
image_segment(
img,
index = NULL,
r = 1,
g = 2,
b = 3,
re = 4,
nir = 5,
threshold = c("Otsu", "adaptive"),
k = 0.1,
windowsize = NULL,
col_background = NULL,
has_white_bg = FALSE,
fill_hull = FALSE,
filter = FALSE,
invert = FALSE,
plot = TRUE,
nrow = NULL,
ncol = NULL,
parallel = FALSE,
workers = NULL,
verbose = TRUE
)image_segment_iter(
img,
nseg = 2,
index = NULL,
invert = NULL,
threshold = NULL,
k = 0.1,
windowsize = NULL,
has_white_bg = FALSE,
plot = TRUE,
verbose = TRUE,
nrow = NULL,
ncol = NULL,
parallel = FALSE,
workers = NULL,
...
)
image_segment() returns list containing n objects where n is the
number of indexes used. Each objects contains:
image an image with the RGB bands (layers) for the segmented object.
mask A mask with logical values of 0 and 1 for the segmented image.
image_segment_iter() returns a list with (1) a data frame with the
proportion of pixels in the segmented images and (2) the segmented images.
An image object or a list of image objects.
For image_segment(), a character value (or a vector of characters)
specifying the target mode for conversion to binary image. See the available
indexes with pliman_indexes(). See image_index() for more details.
For image_segment_iter() a character or a vector of characters with the
same length of nseg. It can be either an available index (described above)
or any operation involving the RGB values (e.g., "B/R+G").
The red, green, blue, red-edge, and near-infrared bands of the image, respectively. Defaults to 1, 2, 3, 4, and 5, respectively. If a multispectral image is provided (5 bands), check the order of bands, which are frequently presented in the 'BGR' format.
The theshold method to be used.
By default (threshold = "Otsu"), a threshold value based
on Otsu's method is used to reduce the grayscale image to a binary image. If
a numeric value is informed, this value will be used as a threshold.
If threshold = "adaptive", adaptive thresholding (Shafait et al. 2008)
is used, and will depend on the k and windowsize arguments.
If any non-numeric value different than "Otsu" and "adaptive" is used,
an iterative section will allow you to choose the threshold based on a
raster plot showing pixel intensity of the index.
a numeric in the range 0-1. when k is high, local threshold
values tend to be lower. when k is low, local threshold value tend to be
higher.
windowsize controls the number of local neighborhood in
adaptive thresholding. By default it is set to 1/3 * minxy, where
minxy is the minimum dimension of the image (in pixels).
The color of the segmented background. Defaults to
NULL (white background).
Logical indicating whether a white background is present.
If TRUE, pixels that have R, G, and B values equals to 1 will be
considered as NA. This may be useful to compute an image index for
objects that have, for example, a white background. In such cases, the
background will not be considered for the threshold computation.
Fill holes in the objects? Defaults to FALSE.
Performs median filtering in the binary image? See more at
image_filter(). Defaults to FALSE. Use a positive integer to define the
size of the median filtering. Larger values are effective at removing
noise, but adversely affect edges.
Inverts the binary image, if desired. For
image_segmentation_iter() use a vector with the same length of nseg.
Show image after processing?
The number of rows or columns in the plot grid. Defaults to
NULL, i.e., a square grid is produced.
Processes the images asynchronously (in parallel) in separate
R sessions running in the background on the same machine. It may speed up
the processing time when image is a list. The number of sections is set
up to 70% of available cores.
A positive numeric scalar or a function specifying the maximum number of parallel processes that can be active at the same time.
If TRUE (default) a summary is shown in the console.
The number of iterative segmentation steps to be performed.
Additional arguments passed on to image_segment().
Tiago Olivoto tiagoolivoto@gmail.com
Nobuyuki Otsu, "A threshold selection method from gray-level histograms". IEEE Trans. Sys., Man., Cyber. 9 (1): 62-66. 1979. tools:::Rd_expr_doi("10.1109/TSMC.1979.4310076")
library(pliman)
img <- image_pliman("soybean_touch.jpg", plot = TRUE)
image_segment(img, index = c("R, G, B"))
# adaptive thresholding
Run the code above in your browser using DataLab