1. Implementación
Algoritmo Otsu sobre FPGA
Seminario Máster Universitario en Ciencias y Tecnologías de
Computación. Escuela Superior de Ingeniería de Sistemas
Informáticos
4. INTRODUCCIÓN. TELEDETECCIÓN y
HARDWARE
La tendencia en teledetección siempre fue utilizar
dispositivos pequeños, baratos y con buen rendimiento.
Si parte del procesamiento se realizara en órbita
mejoraría el ancho de banda de las comunicaciones y se
tendría que computar menos en tierra.
Las FPGA’s además de usarse para el prototipado
rápido, combina la flexibilidad de los
microprocesadores con la potencia y el rendimiento de
los ASIC’s
Se necesitan dispositivos certificados para el espacio
(Radiación que puede causar errores en circuitos
“normales”). Actel y Xilinx hacen FPGA’s seguras para el
espacio
9. Algoritmo OTSU
ENTRADA: Matriz de valores de intensidad de la imagen
SALIDA: Valor umbral k para la segmentación de la imagen
(global)
1. Calcular el histograma normalizado de la imagen: 𝑝𝑖, para 𝑖 = 0, , . . 𝐿 − 1
2. Calcular la intensidad global media 𝑢𝑇
3. Para 𝑘 = 0,1,2, … 𝐿 − 1, calcular:
a) las sumas acumulativas 𝑤(𝑘),
b) las medias acumulativas 𝑢(𝑘)
c) la varianza entre clases 𝜎𝐵
2 𝑘
6. Obtener el umbral 𝑘∗
para el cual 𝜎𝐵
2
𝑘 es el máximo.
7. Obtener la medida de separabilidad 𝜂(𝑘) para 𝑘 = 𝑘∗
8. Devolver 𝑘∗
12. Nexyx 4 DDR
Descripción Descripción
1 Selector de potencia y puente de
batería
13 Botón de reinicio de configuración de
la FPGA
2 Puerto USB UART/JTAG compartido 14 Botón de reinicio de la CPU (para
núcleos blandos)
3 Puente de configuración externa (SD
/ USB)
15 Puerto de señal analógica Pmod
(XADC)
4 Puerto (s) Pmod 16 Puente de modo de programación
5 Micrófono 17 Conector de audio
6 Punto (s) de prueba de la fuente de
alimentación
18 Conector VGA.
7 LEDs (16) 19 Programación de FPGA hecha LED
8 Interruptores deslizantes 20 Conector ethernet
9 Pantalla de ocho dígitos 7 seg. 21 Conector host USB
10 Puerto JTAG para cable externo
(opcional)
22 Puerto de programación PIC24 (uso
de fábrica)
11 Cinco pulsadores 23 Interruptor de alimentación
12 Sensor de temperatura 24 Conector de alimentación
XC7A100T-1CSG324C),
XC7A100T-1CSG324C
15. OTSU sobre FPGA
Posibilidades desde Matlab/Simulink a través de
Vivado:
Programación:
MatlabM-code
CHLS
VHDLMatlab/Simulink
Con bloques Simulink (primitivas de Xilinx)
16. M-CODE
Desde código Matlab (sintaxis especial), hasta
la fpga
• Sintaxis especial
• Input/Output
Xilinx
Diagrama
de
Bloques
• Fuentes
• Restricciones
• Simulación
Generación
automática
código VHDL
• Síntesis
• Implementación
• BitStream
Vivado
Generación de
Reports de
consumos,
recursos,
tiempos…
Cosimulación
22. Razones escoger modelo de bloques:
Buscamos más de un umbral
Imágenes grandes
Pero….. Tuvimos que cambiar de placa, Basys 3 no tenía
suficientes recursos
Nexys
26. OTSUsobre FPGA
• Algún error en esta umbralización, los segmentos de imagen
siempre tienen la misma dimensión y puede producir errores de
frontera
• Buscar posibilidad de realización multiumbral para este tipo de
problemas
28. Referencias
Omar M. Saad, Ahmed Shalaby, Lotfy Samy, Mohammed S. Sayed,
Automatic arrival time detection for earthquakes based on Modified
Laplacian of Gaussian filter, Computers & Geosciences, Volume 113,2018,
Pages 43-53, ISSN 0098-3004, https://doi.org/10.1016/j.cageo.2018.01.013.
N. Raissouni, S. El Adib, J. A. Sobrino, N. Ben Achhab, A. Chahboun, A.
Azyat & M. Lahraoua (2019) Towards LST split-window algorithm FPGA
implementation for CubeSats on-board computations purposes, International
Journal of Remote Sensing, 40:5-6, 2435-2450, DOI:
10.1080/01431161.2018.1562589
Notas del editor
Supongamos que hay un umbral 𝒌, que permite segmentar la imagen en dos clases 𝐶_0 y 𝐶_1 con el resultado deseado para la segmentación.
𝐶_0 contiene a todos los pixeles con valores en el rango [𝟎,𝒌]
𝐶_1 los pixeles en el rango [𝒌+𝟏, 𝑳−𝟏]
Media hasta el nivel k
La media de los niveles de intensidad de gris de lo píxeles pertenecientes a cada una, 𝐶_0 y 𝐶_1 , estarán dadas por
Variancia
Una FPGA posee al menos 3 bloques:
CLB: Configurable-logic blocks, donde se implementan los circuitos lógicos.
IOB: Input-output block, donde se conectan las configuraciones internas con pines de entrada y salida.
DCM: Digital Clock Managers, permiten entregar señales de reloj a toda la FPGA.
Bloques lógicos, cuya estructura y contenido se denomina arquitectura. Hay muchos tipos de arquitecturas, que varían principalmente en complejidad (desde una simple puerta hasta módulos más complejos o estructuras tipo PLD). Suelen incluir biestables para facilitar la implementación de circuitos. secuenciales. Otros módulos de importancia son los bloques de Entrada/Salida,
Memoria RAM, que se carga durante el RESET para configurar bloques y conectarlos