Implementación en FPGA de algoritmo para
análisis parasitario
FPGA Algorithm Implementation for Parasitic Analysis
Rombolá Guido
1
, Leiva Lucas
2
, Vazquez Martin
3
, Toloza Juan
4
, Sagües Federica
5
, Saumell Carlos
6
1,2,3,4
Facultad de Ingeniería - Universidad Nacional de Tres de Febrero - Caseros - Buenos Aires - Argentina
2,3,4
LabSET - Universidad Nacional del Centro de la Provincia de Buenos Aires - Tandil - Buenos Aires - Argentina
5,6
CIVETAN - Universidad Nacional del Centro de la Provincia de Buenos Aires - Tandil - Buenos Aires - Argentina
1
grombola@untref.edu.ar
2,3,4
{lleiva,mvazquez,jmtoloza]@labset.exa.unicen.edu.ar
5
federica@vet.unicen.edu.ar
6
saumell@vet.unicen.edu.ar
Resumen Un control parasitario eficiente permite reducir
pérdidas significativas en la agroindustria. Los métodos
actuales con los que se realiza este tipo de controles imponen
costos y demoras. Por ello, se propone el desarrollo de un
dispositivo portátil que automatice esta tarea. En este trabajo
se presenta la implementación hardware de un algoritmo de
conteo automático de huevos de parásitos utilizando síntesis de
alto nivel. Los resultados demuestran la factibilidad de la
implementación, con un 87% de precisión operando a una tasa
de hasta de 65 frames por segundo y una ocupación de LUTs
menor al 45%, considerando dos kits comerciales (PYNQ-Z1 y
ULTRA96V2).
Palabras clave: Análisis Parasitario, Procesamiento de
Imágenes, HLS, FPGA.
Abstract An efficient parasite control reduces significant
losses in the agribusiness, but current methods involve costs
and delays. Therefore, the development of a portable device to
automates this task is proposed. This work presents a
hardware implementation of an automatic parasite egg
counting algorithm using high-level synthesis. The results
demonstrate the feasibility of the implementation, with an 87%
accuracy operating at a rate of up to 65 frames per second and
an occupation of LUTs less than 45%, considering two
commercial kits (PYNQ-Z1 and ULTRA96V2).
Keywords: Parasitic Analysis, Image Processing, HLS, FPGA
I. INTRODUCCIÓN
El sector agropecuario y agroindustrial es el principal
mercado de exportación de Argentina. En esta industria un
buen control parasitario permite mitigar grandes pérdidas
económicas.
Los planes sanitarios en el ganado bovino incluyen el
diagnóstico y control de potenciales enfermedades. La
acción de parásitos internos en los animales es un trastorno
constante en la eficiencia productiva ocasionando grandes
pérdidas [1]. Los parásitos internos producen huevos que
son eliminados con la materia fecal; en el ambiente
desarrollan a larvas infectantes, contaminando los pastos y
de esta manera reiniciando el ciclo parasitario cuando son
ingeridas por el animal. El diagnóstico parasitológico de
rutina se realiza a través de la determinación de huevos en
la materia fecal pudiendo detectar el problema y anticiparse
a las consecuencias clínicas evitando que los animales
enfermen. Las pérdidas subclínicas vinculadas a la ganancia
de peso son las que el productor no consigue detectar. La
pérdida de peso (o dejar de ganarlo) en bovinos puede
alcanzar el rango de 15 a 40 kg por animal en pastoreo. La
pérdida de peso subclínica no es posible compensar debido
a que ocurre en la etapa de crecimiento y desarrollo del
animal, provocando serias consecuencias económicas. Para
Argentina, se estimaron pérdidas ocasionadas por parásitos
en aproximadamente 200 millones de dólares anuales [1].
Para minimizar el impacto de las parasitosis subclínicas, se
realizan en los programas de control sanitario, monitoreos
regulares mediante análisis de materia fecal, donde a través
del conteo de huevos, se puede estimar indirectamente la
carga parasitaria sobre él animal. La técnica de laboratorio
que se utiliza tiene muchas limitaciones.
Actualmente la detección de los parásitos
gastrointestinales en bovinos se realiza de forma indirecta, a
través del análisis de materia fecal utilizando la técnica
Mcmaster modificada [2]. Este método consiste en la
observación, identificación y conteo de huevos de parásitos
gastrointestinales utilizando microscopio óptico, tarea que
requiere de personal experimentado, equipamiento de
laboratorio y tiempo que incrementa los costos de su
realización. Asimismo, los resultados de los análisis están
sujetos a la fatiga del personal encargado de realizar esta
tarea. Se estima que el error promedio es del 20% cuando es
realizada por un experto.
Las nuevas tecnologías permitieron comenzar a generar
soluciones para conteo automático. Algunos de estos
métodos se detallan en [3,4] los cuales realizan el
procedimiento a través del procesamiento de imágenes
sobre muestras pre-procesadas en laboratorio, e incluso
existen soluciones utilizando smartphones vinculado con
equipamiento especializado [5]. Se pueden encontrar en la
literatura también soluciones basadas en Deep Learning,
como la presentada en [6]. Sin embargo, todas las técnicas
requieren de equipamiento costoso y muchas de ellas no son
portables.
Recibido: 01/03/22; Aceptado: 04/05/22
Creative Commons License - Attribution-NonCommercial-
NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
https://doi.org/10.37537/rev.elektron.6.1.149.2022
Original Article
Revista elektron, Vol. 6, No. 1, pp. 36-40 (2022)
ISSN 2525-0159
36
En este contexto, los FPGA son cada vez más utilizados
para la implementación de aplicaciones de procesamiento
de imágenes, principalmente en aplicaciones embebidas de
tiempo real, donde la latencia y el consumo de potencia son
consideraciones importantes [7]. Además, la incorporación
de nuevas metodologías de desarrollo, como las
herramientas de síntesis de alto nivel (HLS), proporcionan
beneficios significativos para implementar algoritmos de
procesamiento de imágenes en FPGA y reduce los tiempos
de desarrollo [8, 9].
En este trabajo se presenta el desarrollo de la
implementación hardware de un algoritmo para la
detección, identificación y conteo de huevos de parásitos. El
objetivo es la automatización de la tarea de conteo,
incidiendo además en un incremento de la precisión. Este
algoritmo es parte de una solución tecnológica, un
dispositivo portátil, que evita la necesidad de lidiar con el
proceso de tomar las muestras, transportarlas al laboratorio,
aguardar por los resultados, y con los resultados poder
aplicar las medidas de control y/o terapéuticas
correspondientes teniendo en cuenta el tiempo que lleva
cada análisis. El flujo de diseño fue realizado utilizando
herramientas de síntesis de alto nivel. El trabajo contiene las
métricas de implementación obtenidas para el IP Core en un
dispositivo Zynq ( PYNQ-Z1) y un dispositivo UltraScale+
(Ultra96V2), ambos de Xilinx. Considerando que la
tecnología de ambas plataformas son diferentes (SoC y
MPSoC) resulta interesante evaluar las prestaciones
ofrecidas en ambas plataformas de acuerdo a los
requerimientos del problema.
En la sección II se presentan los detalles de
implementación del algoritmo, en la sección III se presentan
los resultados obtenidos tanto en precisión como en análisis
de tiempos y área. Finalmente, en la sección IV se presentan
las conclusiones y trabajos futuros.
II. DESARROLLO
La implementación del IP core para el conteo de huevos
de parásitos se realizó utilizando Vivado HLS 2019.2. Una
de las principales ventajas de este entorno es el amplio
soporte ofrecido por el fabricante [10], y además permite el
uso de una biblioteca de funciones para el procesamiento de
imágenes (xfOpenCV). Esta biblioteca contiene un
subconjunto de funciones de la biblioteca OpenCV,
optimizadas para la síntesis.
Se realizaron síntesis de Vivado HLS para su exportación
del IP core a dos kits de desarrollo comerciales: PYNQ-Z1
y ULTRA96V2. Se escogen estas dos plataformas, ya que si
bien permiten generar una solución sólo en su lógica
programable, son de bajo costo y ambas tienen soporte para
PYNQ, facilitando tanto el desarrollo de aplicaciones a
nivel de usuario, como la incorporación de dispositivos de
captura USB. Esto último resulta útil en este caso para
conectar un microscopio digital USB de bajo costo, que
permite la entrada de las imágenes a analizar [11]. Estos
microscopios alcanzan hasta 1000X de Zoom óptico, con
foco ajustable, iluminación led con intensidad controlada, y
permiten entregar imágenes en resoluciones de 640x480 y
800x600 píxeles. Además, pueden capturar los huevos de
parásitos considerando que el tamaño promedio de los
mismos es de 85 micrómetros.
A. Descripción del algoritmo
La implementación del algoritmo está basada en un
pipeline de imagen, y consta de tres etapas:
preprocesamiento, segmentación y clasificación.
La primera etapa de preprocesamiento convierte la
imagen de entrada de un espacio de color RGB a escala de
grises, y aplica una binarización de la imagen, dando como
resultado una imagen con los objetos candidatos a ser
analizados en etapas siguientes en color blanco, y el fondo
en color negro. La Figura 1 presenta los resultados de las
operaciones que ejecuta esta etapa, para una imagen de
entrada de ejemplo. El umbral de la binarización fue
establecido en 116, con base en la experticia del
desarrollador de software y del experto de laboratorio, y es
fijo para todas las imágenes. El algoritmo permite fijar este
valor ya que todas las imágenes son capturadas en un
ambiente estructurado: cámara de depósito de la muestra,
porcentaje de solución y muestra, e iluminación.
La etapa de segmentación identifica cada uno de los
objetos de interés (blobs) y extrae sus características. Cada
blob se conforma por un conjunto de píxeles blancos
conectados, y aislados del resto. Para la detección de blobs,
se realizó una implementación basada en una única pasada,
que enumera los blobs con sus características, calculadas
incrementalmente [12]. Esto evita el almacenamiento de la
imagen completa en memoria, y solo necesita la
información de las últimas dos filas en cada instante de
tiempo. No guardar la imagen completa en memoria permite
destinar menos recursos de memoria del dispositivo y que la
solución pueda implementarse en un FPGA de menores
prestaciones. Considerando que en esta etapa opera sobre
una imagen binaria, se representa cada fila como una lista
de secuencias con píxeles consecutivos de color blanco. De
cada secuencia, son relevantes los números de columna de
inicio y de fin. El resto de los valores no contemplados
corresponden a píxeles negros. Se conoce a esta
representación con el nombre de run-length encoding.
Para identificar los blobs, se deben comparar las filas de
acuerdo a las siguientes reglas:
Si una secuencia de píxeles de una fila no se solapa
con ninguna secuencia de la fila anterior, se crea un
nuevo blob cuyo contenido es únicamente el de esta
secuencia.
Si una secuencia de píxeles de una fila se solapa
con alguna secuencia de la fila anterior, entonces esas
dos secuencias corresponden al mismo blob. Este
ejemplo se ilustra en la figura 2 (a).
Si hay dos secuencias de píxeles en una misma fila
que originalmente corresponden a dos blobs, y en la fila
siguiente una secuencia se solapa con las dos de la fila
anterior, entonces se combinan los dos blobs ya que son
el mismo objeto. Este ejemplo se ilustra en la figura 2
(b).
Para cada uno de los blobs detectados se calculan las
características que se utilizarán posteriormente para
identificar a un objeto [13]. Estas características son:
Área (A): suma de todos los píxeles blancos de un
blob.
Mínimo rectángulo que contiene al blob (bounding
box): rectángulo más pequeño que contiene la totalidad
del blob.
Momentos geométricos de orden 1 y 2: promedios
ponderados de las intensidades de los píxeles, que
Revista elektron, Vol. 6, No. 1, pp. 36-40 (2022)
ISSN 2525-0159
37
http://elektron.fi.uba.ar