Les presento una alternativa para hallar área foliar e indice de severidad de enfermedades foliares utilizando el paquete pliman. pliman (PLant IMage ANalysis) es un paquete de R para el análisis de imágenes de plantas, principalmente de hojas.
La investigación agrícola conlleva evaluar distintas variables de respuesta. Una de ellas es área foliar. Determinar su valor y con precisión es muy importante en el fenotipado de plantas. Por otro lado, en la evaluación de enfermedades, generalmente una variable de respuesta es determinar la severidad de la enfermedad en las hojas. Registrar con precisión este valor es muy importante en las investigaciones agrícolas.
Para facilitar y obtener datos precisos de área foliar y severidad de enfermedades se han desarrollado equipos y programas informáticos; sin embargo, la mayoría de ellos son patentados. Por tanto, la disponibilidad de herramientas de análisis de imágenes es de gran importancia principalmente para propósitos de investigación. Ademas, un procesamiento por lotes puede automatizar y acelerar en gran medida el proceso, lo que por supuesto es beneficioso en cualquier campo de investigación.
En el cran de R existe un paquete que se llama pliman, es un paquete de R desarrollado por Tiago Olivoto que ofrece un conjunto de funciones para realizar diversos análisis sobre imágenes de plantas, entre ellas está área foliar e índice de severidad. Por tanto, el objetivo de este post es obtener área foliar y severidad de enfermedades en base a imágenes de hojas utilizando el paquete pliman de R.
Previamente, se recomienda instalar el paquete EBImage, ya que pliman aprovecha varias funciones potentes del paquete EBImage. Para lo cual ejecute el siguiente código:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("EBImage")
Nota: Si usted es un usuario de Windows, primero se recomienda descargar e instalar la última versión de Rtools.
Una vez instalado el paquete EBImage, instale la última versión estable de pliman desde CRAN con:
install.packages("pliman")
Cargar el paquete
Importación de las imágenes a ser analizadas. En este ejemplo, se utiliza una imagen con cinco hojas de árbol y una plantilla amarilla con un área conocida de 4 cm2.
img <- image_import(image_pliman("la_pattern.JPG"))
leaf <- image_import(image_pliman("la_leaf.jpg"))
tmpl <- image_import(image_pliman("la_temp.jpg"))
background <- image_import(image_pliman("la_back.jpg"))
# Combinar las imágenes
image_combine(img, leaf, tmpl, background)

Para calcular el área de la hoja en la imagen, se utiliza la función leaf_area(). Despues, se utiliza get_measures() para obtener los valores dados en la escala del argumento area_template. Las otras medidas (a saber, perímetro, radio_medio, radio_mín y radio_máx) se dan como píxeles.
area <-
leaf_area(img = img,
img_leaf = leaf,
img_template = tmpl,
img_background = background,
area_template = 4,
text_col = "white")
get_measures(area)
-----------------------------------------
Total leaf area : 140.68
Average leaf area: 23.447
-----------------------------------------
id x y area perimeter radius_mean radius_min
1 1 510.885 194.808 33.136 763 131.126 112.777
2 2 206.718 201.320 26.624 716 119.456 92.767
3 3 123.399 557.345 30.199 789 128.734 95.755
4 4 622.992 585.397 38.742 875 143.653 108.122
5 5 364.717 508.658 7.979 388 64.534 51.535
radius_max radius_sd radius_ratio
1 173.939 15.282 1.542
2 170.245 19.245 1.835
3 189.384 24.541 1.978
4 203.351 25.083 1.881
5 86.370 9.645 1.676
Importación de imágenes dañadas por la enfermedad.
img <- image_import(image_pliman("sev_leaf.jpg"))
healthy <- image_import(image_pliman("sev_healthy.jpg"))
symptoms <- image_import(image_pliman("sev_sympt.jpg"))
background <- image_import(image_pliman("sev_back.jpg"))
image_combine(img, healthy, symptoms, background, ncol = 4)

Determinación de la severidad de la enfermedad.
symptomatic_area(img = img,
img_healthy = healthy,
img_symptoms = symptoms,
img_background = background,
show_image = TRUE)

healthy symptomatic
1 88.95887 11.04113
La función count_objects() puede utilizarse para contar los objetos como hojas, granos, vainas y polen en una imagen. En el siguiente ejemplo, contaremos el número de granos de soja de una imagen con 30 granos.
img <- image_import(image_pliman("soybean_touch.jpg"))
image_show(img)
count_objects(img, marker = "text")

--------------------------------------------
Number of objects: 30
--------------------------------------------
statistics area perimeter
min 1368.0000 122.00000
mean 2056.0000 150.03333
max 2443.0000 163.00000
sd 230.0232 8.43835
sum 61680.0000 4501.00000
El paquete pliman es una alternativa muy usual en la investigación científica agrícola. El procesamiento de una gran cantidad de imagenes puede mejorar la velocidad de evaluación. Ademas, se puede automatizar el proceso de evaluación y análisis.
For attribution, please cite this work as
Santos (2021, Aug. 6). Franklin Santos: Área foliar e índice de severidad con R. Retrieved from https://franklinsantos.com/posts/2021-08-06-pliman/
BibTeX citation
@misc{santos2021área,
author = {Santos, Franklin},
title = {Franklin Santos: Área foliar e índice de severidad con R},
url = {https://franklinsantos.com/posts/2021-08-06-pliman/},
year = {2021}
}