Quiero implementar algunos algoritmos de procesamiento de imágenes que están destinados a ejecutarse en un beagleboard. Estos algoritmos usan circunvoluciones extensivamente. Estoy tratando de encontrar una buena implementación C para la convolución 2D (probablemente usando la Transformada Rápida de Fourier). También quiero que el algoritmo pueda ejecutarse en el DSP de beagleboard, porque he oído que el DSP está optimizado para este tipo de operaciones (con su instrucción de acumulación múltiple).Convolución 2D rápida para DSP
No tengo experiencia en el campo, así que no sería una buena idea implementar la convolución yo mismo (probablemente no lo haga tan bien como alguien que entienda todas las matemáticas que hay detrás). Creo que existe una buena implementación de convolución C para DSP en algún lado, pero no pude encontrarla.
¿Alguien podría ayudar?
EDITAR: Resulta que el kernel es bastante pequeño. Sus dimensiones son 2X2 o 3X3. Así que supongo que no estoy buscando una implementación basada en FFT. Estaba buscando la convolución en la web para ver su definición, así que puedo implementarla de una manera directa (realmente no sé qué es la convolución). Todo lo que he encontrado es algo con integrales multiplicadas y no tengo ni idea de cómo hacerlo con matrices. ¿Alguien podría darme una pieza de código (o pseudo código) para el caso del kernel 2X2?
http://en.wikipedia.org/wiki/Convolution#Discrete_convolution –
@Peter : Gracias, pero están hablando de la carcasa 1D, nada sobre la convolución 2D – snakile
Las convoluciones 2d (en el procesamiento de imágenes) a menudo se pueden separar, por lo que se pueden ejecutar como 2 convoluciones 1-d en secuencia. Esto hace que el requisito de procesamiento sea mucho más pequeño. ¿Puedes dar ejemplos de los tipos de granos que quieres usar? –