Javascript es lo suficientemente rápido en la actualidad para hacer procesamiento de imágenes en tiempo real. JSFeat es una biblioteca de código abierto (licencia MIT), que implanta algunos de los algoritmos de procesamiento más avanzado y además, para usarse en aplicaciones en tiempo real.

Si se quiere ver los programas de demostración, se necesita que su máquina esté equipada con una cámara web y un navegador que soporte WebRTC. Por el momento las demostraciones están limitadas a correr en Chrome, en su última versión, para máquinas de escritorio. Chrome para Android, Firefox e IE no soportan todo el WebRTC API aún. Sin embargo, se pueden usar las rutinas de Javascript en casi cualquier navegador moderno pero hay que encontrar una forma alternativa para hacerse de las imágenes a procesar. Si aún no usa Chrome, pues quizás es el momento de descargarlo. Algunas demos son muy convincentes.

Pero aparte de implantar los algortimos de procesamiento de imágenes más usados, hay otras bibliotecas, como la detección y seguimiento de objetos.

Las operaciones básicas (con programas demo incluidos), son:

  • Procesamiento de imágenes básico (escala de grises, derivativos, desenfoque, muestreo, etcétera)
  • escala de grises
  • desenfoque
  • desenfoque gaussiano
  • histograma de colores

Las operaciones más avanzadas:

  • detección de bordes,
  • detección de esquinas
  • flujo óptico Lucas-Kanade
  • detector de objetos HAAR
  • detector de objetos BBF

Todos estos trabajan en tiempo real con el uso de una webcam conectada.

El flujo óptico Lucas-Kanade es un método básico para el seguimiento de objetos y esta demostración trabaja bien. Todo lo que hay que hacer es dar click en un punto que define el área a la cual se le quiere dar seguimiento y el punto se mantiene sobre la imagen mientras ésta se mueve. Ocasionalmente el movimiento de un objeto puede ser muy grande y el punto se pierde. Esto es la base para Predetor, otro software de seguimiento. De hecho, la demostración de detección de rostros es particularmente impresionante.

La documentación de JSFeat es además muy buena, de hecho mucho mejor de lo que se espera normalmente de un proyecto de código abierto. Cabe decir que todo esto es producto de un solo programador, Eugene Zatepyakin, aka inspirit.

Referencias:

JSFeat en GitHub