Bueno, actualmente soy responsable de un proyecto que realiza el reconocimiento de seguimiento de manos usando un SoC (FPGA + ARM Processor). Todavía no hemos comenzado a desarrollar la solución en el PCB, pero creo que algunas consideraciones que hemos tomado al principio pueden ayudarlo.
Sí, los FPGA son muy interesantes para realizar este tipo de algoritmos de reconocimiento porque permiten paralelizar muchos cálculos. Por ejemplo, en el seguimiento manual, puede generar varias conjeturas donde se encuentra cada articulación y verificarlas todas al mismo tiempo. Es una gran ventaja sobre las CPUs
Por supuesto, tendría que analizar su algoritmo para saber con seguridad si funcionaría bien en una ejecución paralela. Y si es el caso, puede implementarlo utilizando un FPGA.
Altera, por ejemplo, ha estado desarrollando soluciones para sintetizar descripciones de lenguaje OpenCL directamente a FPGA. Esto puede ayudarlo, porque un lenguaje de nivel superior como ese puede acelerar mucho su trabajo.
Sin embargo, tengo una pequeña preocupación. Para mi proyecto, el seguimiento de manos y dedos totalmente funcional y confiable es muy difícil de realizar en tiempo real. Incluso algunas personas que utilizan GPU para paralelizar los cálculos no han logrado 30 cuadros por segundo. ¿Está seguro de que un microcontrolador no haría su trabajo? En este caso, utilizar un FPGA y todo el trabajo para desarrollar la descripción del hardware sería una exageración.
Hay otro lado de los FPGA que pueden aumentar su presupuesto. Probablemente tendrás que comprar una licencia para un simulador. No estoy seguro de que esté familiarizado con las aplicaciones FPGA. Tiene la descripción del hardware, la prueba con un par de bancos de prueba que se ejecutan en un simulador, y cuando está seguro de que el diseño funciona, lo sintetiza y va al FPGA.
Si no tienes un simulador, tu trabajo será muy lento. Síntesis de un gran diseño puede tardar un par de horas. Los FPGAs son complicados de depurar. Con Altera, por ejemplo, debe reservar una memoria en el FPGA para almacenar muestras de señales para luego recibir la forma de onda. Es mucho más duro que los microcontroladores.