Área foliar e índice de severidad con R

Leaf Area Pliman Disease Severity

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.

Franklin Santos https://franklinsantos.com (Agritech Bolivia)
08-06-2021

Introducción

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.

Análisis y visualización

Instalación

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")

Área foliar

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

Índice de severidad de la enfermedad

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

Contar objetos

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

Conclusión

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.

Citation

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}
}