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.
Usage
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
)
Arguments
- img
The image to be analyzed.
- pattern
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).- index
A character value specifying the target mode for conversion to binary image when
foreground
andbackground
are not declared. Defaults to"NB"
(normalized blue). Seeimage_index()
for more details. User can also calculate your own index using the bands names, e.g.index = "R+B/G"
- threshold
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 thek
andwindowsize
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.
- invert
Inverts the binary image if desired. This is useful to process images with a black background. Defaults to
FALSE
. Ifreference = 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 usingback_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).- opening, closing, filter, erode, dilate
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.
- plot
Show image after processing?
- dir_original
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.
- parallel
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 whenpattern
is used is informed. Whenobject_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).- workers
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.
- verbose
If
TRUE
(default) a summary is shown in the console.
Value
A numeric value representing the injury percentage for a single image, or a data frame with injury percentages for batch processing.
Details
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.