Programación de la memoria en FPGA

4

Estoy intentando diseñar un sistema de procesamiento de imágenes en un FPGA para hacer la detección de Canny Edge. El diseño se muestra en la imagen de abajo.

Tengounramdebloquegrandeparaalmacenarmiimagen.luegotengobuffersdelíneamáspequeñosparaleersololaslíneasqueestoyprocesando.Tengo3líneasenusoalavez(conotralíneacomopre-búsquedaparalasiguientefiladeprocesamiento).

Eldesafíoquetengoesqueelfiltro1miraunacajade9píxelesygeneraunvalorparaelpíxelcentral.porlotanto,paraunaimagende10x10,elfiltrosologeneradatosde8x8píxelesenelmedio.

Unavezqueelfiltro1hayaterminado3filas,quieroqueelfiltro2comienceenlosvaloresdepíxelesmodificados.Paracanalizarestediseño,meresultadifícildescubrircómolidiarconlospíxeles"faltantes" que el filtro 1 no genera. ¿Cuál sería la mejor manera de cargar esos para el filtro 2? ¿Debo tener una manera de pasar por alto la primera fila + última y el primer y último píxel de cada uno a mi búfer de segunda línea? o hay alguna otra forma en que puedo hacer esto?

    
pregunta user3397008

1 respuesta

6

¿Por qué el primer filtro no genera todos los píxeles? Debería. Solo necesita descubrir qué necesita producir para los píxeles "de borde".

En mis diseños de procesamiento de video, tengo un módulo separado al que llamo "generador de kernel" que se encuentra entre los buffers de línea y el filtro real. Lee los búferes de línea y genera los nueve píxeles de entrada (en paralelo) que deben operarse para cualquier píxel de salida en particular. En los bordes del marco, produce píxeles replicados para reemplazar los que estarían "fuera del borde" en el marco de entrada.

Lo que hace en los bordes es algo dependiente de la aplicación, pero en la mayoría de los casos, funciona bien para "reflejar" los datos en el borde de la imagen. En otras palabras, cuando está trabajando en la primera fila de la imagen, los datos de entrada que faltan (para la fila "cero") se completan utilizando los datos de la segunda fila. La misma lógica se utiliza en los bordes izquierdo, derecho e inferior.

De esta manera, la salida de cualquier etapa de filtro tiene el mismo número de píxeles que su entrada, y los "efectos de borde" se minimizan.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas