La detección de bordes se ha convertido en un elemento crucial en casi todas las técnicas de visión por computadora utilizadas en diversos dominios de aplicación hoy en día1. La detección de bordes es una etapa de extracción de características y es responsable de recuperar detalles informativos y distintivos de las imágenes, que pueden aplicarse en una amplia gama de escenarios2. Los bordes dentro de una imagen indican regiones donde hay un cambio brusco en la intensidad; por lo tanto, proporcionan información importante y distintiva sobre esa imagen. Este proceso facilita la eliminación de detalles innecesarios e irrelevantes, conservando únicamente los elementos cruciales y únicos que pueden procesarse posteriormente para la aplicación específica.
La importancia de la detección de bordes queda resaltada por su aplicación en diversas tareas, incluyendo segmentación de imágenes, detección y reconocimiento de objetos, extracción de características, mejora de imágenes, identificación de objetos, imágenes médicas, vigilancia, automatización industrial, conducción autónoma, realidad aumentada y robótica2,3,4,5,6, como se muestra en Figura 1.
Existen múltiples métodos para la detección de bordes, incluyendo Sobel, Prewitt, Roberts, Canny y otros. Entre estas técnicas, la detección de bordes de Sobel destaca por su aplicación sencilla, baja complejidad de implementación y alta precisión en la identificación de bordes3,4,5,6. El algoritmo de detección de bordes de Sobel determina los gradientes de la imagen en las direcciones horizontal y vertical mediante los núcleos Gx y Gy, respectivamente, como se muestra a continuación2,4.
Gx resalta los bordes en la dirección ×, y Gy resalta los bordes en la dirección y12,13. Cuando se combinan, definen completamente todos los bordes en una imagen6. La convolución con el proceso del kernel y la ventana deslizante se utiliza para aplicar la detección de bordes de Sobel a una imagen. Uno por uno, se extrae de la imagen una ventana, por ejemplo, de 3 por 3 píxeles, y esta ventana se convoluciona con la matriz del filtro para obtener el nuevo valor del píxel central. Toda la imagen se procesa de esta manera nuevamente. En la detección de bordes de Sobel se utilizan dos kernels de este tipo: uno para extraer bordes en la dirección x y otro para la dirección y. Para obtener todos los bordes, se combinan luego estos dos resultados. La detección de bordes de Sobel produce resultados precisos y confiables, que pueden mejorarse aún más con algún preprocesamiento4,5,15. La detección completa de bordes de Sobel se interpreta en Figura 2.
Aunque toda la literatura publicada tiene contribuciones significativas en el campo de la detección de bordes, todas las principales investigaciones reportadas han trabajado con resoluciones de imagen bajas, mientras que el trabajo presentado en este artículo opera con diferentes resoluciones de imagen, que varían desde imágenes de baja resolución (256 × 256) hasta resolución de imagen de alta definición completa (HD) (2560 × 1440). En consecuencia, investigar la implementación en hardware del algoritmo de detección de bordes de Sobel para distintas resoluciones de imagen es fundamental para comprender la eficiencia de la implementación cuando se aplica en escenarios en tiempo real con resoluciones de imagen variables. La matriz de puertas programables en campo (FPGA) ha sido reconocida como una plataforma adecuada para implementaciones en hardware, debido a su idoneidad para el desarrollo rápido de prototipos y a ventajas como la reconfigurabilidad, que permite realizar modificaciones fáciles en el diseño sin necesidad de cambiar toda la configuración del hardware6,7,8,9,10,11,12,13. Además, las FPGAs ofrecen la posibilidad de procesamiento paralelo y segmentación; una vez que las métricas de rendimiento se optimizan y la plataforma se valida, el diseño puede avanzar hacia la producción real de circuitos integrados específicos para aplicaciones (ASICs)14,15. Otra característica importante de las FPGA es su reconfigurabilidad, que permite a los diseñadores modificar el diseño del producto en cualquier momento sin necesidad de reemplazar ningún componente de hardware. Solo es necesario reprogramar el chip, lo cual requiere muy poco tiempo o esfuerzo, siempre que el diseñador domine lenguajes de descripción de hardware como VHDL/Verilog4,6,13,16,17. Para el análisis de la implementación en FPGA, los parámetros principales considerados son la velocidad (frecuencia máxima), la utilización de recursos y la eficiencia energética. Tabla 1, que muestra el creciente volumen de literatura publicada en el ámbito de las FPGA y cómo han evolucionado las publicaciones sobre FPGA en el período comprendido entre 2006 y 2024. Se explica claramente que el campo de investigación en FPGA ha pasado ahora a aplicaciones en tiempo real, realidad aumentada, computación en el borde y otras aplicaciones de alto nivel13,14,15,16,17,18,19,20,21,22,23.
Tabla 2 destaca los trabajos realizados en la literatura existente relacionados con la implementación de la detección de bordes de Sobel en FPGA desde 2020 hasta 2025. Tabla 2 menciona la placa FPGA utilizada, los algoritmos implementados, la metodología de diseño, los hallazgos, las métricas, el área de aplicación y los desafíos de cada artículo referenciado.
Los autores4 han recomendado utilizar el método de detección de bordes de Sobel en 8 direcciones para aumentar la precisión en la detección de bordes; sin embargo, informaron un mayor consumo de recursos para la metodología propuesta. Navinkumar et. al. utilizan una técnica para reducir las operaciones matemáticas complejas de multiplicación y raíz cuadrada que intervienen en la detección tradicional de bordes de Sobel, lo que permite ahorrar recursos a bordo y mejorar la velocidad9. Los autores17 documentaron el uso del algoritmo de detección de bordes de Sobel para identificar carriles en sistemas avanzados de asistencia al conductor. Su objetivo fue acelerar la detección y reducir el tiempo de procesamiento. En general, se sugirió que el uso de la detección de bordes es un método confiable para la extracción de la región de interés en el futuro, lo cual podría ser muy útil en diversas aplicaciones donde sea necesario extraer el área requerida de una imagen ignorando cualquier otra información innecesaria. Los desafíos reportados colectivamente incluyeron un mayor uso de recursos y memoria, sensibilidad al ruido, alto costo computacional y escalabilidad limitada para imágenes de mayor resolución4,5,6,11,12,13,21,22,23.
En este trabajo, se realiza la implementación tradicional del algoritmo de detección de bordes Sobel en la placa FPGA Ultra96-V2, para distintas resoluciones de imagen que van desde una resolución baja de 256 × 256 hasta una resolución de alta definición completa de 2560 × 1440. Ultra96-V2 es una placa que combina las capacidades de programación FPGA con el potente procesamiento Arm (Cortex-A53/R5) para aplicaciones de alto rendimiento. Esta placa se lanzó por primera vez en 2018 y utiliza el nodo tecnológico FinFET de 16 nm18.
Para garantizar la reproducibilidad, toda la implementación se realizó utilizando una cadena de herramientas estándar compuesta por Vivado HLS 2019.2 para síntesis de alto nivel (HLS) y Vivado 2019.2 para colocación y enrutamiento, así como la imagen PYNQ publicada por los recursos Ultra96-V2. El código HLS se utilizó para obtener el IP (Propiedad Intelectual) de detección de bordes Sobel, que fue exportado e integrado en la suite de diseño Vivado. El IP se implementó en la parte PL (Lógica Programable), y la parte PS (Sistema de Procesamiento) del FPGA se encargó de la transferencia de datos y los mecanismos de control. La interfaz entre PS y PL se realizó mediante el protocolo AXI. Todas las métricas reportadas—frecuencia, utilización de recursos y potencia—se tomaron de los informes posteriores a la implementación, no de estimaciones de HLS. Los ajustes de implementación se mantuvieron constantes, y solo se modificaron las resoluciones de imagen a lo largo de los experimentos.
Los logros significativos de este trabajo consisten en un bajo consumo de energía, una baja utilización de recursos y una alta velocidad. Los resultados indican menos del 20 % de utilización de recursos a bordo (18 % de tablas de búsqueda (LUT), 11 % de biestables (FF), 3 % de memoria y 10 % de DSP) para imágenes de alta resolución, lo que señala una gran disponibilidad para integrar un procesamiento mucho mayor sobre estas imágenes, como se espera en cualquier sistema de visión por computadora, dado que la detección de bordes es solo una etapa intermedia. Asimismo, la disipación de potencia es de casi 2 W y la frecuencia máxima de operación se reporta en 144 MHz. Los resultados muestran que escalar los tamaños de imagen en aproximadamente 56 veces incrementa la utilización de recursos en apenas un 20 %. La velocidad y la disipación de potencia también se degradan en aproximadamente un 20 %. Este análisis investiga significativamente el algoritmo desde una perspectiva diferente, que no ha sido reportada en otras publicaciones anteriores, indicando así que la implementación es muy adecuada para aplicaciones en tiempo real sin necesidad de limitar las imágenes a tamaños pequeños o menor resolución, lo cual definitivamente degradaría la cantidad de información necesaria en las etapas posteriores tras la detección de bordes.
La novedad de este trabajo no radica en el algoritmo en sí, sino que se centra en evaluar el rendimiento del algoritmo tradicional de detección de bordes de Sobel en diversas resoluciones de imagen sobre arquitecturas FPGA heterogéneas modernas, aprovechando las ventajas de las técnicas de implementación basadas en HLS. Las principales contribuciones de este artículo consisten principalmente en la aplicación de una metodología híbrida implementada en un FPGA, distribuyendo eficazmente la carga de trabajo entre las secciones PS y PL de la arquitectura para permitir que el diseño se ajuste sin esfuerzo a diferentes resoluciones. Otra contribución implica experimentar para evaluar cómo la escalabilidad de recursos varía con los cambios en las resoluciones de imagen, lo cual ayuda a comprender el rendimiento en diferentes configuraciones y para diversas aplicaciones.