The measures_injury
function calculates the percentage of injury in images
by performing binary segmentation and identifying lesions. It processes
either a single image or a batch of images specified by a pattern in a
directory.
measure_injury(
img = NULL,
pattern = NULL,
index = "GRAY",
threshold = "Otsu",
invert = FALSE,
opening = 5,
closing = FALSE,
filter = FALSE,
erode = FALSE,
dilate = FALSE,
plot = TRUE,
dir_original = NULL,
parallel = FALSE,
workers = NULL,
verbose = TRUE
)
A numeric value representing the injury percentage for a single image, or a data frame with injury percentages for batch processing.
The image to be analyzed.
A pattern of file name used to identify images to be imported.
For example, if pattern = "im"
all images in the current working directory
that the name matches the pattern (e.g., img1.-, image1.-, im2.-) will be
imported as a list. Providing any number as pattern (e.g., pattern = "1"
)
will select images that are named as 1.-, 2.-, and so on. An error will be
returned if the pattern matches any file that is not supported (e.g.,
img1.pdf).
A character value specifying the target mode for conversion to
binary image when foreground
and background
are not declared. Defaults
to "NB"
(normalized blue). See image_index()
for more details. User can
also calculate your own index using the bands names, e.g. index = "R+B/G"
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.
Inverts the binary image if desired. This is useful to process
images with a black background. Defaults to FALSE
. If reference = TRUE
is use, invert
can be declared as a logical vector of length 2 (eg.,
invert = c(FALSE, TRUE
). In this case, the segmentation of objects and
reference from the foreground using back_fore_index
is performed using the
default (not inverted), and the segmentation of objects from the reference
is performed by inverting the selection (selecting pixels higher than the
threshold).
Morphological operations (brush size)
dilate
puts the mask over every background pixel, and sets it to
foreground if any of the pixels covered by the mask is from the foreground.
erode
puts the mask over every foreground pixel, and sets it to
background if any of the pixels covered by the mask is from the background.
opening
performs an erosion followed by a dilation. This helps to
remove small objects while preserving the shape and size of larger objects.
closing
performs a dilatation followed by an erosion. This helps to
fill small holes while preserving the shape and size of larger objects.
filter
performs median filtering in the binary image. Provide a positive
integer > 1 to indicate the size of the median filtering. Higher values are
more efficient to remove noise in the background but can dramatically impact
the perimeter of objects, mainly for irregular perimeters such as leaves
with serrated edges.
Show image after processing?
The directory containing the original and processed images. Defaults to NULL. In this case, the function will search for the image img in the current working directory.
If TRUE
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, especially when pattern
is used is informed.
When object_index
is informed, multiple sections will be used to extract
the RGB values for each object in the image. This may significantly speed up
processing time when an image has lots of objects (say >1000).
A positive numeric scalar or a function specifying the number of parallel processes that can be active at the same time. By default, the number of sections is set up to 30% of available cores.
If TRUE
(default) a summary is shown in the console.
The function processes each image by reading it, applying binary segmentation to detect lesions, filling the segmented areas, calculating the injury percentage, and optionally saving the processed image with highlighted lesions. In batch mode, it uses the provided pattern to identify images in the specified directory and can utilize parallel processing for efficiency.